Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Senin, 17 Juni 2013

Seputar Televisi Digital Teresterial di Indonesia



PERTELEVISIAN DI INDONESIA

Dunia pertelevisian di Indonesia dimulai saat Indonesia menjadi tuan rumah Asian Games 1962, dimana salah satu prasyaratnya adalah adanya coverage televisi. Satu paket dengan stadion GBK di wilayah senayan didirikan juga stasiun pemancar dan studio TVRI. Dan perkembangannya lumayan cepat di eranya karena pasar yang cukup tinggi sehingga menjadikan Indonesia negara ke-3 yang memiliki sistem televisi yg dipancarkan via satelit yaitu melaui SKSD (Sistem Komunikasi Satelit Domestik) - PALAPA yang diluncurkan tahun 1976. Dengan satelit yang dapat mencakup wilayah kepulauan nusantara maka bermunculan stasiun relay di daerah-daerah sehingga jangkauan TVRI menjadi lebih luas.

SKSD - PALAPA


Mengudaranya televisi swasta mengakhiri monopoli TVRI, diawali dengan RCTI (jakarta) dan SCTV (surabaya) yang mengudara diakhir tahun 80-an, dan muncul juga layanan TV via satellite Indovision setelahnya. Jika pembaca mengalami hidup di wlayah pelosok seperti penulis dan mengalami masa tahun 90-an maka peralatan penerima satelit via Parabola merupakan hal yang wajib dimiliki. Dengan generasi satelit Palapa yang berkekuatan tinggi (generasi Palapa C dan sesudahnya) berakibat semakin kecilnya ukuran parabola yang nangkring diatas genteng, mengingat tahun 80-an hanya orang kaya dengan rumah yg luas yg bisa memasang piring/dish parabola dengan actuator  penggerak yg menakutkan suara mesinnya. Jaman ini siaran TV via satelit masih menggunakan system analog yang menyebabkan 1 channel televisi harus menggunakan 1 transponder satelit, sehingga rata-rata tiap satelit kala itu memiliki 12 -24 transponder yg harus dipakai berbagi dengan layanan data dan telepon.


ERA DIGITAL SATELIT

DVB-logo-A8ECD0AE8C-seeklogo.com.gif (200×200)

Standar televisi satelit digital diluncurkan pada pertengahan 90-an dengan tujuan mendigitalkan siaran dan memiliki keuntungan kompresi digital yang akan menghemat bandwith. Sistem multiplexing juga menghemat penggunaan transponder dimana beberapa saluran televisi berada pada frekuensi yg sama dan dibedakan melalui kode digital. Permintaan akan siaran televisi berbayar dengan channel yang semakin banyak juga mendorong konsorsium DVB dan perusahaan elektronika membuat system enkripsi/pengacakan yang secara teori susah dibajak. Begitu juga dengan masalah kualitas dengan munculnya era High-Definition (HDTV) memunculkan standar baru yaitu DVB-S2 yang memiliki teknologi kompresi lebih baik dan tentunya mendukung penyiaran HD dan juga 3D.


DIGITAL TERESTERIAL BROADCAST


800px-DVB-T_Logo.svg.png (800×350)

Bagaimana dengan televisi digital di darat (teresterial) ? Kembali kepada standar televisi analog yang tidak seragam antar negara, amerika utara dengan NTSC, Eropa dengan PAL, perancis dengan SECAM dan masih banyak lagi perbedaan standar antar negara. Hal ini juga berlaku ketika era digital merambah siaran televisi teresterial dimana amerika memiliki ATSC, jepang dengan ISDB-T, eropa dengan DVB T, korea selatan dengan T-DMB dan beberapa standar yg diciptakan memunculkan kebingungan di beberapa negara "pengikut".

Kenapa harus beralih ke digital? Seperti halnya televisi digital via satelit tujuan dasarnya adalah penghematan bandwith penyiaran, multiplexing dan kualitas. Sebagaimana diketahui spektrum frekuensi untuk penyiaran dan telekomunikasi saling tumpang tindih dan semakin sempit saja celah diantaranya. Dengan munculnya kepentingan penggunaan bandwith untuk komunikasi data seluler mau tidak mau televisi harus ikut di kompresi sehingga beberapa channel dapat disumbangkan ke operator seluler. 

Dibeberapa negara yang seirus melakukan migrasi seperti amerika dan australia mungkin hal ini sudah dianggap jadul, karena mereka sudah meninggalkan siaran analog sejak 2000an dan full analog cut-off sekitar tahun 2009. Spektrum bandwith televisi diatas 700Mhz (ch 48 keatas) sudah disumbangkan ke penggunaan teknologi seluler 4G LTE. Bagaimana dengan Indonesia ? 


SIARAN TELEVISI DIGITAL TERESTERIAL DI INDONESIA



Penyiaran digital Indonesia secara resmi sekitar tahun 2010 dengan dibukanya stasiun digital TVRI di jakarta, bandung, batam dan surabaya oleh presiden SBY. Sebelumnya kementrian KOMINFO membuka suatu konsorsium TV digital sekitar tahun 2008 dengan tujuan melakukan trial DVB T di jakarta, bandung dan surabaya. Nasib konsorsium ini tidak jelas dengan mundurnya beberapa broadcaster dan pemancar disurabaya dikabarkan disambar petir kala itu. TVRI sebagai tv pemerintah mengikuti roadmap ASEAN digital tv, didukung penuh oleh pemerintah melakukan penyiaran digital secara resmi tahun 2010. Perjalanan tv digital seakan jalan ditempat padahal roadmap mensyaratkan tahun 2015 semua TV harus beralih ke digital dan 2018 siaran TV analog harus ditiadakan. 

Tahun 2010 penulis sempat tertarik dengan penyiaran digital dan mendapatkan Set Top Box nya melalui forum kaskus, dan hasilnya ketika dicoba disurabaya hanya mendapatkan siaran TVRI.







