Cerita Kehidupan

Jer Basuki Mawa Bea

Transfer Data Antar Mikrokontroler Secara Wireless Menggunakan Fotodioda

Artikel ini merupakan pengembangan dari artikel sebelumnya. Pada artikel ini, saya akan menunjukkan kepada Anda mengenai tata cara komunikasi data antar-mikrokontroler tanpa kabel (wireless). Data tidak dilewatkan kabel, namun dikirim menggunakan media lain, yaitu: gelombang elektromagnetik. Lebih tepatnya adalah sinar infra-merah/IR (Infra-Red). Sebagai pemancar, saya menggunakan LED IR. Sedangkan pada bagian penerima, saya menggunakan fotodioda. Perbedaan rangkaian di atas dengan rangkaian pada artikel sebelumnya hanya pada jalur data, yaitu: koneksi kaki Tx ATTiny2313 dengan kaki Rx ATMega32. Jika pada rangkaian pada artikel sebelumnya hanya menggunakan seutas kabel, maka pada rangkaian di atas menggunakan optocoupler. Untuk jarak yang agak jauh, optocoupler dapat diganti dengan pasangan LED dan fotodioda. Saya memilih sinar IR supaya tidak mendapat gangguan dari cahaya matahari maupun sumber cahaya lainnya.

 

Prinsip Kerja

LED IR akan menyala jika mendapat voltase 5 Volt dan padam jika 0 Volt. Fotodioda berfungsi sebagai saklar cahaya, yaitu: saklar yang aktif jika mendapat cahaya (dalam hal ini IR). Supaya dapat difungsikan sebagai receiver data secara wireless, fotodioda harus dirangkai dengan resistor 10 KOhm. Ketika tidak ada sinar IR yang diterima oleh fotodioda, fotodioda berperan sebagai saklar OFF. Sedangkan ketika ada sinar IR yang diterima oleh fotodioda, fotodioda berperan sebagai saklar ON. Berdasarkan eksperimen, jangkauan LED IR bisa mencapai 2 meter lebih dengan mengganti resistor 1 KOhm menjadi 15 Ohm.

 

Download Link 

Bagi Anda yang menginginkan file simulasi dan program mikrokontroler yang sudah saya sampaikan di artikel ini, silahkan saja mengunduhnya secara gratis di sini.

Transfer Data Karakter Antar Mikrokontroler Menggunakan UART

Jika pada artikel sebelumnya, saya menunjukkan mengenai cara membuat program untuk transfer data antar-mikrokontroler berupa angka 77. Maka pada artikel ini, saya akan menunjukkan caranya untuk data berupa karakter. Karakter adalah sekumpulan angka, huruf dan simbol. Salah satu standar untuk komunikasi data karakter adalah ASCII (American Standard Code for Information Interchange). Misalnya, jika kita mengirimkan karakter dari mikrokontroler ke komputer, maka karakter tersebut dikonversi oleh UART mikrokontroler menjadi bilangan biner sebesar 8 bit. Sesampainya di komputer 8 bit data tersebut dikonversi menjadi karakter kembali. Sebagai contoh, jika kita ingin mengirimkan karakter A keong (@) maka UART mikrokontroler akan mengirimkan data biner 01000000. Menurut standar ASCII, karakter @ bernilai 64 (Desimal). Sehingga jika dikonversi ke biner menggunakan tool ini menjadi 01000000. Jika di komputer proses konversi tersebut sudah di-handle oleh sistem operasi, sehingga kita sebagai user tidak usah pusing-pusing memikirkannya. Tapi, bagaimana jika karakter tersebut ingin dikirimkan ke mikrokontroler, tentu perlu effort ekstra untuk merealisasikannya.

Pada artikel ini, saya ingin mengirimkan karakter 2012@okakzai dari mikrokontroler ke mikrokontroler lain menggunakan UART. Berikut ini adalah hasil simulasi jika saya menggunakan program receiver yang sama dengan artikel sebelumnya:


Silahkan melihat gambar di atas, sebelah kiri adalah data yang dikirim, yaitu: 2012@okakzai dan sebelah kanan adalah data yang diterima. Seperti yang terlihat, data yang berhasil dikirim sempurna adalah yang berupa angka. Sedangkan untuk data simbol (@) dan huruf (okakzai) ditampilkan sebagai angka 0.

Setelah saya lihat pada fitur scanf, ternyata hanya bisa memindai data bertipe integer dan long integer dimana keduanya adalah tipe untuk data angka. Silahkan lihat pada kotak merah di gambar berikut ini:


 

Solusinya Apa?
Setelah ber-googling ria, saya tidak menemukan satupun solusi untuk permasalahan ini. Saya kemudian berinisiatif untuk membuat sebuah eksperimen sederhana yang hasilnya adalah sebagai berikut:

No. Transmitter Receiver
Virtual Terminal scanf printf
1. unsigned intdata;scanf(“%d“,&data); printf(“%d\r\n”,data);
2. unsigned chardata;scanf(“%c“,&data); printf(“%c\r\n”,data);
3. unsigned intdata;scanf(“%c“,&data); printf(“%d\r\n”,data);
4. unsigned intdata;scanf(“%d“,&data); printf(“%d\r\n”,data);
5. unsigned chardata;scanf(“%c“,&data); printf(“%c\r\n”,data);
6. unsigned intdata;scanf(“%c“,&data); printf(“%d\r\n”,data);

 

Analisis

Berdasarkan hasil eksperimen di atas, ada beberapa hal yang harus diperhatikan jika ingin mengirimkan data antar-mikrokontroler, yaitu:

  • Data yang dapat dipindai oleh UART mikrokontroler adalah 3 karakter awal.
  • Jika data yang dipindai didefinisikan sebagai integer, maka data angka akan dipindai secara sempurna, sedangkan data huruf dan simbol ditampilkan sebagai angka 0 dan newline.
  • Jika data yang dipindai didefinisikan sebagai character, maka data angka, huruf dan simbol dipindai secara sempurna, namun setiap karakter yang dipindai dipisahkan oleh newline.

 

Kesimpulan

Supaya hasil pemindaian sempurna, maka data yang dikirimkan harus berupa sekumpulan angka atau sebuah karakter saja.

 

Download Link

Anda dapat mengunduh file simulasi dan program mikrokontroler secara cuma-cuma di sini.

Transfer Data Angka Antar Mikrokontroler Menggunakan UART

UART (Universal Asynchronous Receiver-Transmitter) adalah bagian dari mikrokontroler yang biasanya digunakan untuk berkomunikasi dengan komputer melalui ComPort dengan protokol RS-232. Karena RS-232 bekerja pada level tegangan yang berbeda dengan mikrokontroler dimana mikrokontroler menggunakan level tegangan TTL, maka diperlukan komponen khusus untuk mengkonversinya, yaitu: IC 232. Selain itu, UART dapat juga digunakan untuk berkomunikasi data antar-mikrokontroler secara langsung pada level tegangan TTL.

Rangkaian Elektronik

Pada artikel ini saya akan menjelaskan cara membuat program untuk transfer data antar mikrokontroler menggunakan UART. Mikrokontroler yang saya gunakan, baik pada transmitter maupun receiver adalah dari jenis AVR, yaitu ATTiny2313 dengan frekuensi clock 4 MHz. Berikut ini adalah rangkaian sederhananya:

 


Program Transmitter

Program mikrokontroler saya tulis dengan bahasa C. Proses menulis, mengkompilasi dan mengunduhkan ke mikrokontroler menggunakan bantuan software CodeVisionAVR. Program pada bagian transmitter sangat sederhana, yaitu: mengirim data berupa angka, huruf atau karakter dalam suatu selang waktu. Dalam kasus ini, saya mengirimkan data berupa angka 77 setiap 500 ms.