Pemerintah melalui kementrian kominfo berusaha agar tidak jalan ditempat dengan melelang penyiaran multiplexing televisi digital kepada swasta. Ujung-ujungnya pelelangan ini digugat dan kalah di MA  (kalau masalah bagi-bagi duit ya susah di negeri ini). Gebrakan lainnya adalah dengan mengadaptasi teknologi DVB terbaru yg merupakan standar eropa yaitu DVB-T2. Penulis sempat dibuat kesal karena STB yang dibeli hanya berstandar DVB-T sehingga akan tidak bisa dipakai lagi.  

Menurut wikipedia, siaran tv digital di Indonesia akan mengikuti jadwal migrasi seperti berikut:

Fase I (2008–2010)
Percobaan DTV
Pengosongan layanan primer lainnya (broadband telepon genggam dan RFID)

Fase II (2012–2015)
Siaran TV analog & DTV simulcast

Fase III (2015-2017)
TV analog dinonaktifkan
Pengosongan siaran DTT melalui saluran 22 sampai 48
Pengosongan broadband telepon genggam di gelombang 694 MHz sampai 806 MHz

Fase IV (2018-)
Tidak ada layanan TV analog
100% siaran DTV melalui saluran 22 sampai 48


Wilayah siaran :

  • Kawasan Ekonomi Maju 1: Jakarta, Jawa Barat, Jawa Tengah, dan Jawa Timur mulai Q1 2011 sampai Q2 2015
  • Kawasan Ekonomi Maju 2: Sumatera Utara, Banten, Yogyakarta, Kalimantan Timur, dan Kepulauan Riau mulai Q4 2012 sampai Q1 2016
  • Kawasan Ekonomi Berkembang 3: Aceh, Sumatera Barat, Riau, Jambi, Bengkulu, Sumatera Selatan, Lampung, Bangka Belitung, Bali, Maluku, Sulawesi Selatan, Sulawesi Utara, Kalimantan Barat, dan Kalimantan Tengah mulai Q3 2013 sampai Q4 2016
  • Kawasan Ekonomi Berkembang 4: Nusa Tenggara Barat, Nusa Tenggara Timur, Papua Barat, Maluku Utara, Sulawesi Barat, Sulawesi Tenggara, Sulawesi Tengah, Gorontalo, and Kalimantan Selatan mulai Q1 2014 sampai Q2 2017
  • Kawasan Ekonomi Berkembang 5: Papua mulai Q3 2014 sampai Q4 2017



Pada juni 2013 penulis berhasil mengumpulkan duit receh demi receh untuk membeli STB terbaru berstandar DVB-T2 . Cukup murah dengan harga dikisaran 300 ribu ++ STB DVB-T2 pun didapat dengan beberapa keunggulan diantaranya standar DVBT / T2, kompresi MPEG4/2, HD ready, time shifting, usb storage dan masih banyak lagi. Dan hasil drive test di seputaran surabaya cukup memanjakan pemirsa dengan kualitas gambar yang bagus. Saluran yang berhasil di scan adalah : Ch23 (TVOne & ANTV), Ch25 (Metro TV , BBS, 8 ch LP3M blank), Ch27 (TransTV/7 dan Kompas TV), Ch 35(TVRI3, TVRI_NAS, TVRI_SURABAYA) dan ch41(RCTI, MNCTV, Global TV &  3ch yg duplikasi).






Siaran TV MUX yang cukup niat menurut saya adalah di ch27 yaitu milik transcorp dan kompas, dimana EPG (electronic program guide) nya lumayan lengkap layaknya dimiliki oleh siaran TV satelit berbayar 






Bagaimana kelanjutannya setelah ini? Apakah akan berubah lagi standarnya ? Entahlah...di negeri ini semuanya mungkin berubah kalau sudah berhubungan dengan duit dan proyek ......Only Heaven Knows !!



UPDATE : Untuk panduan, kami telah review beberapa merek STB digital yg sudah ada di pasaran dan anda kini bisa bandingkan sesuai fasilitas dan keunggulannya :


Matrix Apple     - Polytron PDV 600T2   - Venus Cabe Rawit  - Evinix H-1  - Akari ADS-2230


Bagi anda yg berada di lokasi lain di Nusantara dapat juga membaca update perkembangan  migrasi TV digital di  kota-kota besar seluruh Indonesia :

Surabaya  MNC  ,  EMTEK , VIVA )

Malang

Jember 

Kediri

Jombang & Mojokerto

Madiun

Jogja

Semarang

Banjarmasin

Makasar

Medan

Palembang

Perbatasan Malaysia

Share:

Jumat, 07 Juni 2013

Tutorial: POV TEXT Sederhana



Yang mau belajar tentang POV... nih ane share, tapi yang model paling sederhana dulu ya...
Jadi startnya masih ngaco karena ga ada semacam sensor penanda posisi motor
tapi lumayan lah buat start pemula....

Sebelumnya kita perlu tau prinsip POV,sebenernya sama dengan prinsip scanning led matrix, dimana tiap byte dari baris dikeluarkan satu persatu berdasarkan periode waktu. Karena led ini bergerak (dalam hal ini berputar) maka kelembaman mata akan menyebabkan efek terlihatnya teks. Seperti pada video berikut ini :






Video diatas merupakan dasar POV yang cukup sederhana yang tidak memiliki sensor penanda awal posisi motor dan deretan led, sehingga efek yang muncul adalah tulisan yang tidak diam alias ikut muter. Sensor yang mungkin dipakai adalah Opto sensor atau magnetic-hall efect sensor. Sensor ini nantinya akan mentrigger interupt yang akan menandai titik referensi awal dari motor.


0307feat2fig1.gif (410×433)



Hall_sensor_tach.gif (274×204)
Sensor Opto dan Magnetic (Hall Effect)





skematiknya ini ya ...



scriptnya ga jauh beda dengan praktek LOVEHURT kok ...


#define F_CPU 1000000UL

#include <avr/io.h>

#include <util/delay.h>

#include <avr/eeprom.h>

#include <inttypes.h>

#include <avr/interrupt.h>

#include <avr/pgmspace.h> 

#include <string.h>



//database Huruf

const char h_A[5] PROGMEM = {0x7e, 0x11, 0x11, 0x11, 0x7e}; //A

const char h_B[5] PROGMEM = {0x7f, 0x49, 0x49, 0x49, 0x36}; //B

const char h_C[5] PROGMEM = {0x3e, 0x41, 0x41, 0x41, 0x22}; //C

const char h_D[5] PROGMEM = {0x7f, 0x41, 0x41, 0x22, 0x1c}; //D

const char h_E[5] PROGMEM = {0x7f, 0x49, 0x49, 0x49, 0x41}; //E

const char h_F[5] PROGMEM = {0x7f, 0x09, 0x09, 0x09, 0x01}; //F

const char h_G[5] PROGMEM = {0x3e, 0x41, 0x49, 0x49, 0x7a}; //G

const char h_H[5] PROGMEM = {0x7f, 0x08, 0x08, 0x08, 0x7f}; //H

const char h_I[5] PROGMEM = {0x80, 0x41, 0x7f, 0x41, 0x80};//I

const char h_J[5] PROGMEM = {0x20, 0x40, 0x41, 0x3f, 0x01}; //J

const char h_K[5] PROGMEM = {0x7f, 0x08, 0x14, 0x22, 0x41}; //K

const char h_L[5] PROGMEM = {0x7f, 0x40, 0x40, 0x40, 0x40}; //L

const char h_M[5] PROGMEM = {0x7f, 0x02, 0x04, 0x02, 0x7f}; //M

const char h_N[5] PROGMEM = {0x7f, 0x04, 0x08, 0x10, 0x7f}; //N

const char h_O[5] PROGMEM = {0x3e, 0x41, 0x41, 0x41, 0x3e}; //O

const char h_P[5] PROGMEM = {0x7f, 0x11, 0x11, 0x11, 0x0e}; //P

const char h_Q[5] PROGMEM = {0x3e, 0x41, 0x51, 0x21, 0x5e}; //Q

const char h_R[5] PROGMEM = {0x7f, 0x09, 0x19, 0x29, 0x46}; //R

const char h_S[5] PROGMEM = {0x46, 0x49, 0x49, 0x49, 0x31}; //S

const char h_T[5] PROGMEM = {0x01, 0x01, 0x7f, 0x01, 0x01}; //T

const char h_U[5] PROGMEM = {0x3f, 0x40, 0x40, 0x40, 0x3f}; //U

const char h_V[5] PROGMEM = {0x1f, 0x20, 0x40, 0x20, 0x1f}; //V

const char h_W[5] PROGMEM = {0x3f, 0x40, 0x38, 0x40, 0x3f}; //W

const char h_X[5] PROGMEM = {0x63, 0x14, 0x08, 0x14, 0x63}; //X

const char h_Y[5] PROGMEM = {0x07, 0x08, 0x70, 0x08, 0x07}; //Y

const char h_Z[5] PROGMEM = {0x61, 0x51, 0x49, 0x45, 0x43}; //Z

const char h_27[5] PROGMEM = {0x32, 0x49, 0x79, 0x41, 0x3f}; //@

const char h_28[5] PROGMEM = {0x02, 0x01, 0x51, 0x09, 0x06}; //?

const char h_29[5] PROGMEM = {0x80, 0x80, 0x5f, 0x80, 0x80}; //!

const char h_30[5] PROGMEM = {0x3e, 0x51, 0x49, 0x45, 0x3e}; //0

const char h_31[5] PROGMEM = {0x80, 0x42, 0x7f, 0x40, 0x80}; //1

const char h_32[5] PROGMEM = {0x42, 0x61, 0x51, 0x49, 0x46}; //2

const char h_33[5] PROGMEM = {0x41, 0x41, 0x45, 0x4b, 0x31}; //3

const char h_34[5] PROGMEM = {0x18, 0x14, 0x12, 0x7f, 0x10}; //4

const char h_35[5] PROGMEM = {0x27, 0x45, 0x45, 0x45, 0x39}; //5

const char h_36[5] PROGMEM = {0x3c, 0x4a, 0x49, 0x49, 0x31}; //6

const char h_37[5] PROGMEM = {0x01, 0x71, 0x09, 0x05, 0x03}; //7

const char h_38[5] PROGMEM = {0x36, 0x49, 0x49, 0x49, 0x36}; //8

const char h_39[5] PROGMEM = {0x06, 0x49, 0x49, 0x29, 0x1e}; //9

const char h_40[5] PROGMEM = {0x80, 0x60, 0x60, 0x80, 0x80}; //dot

const char h_41[5] PROGMEM = {0x20, 0x10, 0x08, 0x04, 0x02}; //slash

const char h_42[5] PROGMEM = {0x08, 0x08, 0x08, 0x08, 0x08}; //-

const char h_43[5] PROGMEM = {0x80, 0x80, 0x80, 0x80, 0x80}; //blank

const char h_44[5] PROGMEM = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //end



char charnya[5];



void tulis(void)



{



int a;



for(a=0 ; a<5 ;a++)

 { 

   PORTD = charnya[a] ;

   _delay_ms(2);



 }





PORTD = 0x80 ;

_delay_ms(2);

}







int main(void)

{
    DDRD = 0b1111111; // PD0-PD6 output

 while(1)

 {

//ubah susunan huruf sesuai keinginan (asal ga penuh aja memorynya)



     strncpy_P(charnya,h_A,5);

  tulis();



  strncpy_P(charnya,h_H,5);

  tulis();



  strncpy_P(charnya,h_O,5);

  tulis();



         strncpy_P(charnya,h_C,5);

  tulis();



  strncpy_P(charnya,h_O,5);

  tulis();



  strncpy_P(charnya,h_O,5);

  tulis();



  strncpy_P(charnya,h_L,5);

  tulis();



     _delay_ms(500);  //ubah2 sesuai keinginan dan kecepatan motor

 }

 

return 0;

}