Pemrograman mikrokontroler menggunakan CodeVisionAVR sangatlah mudah, karena memiliki fitur Generator Kode dengan GUI (Graphical User Interface), sehingga kita tinggal mengklik pilihan yang diinginkan. Pengaturan untuk UART adalah seperti yang ditunjukkan oleh gambar berikut ini:

Program Receiver

Program receiver sama sederhananya dengan program di atas, yaitu: memindai nilai dari kaki Rx yang ada pada PD0 di sepanjang waktu dan menampilkannya pada sebuah LCD (Liquid Crystal Diode). Hasil pemindaiannya berupa data bertipe integer (angka -32.768 hingga 32.767) atau long integer (angka -2.147.483.648 hingga 2.147.483.647). Berikut ini adalah screen-shoot dari skrip program mikrokontroler pada bagian receiver:

Setelah di-compile, ternyata memunculkan pesan error seperti yang ditunjukkan oleh gambar di bawah ini. Perlu diingat bahwa software yang saya gunakan adalah versi free dengan beberapa keterbatasannya. Untuk mendapatkan versi commercial yang memiliki fitur dan kemampuan penuh, kita perlu mengeluarkan uang sebesar 150 Euro. Anda dapat melakukan pembelian di link ini.

 


Seperti yang diberitahukan oleh pesan errror di atas bahwa kode program sudah melampaui batas. Jika Anda enggan untuk membeli license CodeVisionAVR commercial dan setia menggunakan versi yang gratis, maka Anda dapat mengikuti langkah saya berikutnya. Langkah saya selanjutnya adalah memodifikasi rangkaian elektronik dan program mikrokontroler, yaitu: menampilkan hasil pemindaian mikrokontroler receiver ke terminal komputer. Berikut ini adalah screen-shoot-nya:

Setelah di-compile ternyata masih memunculkan pesan error yang sama dengan sebelumnya. Solusi lain adalah dengan mengganti mikrokontroler ATTiny2313 dengan mikrokontroler lain yang memiliki memori program lebih besar. Saya memutuskan untuk menggantinya dengan ATMega32 6 MHz yang nantinya hasil pemindaian ditampilkan ke LCD.

Pengujian

Pengujian dilakukan dengan dua cara, yaitu: melalui simulasi dan pengujian langsung. Simulasi saya lakukan dengan bantuan software Proteus. Berikut ini adalah hasil simulasinya:

 


Bagian receiver dapat juga menggunakan DT-AVR AT90USB162 CPU Module buatan Innovative Electronics. Berikut ini adalah hasil pengujian langsungnya:

Download Link

Bagi Anda yang menginginkan file simulasi Proteus dan program mikrokontroler yang saya jelaskan pada artikel ini, silahkan mengunduhnya secara gratis di sini.

Membuat Alat Pembasmi Jentik Nyamuk

Panasnya udara hari ini membuat saya mandi di siang hari. Sesampai di dalam kamar mandi, saya langsung bete. Soalnya di bak mandi sudah banyak jentik-jentik nyamuk dalam berbagai ukuran, ada yang udah besar banget dan ada yang masih imut-imut. Mana airnya banyak banget lagi, kan sayang kalau dibuang gitu aja. Kalau dibuat nyuci juga ga bagus. Hmm … Kayaknya ada orang rumah yang lupa nguras bak mandi dulu, main isi aja. Saya kemudian terinspirasi untuk mematikan jentik-jentik tersebut dengan GPL (Gak Pake Lama).

Tiba-tiba terbersit di pikiran saya untuk membuat alat kejut listrik untuk mematikan para jentik itu. Alat kejut listrik lebih populer dengan nama stun gun. Setelah beberapa menit ber-googling ria, saya menemukan sebuah website yang penulisnya berhasil membongkar stun-gun komersial dan menggambarkan rangkaian elektroniknya. Bukan itu saja, beliau juga berhasil membuat rangkaian modifikasi yang sederhana dan menurut saya komponennya banyak ditemukan di toko-toko komponen elektronik tingkat kampung. Silahkan mengunjungi website ini.

Navigasi Pos