lumayan kan ? skematik dalam bentuk eagle dapat didownload disini
Share:

Kamis, 06 Juni 2013

Tutorial: Text Scroll 12 Led Matrix



Ayo kita bikin scroll text dengan led matrix yang panjang. Pada paket belajar microcontroller yang dijual disini terdapat project terakhir yaitu 1 led  matrix yang bisa ditulisi text yang dinamakan project LOVEHURT (pembahasan script disini). Bagaimana dengan led matrix yang lebih panjang ? Wah kaki microcontroller pasti habis tuh ? Tenang saja, kita pernah bahas membuat LED BERJALAN yang panjang dengan cara cascading 4017. Jadi clock dan reset dari 4017 dikendalikan oleh microcontroller, sedangkan outputnya akan melakukan scanning kolom dari led matrix [5 x N(jumlah led matrix)]. Sedangkan untuk 7 bit baris akan diparalel dan data text dikirim sesuai timing scaning kolom.

Skematiknya agak ribet, bisa dilihat disini ya .. (klik untuk memperjelas)




*) Pin CLK dari  semua 4017 dihubungkan ke PE1
*) pin 4017 terakhir (scan ke 61) dapat juga dihubungkan ke Reset 4017 pertama menggunakan diode 1n4148
untuk IC AVR lain silahkan menyesuaikan


Untuk mendrive setiap kolom maka diperlukan IC ULN 2003 sebagai inverter logika "1" dari output scanning 4017 ke Ground dan ada keuntungan lainnya yaitu dengan komponen transistor darlington pada ULN akan menyeragamkan nyala tiap dot dari LED MATRIX walaupun yang menyala hanya 1 buah atau 7 buah dalam tiap scanning. Skematik dibawah merupakan kreasi penulis untuk memudahkan penyusunan ULN2003 ke LED MATRIX agar lebih simple dan tidak memerlukan kabel yang banyak.




Jika rangkaian sudah disusun kemudian downloadkan script program yang sudah saya upload disini. Untuk contoh program dari script yang dulu saya buat untuk rekan dari aceh yang kita gunakan adalah internal memori dan eeprom untuk text dan animasi. Terdapat juga script untuk kalender dimana tombol untuk setting kalender dihubungkan ke pin INT (yang ada resistor pull up) sehingga switch diharuskan menghubungkan  pin ke GND. Contoh ini menggunakan xtal 8MHZ atau internal default 1MHZ juga bisa asal dilakukan penyesuaian pada script.

Pada contoh script yang menggunakan xtal 7.3728 MHz ditujukan untuk kontrol via PC/ komputer melalui program SecureCrt (silahkan cari di google) dan dihubungkan menggunakan serial port atau USB to serial converter jika serial port tidak tersedia. SecureCrt sangatlah memudahkan programing karena ada fasilitas scripting Visual Basic sehingga perintah serial dapat dikirimkan secara otomatis.

Cara Me-Run script pada SecureCrt
Contoh-contoh script VB - SecureCrt ada pada file yg sama yang didownload sebelumnya (script).


Hasilnya yang bisa bikin ngiler kayak gini nih .....





Kepingin ? Bahan-Bahannya dapat dibeli dari saya kok, tapi asal sudah ada dasar microcontrollernya,kalo ndak ya kudu belajar dulu via paket belajar disini ..... Silahkan hubungi kontak saya ya...
Share:

Selasa, 04 Juni 2013

Tutorial: ADC lanjutan - Termometer dengan LM35 dan ATmega8

Kita akan melanjutkan pembahasan dasar ADC sebelumnya, dengan merubah inputan trimpot sebagai voltage divider menjadi inputan dari sensor temperatur yg sangat umum yaitu LM35.




LM35 sangatlah gampang dipakai , hanya dengan memberikan tegangan VCC (kali ini pake 5V) dan ground, maka di pin output akan terjadi perubahan tegangan sebesar 10mV tiap perubahan 1 derajat Celcius.

Skematik dari termometer tidak jauh berbeda dengan project sebelumnya, hanya mengganti trimpot dengan LM35



klik untuk memperbesar



Karena LM35 menggunakan step per derajat sebesar 10mili volt dan mega 8 memiliki resolusi 10 bit dan step per bit adalah 4,9 mili volt, maka secara mudah pembacaan ADC dari LM 35 dapat langsung dirumuskan sebagai 


SUHU = PEMBACAAN ADC / 2

Skrip dibawah ini merupakan cuplikan dari main program, untuk inisialisasi dan lainnya dapat dibaca pada pembahasan dasar adc sebelumnya.

int main(void)
{

uint16_t baca,decimal,pecahan;

char derajat = 0xDF; // karakter derajat
char dum;


lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts("TEST ADC ATMEGA8");


initADC();
  

   while(1)
   {

      baca=ReadADC(0); //baca ADC

      lcd_gotoxy(0,1);
      lcd_puts("Suhu=");

   itoa(baca/2,&dum); // konversi ke suhu
   lcd_puts(&dum);
    
   lcd_putc(',');
      
   itoa((baca%2)*5,&dum); // kasi resolusi 0.5
   lcd_puts(&dum);
    
      lcd_putc(' ');
      lcd_putc(derajat);
   lcd_putc('C');
  

      _delay_ms(100);

   }







return 0;

}


hasilnya seperti berikut :






MEMBUAT PEMBACAAN ADC LEBIH STABIL






Dari video diatas, kita lihat hasil pengukuran terlalu loncat2 ....wahh parah, walaupun mengikuti saran menambah filter LC ke AVCC seperti di datasheet dan C ke Aref



wahhh ...pusing juga belom sukses...akhirnya kita baca lagi datasheet dibagian "ADC NOISE CANCELER"

yang aku lakukan dengan menambah LC filter dinamakan analog noise canceler. Yang belum aku lakukan adalah menambahkan "ADC NOISE REDUCTION" yaitu memberikan posisi "SLEEP" saat sebelum konversi dilakukan ...

dan satu lagi, ketika sleep mode dan konversi, penggunaan output di minimalkan seperti dengan mematikan output ke 7 segment


void initADC()

{

ADMUX=(1<<REFS0);// Aref=AVcc;

ADCSRA|=(1<<ADEN)|(1<<ADIE)|(7<<ADPS0); //interupt aktif

sei();

}



uint16_t ReadADC(uint8_t ch)

{

  

  posisi(0);  //MATIKAN OUTPUT KE 7 SEGMENT



  MCUCR |= _BV(SE);  // Sleep Enable, jadi abis ini processor diturunkan loadnya



 MCUCR |=_BV(SM0);  // mode ADC NOISE REDUTION

  

   //Select ADC Channel ch must be 0-7

   ch=ch&0b00000111;

   ADMUX|=ch;



   //Start Single conversion



   ADCSRA|=(1<<ADSC);



   //Wait for conversion to complete

   while(!(ADCSRA & (1<<ADIF)));



   //Clear ADIF by writing one to it

   ADCSRA|=(1<<ADIF);



   return(ADC);



   MCUCR &= ~_BV(SE) ;  //BANGUN DARI SLEEP

}










dan voilaaa .....pembacaan ADC dari LM 35 menjadi lebih stabil


SELAMAT MENCOBA
Share:

Senin, 03 Juni 2013

Tutorial: Penggunaan ADC dari AVR - Praktek voltmeter ATmega8

Tutorial ini pernah dibahas di forum kaskus yang juga saya asuh dan tidak ada salahnya untuk saya tulis lagi disini (untuk alasan kemudahan search). ADC yang embedded pada microcontroller seri AVR merupakan suatu nilai tambah sehingga banyak yang beralih ke jenis microcontroller ini.

Seri AVR yg memiliki ADC yg ada dipasaran adalah : ATtiny26, Mega8/8535/16/32 etc . Umumnya seri yg umum dipasaran memiliki lebih dari satu port ADC dengan resolusi 10bit

sebelumnya kita bahas dulu ADC....ADC dulunya terpisah dari micro, biasanya jaman tahun 2000 kebawah kita harus menggunakan ADC terpisah (contoh ADC 0808) yg selanjutnya akan diolah oleh kontroller. contoh rangkaiannya seperti ini, TS inget dulu pernah praktikum bikin voltmeter trus dibaca melalui paralel port PC

 

ADC 0808 ini memiliki resolusi 8 bit, jadi hasil pengukuran secara digital 0-254
jika AVR memiliki resolusi 10 bit, jadi biner pengukuran 0-1023.
Jadi resolusi menentukan kepekaan dari pembacaan ADC, semisal jika 8 bit dan range pengukuran 0-5V maka perubahan 1bit = 5/253 = 19,6 mV. Jika ADC 10 bit maka perubahan 1bit = 5/1023 = 4,9 mV

ADC akan meminta untuk diberikan tegangan Vref, yg merupakan tegangan cuplik referensi dari analog input. Seinget saya ADC 0808 membutuhkan tegangan referensi Vmax/2 , jadi jika range tegangan 0-5v maka perlu dikasi Vref 2.5 V.

Untuk AVR dapat dipilih tegangan Vref internal (2.56v), VCC sebagai Vref atau Vref external. Kali ini kita menggunakan mode yg paling sederhana yaitu Vref=Vcc , mode pembacaan sekali dan IC yg dipilih adalah ATMEGA 8. Vref merupakan suatu tegangan yang menunjukkan nilai maximum  dari pembacaan ADC sehingga mewakili resolusinya. Jadi ADC akan mengeluarkan data binner yang mewakili nilai 0 - Vref  dan diperlukan nilai tegangan yang stabil, maka apabila menggunakan baterai atau supply yg dapat naik turun maka diperlukan nilai vref yang stabil dengan regulator tegangan.

Pin ADC pada microcontroller seri AVR memiliki keterbatasan input tegangan yang hanya maximum 6volt, sehingga jika memerlukan pengukuran tegangan (DC) yang lebih tinggi dapat dilakukan pembagian tegangan sederhana menggunakan resistor sehingga tegangan max yg masuk ke ADC tidak melebihi spesifikasi datasheet. Rangkaian buffer atau voltage follower menggunakan op-amp mungkin akan menstabilkan tegangan input sebelum masuk ke pin ADC.




figure792

displaymath1978


Untuk rangkaian pertama, kita akan mencoba mebuat pembacaan tegangan pada TRIMPOT 10K, dimana berfungsi sebagai voltage divider dan dibaca oleh ADC port 0. Tampilannya akan dikirim menuju LCD 2x16 baris

INGAT karena memakai LCD, maka sebaiknya baca terlebih dulu pembahasan menulis di LCD

Siapkan rangkaian berikut (klik buat gambar lebih jelas)





selanjutnya kita bahas satu persatu codingnya :

I. Insialisai 

Code:
#define F_CPU 1000000UL //clock mega8 internal default
#include <string.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include "lcd.h" //library lcd milik pfleury


void initADC()  //inisialisasi mode ADC dari mega8
{
ADMUX=(1<<REFS0);// Aref=AVcc;
ADCSRA=(1<<ADEN)|(7<<ADPS0);
}

II. Pembacaan data ADC

Code:
uint16_t ReadADC(uint8_t ch)
{
   //pemilihan Ch ADC 0-7
   ch=ch&0b00000111;
   ADMUX|=ch;

   //mulai konversi

   ADCSRA|=(1<<ADSC);

   //tunggu sampai konversi selesai
   while(!(ADCSRA & (1<<ADIF)));

   //bersihkan ADIF untuk pembacaan selanjutnya
   ADCSRA|=(1<<ADIF);

  //kembalikan nilai pembacaan ADC
   return(ADC); 
}
III. Script Merubah Binner ke ascii

karena pembacaan ADC berupa binner, maka perlu dirubah menjadi ASCII dan dapat langsung ditampilkan ke LCD. Sebenernya WinAVR string.h memiliki fungsi "itoa" / integer to ascii, tetapi memakan memory yg lebih dan mubazir karena konversinya hanya 1 digit saja

Code:
void reverse(char s[]) 
{ 
   int c, i, j; 
    
   for (i = 0, j = strlen(s)-1; i < j; i++, j--){ 
      c = s[i]; 
      s[i] = s[j]; 
      s[j] = c; 
   } 
} 
void itoa(int n, char s[]) 
{ 
   int i, sign; 
    
   if ((sign = n) < 0) // record sign 
      n = -n;         // make n positive 
   i = 0; 
   do {   // generate digits in reverse order 
      s[i++] = n % 10 + '0'; // get next digit 
   } while ((n /= 10) > 0); // delete it 
   if (sign < 0) 
      s[i++] = '-'; 
   s[i] = '\0'; // add null terminator for string 
   reverse(s); 
}
IV. Program Utama
Code:
int main(void)
{

uint16_t baca,decimal,pecahan;
char dum;

//Inisialisasi LCD (dibahas di tutorial laen)

lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts("TEST ADC ATMEGA8");


initADC(); //panggil inisialisai ADC


   while(1)
   {

      baca=ReadADC(0); // baca ADC di port 0 , putar-putar trimpot

       // mencari nilai decimal dan pecahan 
       // range 0-5V dengan resolusi 10 bit = 1023 step
      // jadi tiap step = 4,9 mili volt 
      //kalibrasikan dengan nilai VCC  yg sebenarnya

   decimal= (baca * 4.9)/1000 ;
   pecahan= ( ((baca * 4.9) - (decimal * 1000) ) /10);
    
      //tampilkan di LCD

      lcd_gotoxy(0,1);
      lcd_puts("Nilai=");

      itoa(decimal,&dum);
   lcd_puts(&dum);
   lcd_putc(',');
      
       if(pecahan <10) lcd_putc('0');

      itoa(pecahan,&dum);
   lcd_puts(&dum);

   lcd_puts(" V    ");
  

      _delay_ms(100); //kasi delay sebentar

   }

return 0;

}

hasil dari skematik & coding diatas dapat dilihat pada gambar berikut :



Share:

Sabtu, 01 Juni 2013

Tutorial : Komunikasi serial pada microcontroller (praktek via attiny 2313)

Microcontroller memiliki metode untuk berkomunikasi dengan perangkat diluarnya. Salah satu metode komunikasi yang standarnya masih banyak dipakai dan umum digunakan adalah komunikasi asynchronous / UART. 



Terminal Serial Tahun 70-an


Apakah itu UART?


UART adalah mode komunikasi serial secara asynchronous, dimana data (bit) dikirim berurutan secara satu persatu bergantian melalui kabel ganda ( twisted pair Tx & Rx)









UART memiliki kecepatan transfer data yg ditentukan oleh pihak pengirim & penerima yg dinamakan BAUDRATE

Pengirim akan mengirimkan data secara serial, dan penerima akan mengolah data BIT (umumnya 8bit) menjadi data 1byte yg digunakan sesuai keperluan


UART memiliki level TTL 5 volt, dan menggunakan 2 buah I/O port (Tx & Rx)



Sebuah UART biasanya berisi komponen-komponen berikut:

  • Generator clock : biasanya kelipatan dari bit rate untuk memungkinkan pengambilan sampel di tengah periode bit.
  • Register Input Output
  • Kontrol kirim (TX) dan terima (RX)
  • Kontrol logika read write
  • Buffer I/O (opsional)
  • Paralel Bus Buffer (opsional)
  • Buffer First In First Out (FIFO) (opsional)



Apakah itu RS232 ?



RS 232 adalah standar signaling dari sebuah komunikasi serial. Pada umumnya PC keluaran sebelum 2010-an akan memiliki sebuah port serial/RS232. Komunikasi RS232 terbatas hanya untuk beberapa meter saja, dan jika membutuhkan jarak lebih maka membutuhkan protokol lain seperti RS485







Tegangan dari RS232 tidak mengikuti level TTL/5V tetapi seperti gambar



Bagaimana Mengubah level UART ke RS232 ?



Untuk mengubahnya diperlukan level converter sejenis MAX-232. Prinsipnya adalah dengan menggunakan charge pump capasitor.








Alternatifnya adalah menggunakan rangkaian sederhana menggunakan transistor yang pernah dibahas juga di sini



klik untuk memperjelas



Ayo kita berlanjut ke Praktek sebenarnya , karena metode belajar yang paling cepat adalah dengan terjun langsung ke permasalahan dilapangan.




(klik buat memperjelas)


PART LIST :


  1. ATTiny2313
  2. Max232
  3. Xtal7.3278 MHz (xtal lain bisa juga dengan catatan akan timbul error rate beberapa % sesuai datasheet)
  4. Led
  5. Push button
  6. Beberapa buah capasitor 10uF/16 volt  dan resistor 10K
  7. DB-9 Female
  8. Kabel Serial (untuk PC jadul) 
  9. USB to RS232 converter untuk Laptop masa kini




SOURCE CODE akan  kita bahas satu persatu

inisialisasi awal


#define F_CPU 7372800UL //frek xtal yang dipake

#include <avr/io.h>

#include <util/delay.h>

#include <inttypes.h>

#include <avr/interrupt.h>

#include <avr/pgmspace.h> 





//rumus penentuan baudrate



#define USART_BAUDRATE 9600  // baudrate 9600 bps

#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) 









//deklarasi menu & tulisan .

// digunakan memori flash(PROGMEM) karena attiny cukup kecil RAM nya



const char menu[] PROGMEM = " 





\r* AVR ATTiny2312 - Rs232 COM  by: ahocool@gmail.com * 

\r Petunjuk: 

\r ** TRANSMIT: Tekan Tombol Keyboard 1 & 2 untuk On/Off LED 1 & 2 

\r ** RECEIVE: Tekan Tombol Switch untuk Menerima Data dari Micro

\r" ;

const char tombol[] PROGMEM ="

\r Tombol Ditekan 

\r" ; 

const char led1on[] PROGMEM ="

\r LED 1 ON 

\r" ; 

const char led1off[] PROGMEM ="

\r LED 1 OFF 

\r" ; 

const char led2on[] PROGMEM ="

\r LED 2 ON 

\r" ; 

const char led2off[] PROGMEM ="

\r LED 2 OFF 

\r" ; 



int led1, led2 ; //variabel untuk led







Inisialisasi USART dari attiny2313


void init_usart(void)

{



cli();



   UCSRB |= (1 << RXEN) | (1 << TXEN);   // kirim & terima

   UCSRC |= (1 << UCSZ0) | (1 << UCSZ1); 

   UBRRL = BAUD_PRESCALE; 

   UBRRH = (BAUD_PRESCALE >> 8);

   UCSRB |= (1 << RXCIE);  //interupt serial usart

sei();

  }






Routine pengiriman text lewat progmem/flash memory


//function untuk mengirim text single



void USART_Tx(unsigned char data)

{   

    

   while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty

    UDR = data; // Send data to the computer



}



//function untuk kirim kalimat



void kirim_text(const char *data)

{

   while (pgm_read_byte(data) != 0x00)

     USART_Tx(pgm_read_byte(data++));

} 








Interupt saat menerima input data serial dari PC


ISR(USART_RX_vect)

{ 

 char databyte;

 

  

 databyte = UDR;  



 

     switch (databyte) // pemilah data yg diterima dari PC       



{



     

    case 0xD : {   // jika yg diterima ENTER (0xD)

             kirim_text(menu) ;

 break; }

    case '1' : {  //jika diterima karakter 1

     

             if(led1 == 0)  // jika kondisi awal 0

             { 

 PORTB ^=(1<<0); //toogle dari kondisi sebelumnya

             kirim_text(led1on) ;//kirim kalimat

 led1=1;

 }

 else

 {

 PORTB ^=(1<<0); //toogle dari kondisi sebelumnya

             kirim_text(led1off) ; //kirim kalimat

 led1=0;

 }

 break; }

    case '2' : {

             if(led2 == 0) // jika kondisi awal 0

             { 

 PORTB ^=(1<<1); //toogle dari kondisi sebelumnya

             kirim_text(led2on) ; //kirim kalimat

 led2=1;

 }

 else

 {

 PORTB ^=(1<<1); //toogle dari kondisi sebelumnya

             kirim_text(led2off) ; //kirim kalimat

 led2=0;

 }

 break; }

      



}  

}  










Interupt saat Tombol ditekan dan mengirim data ke PC


SIGNAL (SIG_INT0) 

{



kirim_text(tombol);  //kirim kalimat bahwa tombol ditekan



}






Program utama / main


int main(void)

{

 



    

 DDRB=0b11;  //B0,B1 = Output ke led



 MCUCR |= (1<<ISC01) | (1<<ISC00) ; //inisialisai interupt 0 rise edge



 GIMSK |= (1<<INT0) ; // tombol ada di INT 0

  



 led1=0;  //kondisi awal led1

 led2=0;  //kondisi awal led2



 init_usart();



 kirim_text(menu) ;



 PORTB=0b00; // matikan LED







while(1) //muter tiada henti

 {

    



 }



return 0;

}











Jika sudah di compile & didownload ke AVR, maka hubungkan output MAX232 ke PORT Serial PC ato port USB-serial Converter. Gunakan Hyperterminal/putty/secureCrt untuk melakukan koneksi ke COM PORT dari serial port/Usb-serial converter dengan setting BAUDRATE 9600bps

Video berikut menampilkan contoh komunikasi serial UART dan RS232 ke PC untuk mengontrol nyala LED dan membaca penekanan tombol.



Share:

Kamis, 30 Mei 2013

SMS Kontrol: Mengirim Perintah ke Micro-AVR Via SMS



Posting ini adalah kelanjutan dari posting terdahulu, kirim SMS via attiny intro disini dan lanjut disini, kali ini kita akan bahas mengenai mode "penerima sms" , dimana micro AVR akan menerima SMS dan melakukan keputusan atau proses berdasarkan parsing teks sms yg dikirim.

Kelemahan mode serial UART yg sebelumnya adalah bisa mengirim(banyak teks) dan menerima hanya 1 teks sebagai triger interupt.

...Bagaimana jika Teks yg ingin diparsing berupa beberapa karakter? semisal "LED1ON" ?..

Ternyata jika kita cek satu persatu per-karakter sms yg diterima maka akan muncul masalah "sms terpotong" atau timing yg kacau....Untuk itu dibutuhkan mode "FIFO" atau "circular buffering" dimana teks yg diterima oleh micro melalui UART/serial akan disimpan dalam buffer memory barulah kemudian akan diolah/parsing untuk keperluan kontrol.

Setelah mencoba beberapa library , yang paling pas adalah pfleury uart library penjelasan disini dan download disini. Silahkan baca terlebih dahulu dan ternyata cukup mudah dan simple.

Selanjutnya kita ingat dulu AT command dari modem yg kita gunakan yaitu Wavecom. Beberapa command yg penting adalah :

AT+IFC=0,0 : Agar mode serial control = none

ATE0 : Agar karakter yg dikirim tidak di echo/kembalikan
AT+CMGF=1 : mode sms "teks"

dan yang baru adalah :

AT+CNMI=2,2 : mode SMS terima langsung tampil teksnya

jika sms diterima dengan mode diatas, maka ketika sms diterima akan muncul seperti ini di modem :


+CMT :"+628155555555","11/10/01,12 :30 :00+00",
pesan sms disini
dan dari teks sms yg diterima kemudian diolah oleh micro (parsing) untuk melakukan keputusan yg diinginkan.

Lanjut kita ke proyek sebenarnya, kali ini kita menggunakan micro ATMEGA 8515 dengan circuit seperti berikut (micro lain menyesuaikan aja):


(klik untuk memperbesar skematik)

*) modem wavecom memiliki mode komunikasi serial yg "cross" jadi jangan lupa untuk melakukan cros TX & RX (pin 2 vs pin 3 dari DB9)

selanjutnya kita akan bahas scriptnya

-Inisialisasi

kita akan menggunakan library uartnya si pleury, dengan mengcopy "uart.h" serta "uart.c" ke folder avr studio dan menambah source uart.c dan include uart.h


#define F_CPU 7372800UL //xtal yg digunakan biar error 0%
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h> 

#include "uart.h"  //pastikan sudah tersedia di folder program

//definisi baudrate RS232

#define UART_BAUD_RATE 9600 


char buffer[10];  //definisi buffer teks
int indexbuf=0;

cara menambahkan uart.c :



- Inisialisasi I/O port dan modem wavecom



int main(void)
{  

   DDRA  |= (1<<PA6)|(1<<PA7); //port yg digunakan PA6 & PA7
    
  unsigned int c;
  uint8_t a;

   //inisialisai UART dari library pfleury

    uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
    sei(); // mode receive interupt

   
    uart_puts_P("ATE0\r");   // biar tidak memenuhi buffer
   _delay_ms(500);
    uart_puts_P("AT+CMGF=1\r"); //mode smsteks
   _delay_ms(500);
    uart_puts_P("AT+CNMI=2,2\r"); // mode langsung baca sms
sebelumnya agar diingat untuk mengedit uart.h dibagian dibawah ini, sesuaikan dengan panjang sms teks yg diterima
Code:
/** Size of the circular receive buffer, must be power of 2 */
#ifndef UART_RX_BUFFER_SIZE
#define UART_RX_BUFFER_SIZE 64
#endif
/** Size of the circular transmit buffer, must be power of 2 */
#ifndef UART_TX_BUFFER_SIZE
#define UART_TX_BUFFER_SIZE 64
#endif

- Parsing SMS

Kita lanjut dengan Parsing SMS yg masuk, dimana akan meng-ON/OFF Led di port A6 & A7. Untuk mepermudah parsing, kita gunakan trigger karakter khusus sehingga dapat menandai SMS yg akan diparsing ( kali ini menggunakan " $ ")


PORTA &= ~_BV(PA6) & ~_BV(PA7);


   while(1)

   {   


        c = uart_getc();
        if ( c & UART_NO_DATA ) // jika ga ada data masuk
        {

        }
        else
        {
 
         if( c == '$') indexbuf=0;  //jika triger $, maka mulai parsing (index aray buffer = 0 )
  
     

   buffer[indexbuf] = c; //masukkan teks sms ke buffer

   indexbuf++; //index array ditambah 
    

        }
    
   // Jika yg diterima sms "$LED1ON", maka Led di PA6 akan hidup
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='1' &&
        buffer[4]=='O' &&  buffer[5]=='N')

       { PORTA |= _BV(PA6); 
    
      for(a=0;a<10;a++) buffer[a]=0; // bersihkan buffer
    
    
    }

   // Jika yg diterima sms "$LED2ON", maka Led di PA7 akan hidup
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='2' &&
        buffer[4]=='O' &&  buffer[5]=='N')

       { PORTA |= _BV(PA7); 
    
      for(a=0;a<10;a++) buffer[a]=0; // bersihkan buffer
    
    
    }

   // Jika yg diterima sms "$LED1OFF", maka Led di PA6 akan mati
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='1' && 
             buffer[5]=='O' &&  buffer[6]=='F' &&  buffer[7]=='F')

       { PORTA &= ~_BV(PA6); 
    
      for(a=0;a<10;a++) buffer[a]=0; // bersihkan buffer
    
    
    }

   // Jika yg diterima sms "$LED2OFF", maka Led di PA7 akan mati
    if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
     buffer[3]=='D' && buffer[4]=='2' && 
             buffer[5]=='O' &&  buffer[6]=='F' &&  buffer[7]=='F')


       { PORTA &= ~_BV(PA7); 
    
      for(a=0;a<10;a++) buffer[a]=0;// bersihkan buffer
    
    
    }
  
 }

   


}


Cara parsing pada script diatas masih menggunakan logika sederhana seperti penjelasan berikut :

1. Format SMS dimulai dengan karakter '$', sehingga parsing akan menunggu karakter ini muncul lalu kemudian diarahkan menuju posisi array buffer 0
2. Tiap array buffer kemudian di cek satu per satu sampai menemukan format kata sesuai keinginan, seperti contoh yg digunakan berupa kata $LED1ON :

  if( buffer[0]=='$' &&  buffer[1]=='L' &&buffer[2]=='E' &&
      buffer[3]=='D' && buffer[4]=='1' &&
      buffer[4]=='O' &&  buffer[5]=='N')


       { PORTA |= _BV(PA6); 
                  }

3. Diakhiri dengan pembersihan isi buffer agar bisa digunakan selanjutnya.



Kontrol micro via sms ini memiliki banyak kemungkinan aplikasi sesuai kreativitas diantaranya :

1. Menghidupkan Lampu otomatis via SMS
2. Membaca data suhu atau kondisi on/off setelah sms dikirim (tanpa harus menerima report terus menerus seperti contoh sebelumnya)
3. Trigger BO** .....duhhh jangan yaaa....INGAT ! Pisau didapur bisa bikin masakan enak, tapi ditangan orang tidak bertanggung jawab maka pisau dapur bisa menjadi alat pembunuh...


SELAMAT MENCOBA
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (59) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (28) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika