Stock Arduino Nano v3.0

Semenjak pertama kali membeli Arduino Nano, saya banyak bereksperimen dan mengetest rangkaian dengan Arduino Nano. Bentuknya yang mungil dengan bentuk DIP (dual in-line package) membuatnya gampang ditancap di breadboard. Dibandingkan dengan Arduino Uno/Leonardo, mungkin ukurannya cuma seperempatnya. Kemungilannya ini membuatnya mudah dibawa kemana-mana. Kita juga dapat membuat proyek dengan ukuran yang lebih kecil jika dibandingkan dengan menggunakan Arduino Uno/Leonardo.

Akhirnya paket datang setelah menanti lama
Akhirnya paket datang setelah menanti lama

Selain sebagai sarana experimen, saya menggunakannya juga sebagai alat untuk burn bootloader di chip-chip microcontroller seperti ATMega8 dan ATMega328, atau sebagai programmer bagi ATTiny85 dan ATtiny84 yang sering saya pakai sebagai otak bagi proyek embedded Arduino. Pendek kata, saya dapat mengandalkannya untuk berbagai keperluan. Saya sangat puas dengan Arduino Nano. Mungil tapi powerfull.

Si Mungil
Si Mungil

Hingga akhirnya saya memutuskan untuk membeli spare Arduino Nano. Selain sebagai stock, mungkin kelak dibutuhkan untuk keperluan proyek.

Kecil-kecil cabe rawit
Kecil-kecil cabe rawit

Sebenarnya pengen juga sih nyobain Arduino Due yang berbasis processor ARM. Selain lebih powerfull prosesornya, Due lebih kaya pin I/O. Asyiknya Due bisa menggunakan bahasa pemrograman Arduino. Jadi tidak perlu belajar lagi. (Ayo nabung…)

Iklan

Say It with Light! (Release 1)

Setelah prototyping dengan Attiny85, mendesain ulang dengan Atmel ATmega8, tibalah saatnya aku membuat versi rilisnya. Untuk PCB aku memesan dari pihak luar supaya lebih rapi. Dan kemarin dimulailah produksi pertama “Say It with Light!” (SIWL!)

Perakitan "Say It with Light!"
Perakitan “Say It with Light!”

Pada produksi pertama ini aku terbalik saat memasang soket. Baru sadar setelah mau menancapkan MCU ATmega8. Untunglah cuma soket yang terbalik, karena tidak berpengaruh apa-apa kecuali penanda yang terbalik, hehehe… Baiklah, perakitan ke-2 dan seterusnya tentu akan lebih baik dan rapi.

Up and running
Up and running

Sedikit ada penyesuaian di code dari versi sebelumnya. Karena koneksi pin berbeda. Tapi prinsip kerjanya sama saja. Semuanya berjalan dengan baik.

Read More »

Upload Program ke MCU dengan Bantuan Test Hook/Probe Terminal

Selama ini saya mendesain embedded sistem tanpa menambahkan interface untuk upload program. Tidak adanya interface ini karena saya tidak memiliki piranti programmer khusus untuk MCU. Di samping saya tidak ingin menambah ribet desain PCB.

Selama ini saya hanya menggunakan breadboard atau board programmer jadi-jadian. Cara ini tentu lebih murah dibandingkan membeli piranti programer khusus. Saya cukup menggunakan Arduino Uno atau Nano andalan saya untuk upload program via breadboard.

Test hook - Probe terminal
Test hook – Probe terminal

Tapi cara ini jadi merepotkan saat saya harus merevisi program sedangkan microcontroller sudah terpasang di board. Saya mencoba menggunakan kabel jumper biasa yang dipaksakan menancap di socket yang telah terisi IC-nya, tapi tidak bisa. Jalan satu-satunya adalah mencabut chip dari soket dan mengkonfigurasikannya di breadboard. Setelah upload program, chip dikembalikan ke board untuk uji coba. Kalau revisinya cuma sekali sih tidak mengapa. Tapi kalau sering? Ribet bolak-balik bongkar-pasang jungkir-balik! Apalagi bongkar pasang IC di socket beresiko merusak kaki IC itu sendiri.

Upload program ke Jamdario
Upload program ke Jamdario

Jadi saya pun mencari akal. Syukurlah ketemu akalnya, hehehe. Saya pun membeli hook atau probe terminal yang biasa digunakan untuk mengetest IC atau komponen yang sudah terpasang di board. Probe ini digunakan untuk menjepit pin IC untuk berkomunikasi serial dengan Arduino Uno yang dikonfigurasi sebagai programmer. Tidak lupa probe juga digunakan untuk menyalurkan power ke board. Hasilnya baik. Upload program berhasil dengan baik. Saya tidak perlu membongkar-pasang IC lagi. Horeee…

Mari kita lihat lebih dekat
Mari kita lihat lebih dekat

Sekarang tibalah saatnya fokus di ngoprek code untuk Jamdario.

Say It with Light! (Revision 1)

Ini adalah catatan saya dalam mendesain “Say It with Light!”. Setelah mempertimbangkan beberapa hal untuk memenuhi prinsip murah, meriah dan mudah, maka saya pun me-redesain rangkaian dengan menggunakan ATmega8 dari Atmel. Saya sangat berterima kasih kepada Atmel yang telah mengirimkan sample dari beberapa microcontrollernya.

Tampilan prototype "Say it with Light!" revisi 1
Tampilan prototype “Say it with Light!” revisi 1

Menggunakan chip ATmega8 justru mempermudah saya dalam mendesain “Say It with Light!” karena ATmega8 telah menyediakan 20 pin bebas setelah dikurangi beberapa pin yang digunakan untuk kebutuhan internal Arduino. Sedangkan “Say It with Light!” cuma butuh 17 pin I/O dengan perincian 16 pin untuk pengaturan display dot matrix dan 1 pin untuk tombol pengubah tampilan.

Cukup menggunakan 1 chip
Cukup menggunakan 1 chip

Ke-16 pin ini dibutuhkan untuk mengendalikan display dot matrix secara langsung. Pendekatan ini memang tidak efisien karena sebenarnya kita cukup menggunakan 3 pin pengendali jika menggunakan 2 buah Shift Register seperti ketika mendesain dengan ATtiny85. Kelemahan lain adalah ketika memprogramnya karena butuh pengelolaan pin yang lebih banyak.

Rangkaian rev 1 lengkap dengan komponen pasif pendukung
Rangkaian rev 1 lengkap dengan komponen pasif pendukung

Di balik ketidakefisienan ini, teknik pengendalian langsung justru punya kelebihan, yaitu proses penampilan jadi lebih cepat karena tidak perlu diproses chip external. Tampilan jadi tampak lebih terang dan stabil. Bebas flicker walau pun saya tambah perintah delayMicroseconds. Pada code ATtiny85 saya tidak menambahkan delay tapi tampilan tetap flicker.

Dengan ATmega8 lebih stabil
Dengan ATmega8 lebih stabil

Saya mendesain ATmega8 untuk bekerja dengan clock external memanfaatkan crystal 16 MHz. Kecepatan proses jadi lebih cepat 16× (atau lebih?) dari pada desain dgn ATtiny85. Sebenarnya ATtiny85 bisa bekerja sampai 20 MHz tapi itu sama saja memboroskan pin I/O-nya untuk dipakai dengan crystal external. Jadi desain tempo hari cuma mengandalkan clock internal ATtiny85 yang cuma 1 MHz.

Dari segi memori ternyata antara ATmega8 dan ATtiny85 sama-sama punya 8 KB ISP (in-system self-programmable flash program memory). Wow, ATtiny85 memang hebat ya? Jadi dalam hal kapasitas program sejajar. Hanya saja ada kelemahan dalam pemrograman ATtiny85 terutama jika kita menggunakan IDE Arduino, yaitu karena ATtiny85 tidak bisa mengakomodasi array 2 dimensi. Jadi penyimpanan text yang akan ditampilkan disimpan dalam array linear. Sedangkan jika menggunakan ATmega8 hal ini tidak masalah (tentu setelah burning bootloader Arduino).

Dalam pemrograman “Say It with Light!” Rev 1 (dgn ATmega8) ini saya menambahkan beberapa pesan yang bisa ditampilkan, misalnya icon smile, animasi panah (ceritanya untuk nembak hati), Y/N (untuk menjawab), dan beberapa icon lain yang sedang saya coba apakah bisa ditampilkan dengan baik atau tidak. Saat ini code ukurannya cuma 2,5 KB dari sekitar 7,2 KB yg tersedia. Berarti masih punya ruang untuk pesan-pesan lain yang ingin ditampilkan.

Saat ini saya sedang mendesain PCB untuk membuat permanen prototype “Say It with Light!” revisi 1. Kali ini desain PCB tidak terpaku dengan sambungan urut karena tidak menggunakan Shift Register tapi langsung dari pin ATmega8. Ini berarti desain PCB bisa diatur sambungan antara ATmega8 dengan pin display dot matrix berdasarkan kedekatan pin. Jadi bisa didesain jalur yang terdekat dan terbaik. Sisanya tinggal mapping di code. Hasilnya desain saya kali ini tidak ada jumper-nya. Horeee…

Sementara ini dulu catatan desain prototype “Say It with Light!” revisi 1. Jika ada masukan, silakan dituangkan dalam box komentar di bawah.

Salam ngoprek

Say It with Light! (Redesign)

Ketika mendesain “Say It with Light!” pertimbangan saya adalah murah, meriah dan mudah. Namun ketika saya mau membuat PCB, saya baru sadar kalau ternyata “Say It with Light!” tidak murah dan mudah.

Tidak murah lantaran ternyata saya tidak menjumpai penjual ATtiny85 di pasaran lokal. MCU ini termasuk murah, tapi ketika tidak ada yang jual, maka kita perlu beli dari luar yang sudah pasti jadi mahal. Apalagi kalau belinya partai kecil, bisa-bisa mahalan di ongkir.

Dengan ATmega8 lebih stabil
Dengan ATmega8 lebih stabil

Selain masalah ketersediaan ATtiny85, saya baru sadar kalau saya menggunakan komponen tambahan yang mungkin menjadi kesulitan tersendiri bagi pemula atau ABG yang baru belajar elektronika, yaitu karena saya menggunakan 2 buah Shift Register. Dua buah Shift Register ini digunakan untuk mengatasi keterbatasan I/O di ATTiny85. Dan saya baru sadar kalau ini bisa jadi penghalang tersendiri. Jadinya rangkaian “Say It with Light!” menjadi tidak mudah lagi.

Kemudian seharian kemarin saya mencari alternatif pengganti ATtiny85 yang sekiranya tersedia di pasaran lokal dengan harga terjangkau. Saya menemukan chip alternatif yang masih satu kerabat dengan ATtiny85, yaitu ATtiny2313. ATtiny2313 ini punya 20 pin dan tesedia 18 I/O yang programmable (dikurangi 1 pin untuk reset jadi 17 I/O).

Bisa jadi alternatif yang bagus karena saya bisa mendesain rangkaian jadi sederhana. Dengannya saya bisa menggunakan 16 I/O untuk pengaturan display dot matrix secara langsung tanpa perlu shift register. Tersisa 1 I/O untuk tombol. Benar-benar pas.

Namun ternyata tidak murah! Sebuah chip ATTiny2313 (soket PDIP) di pasaran lokal berharga Rp 27.500 di harga terendah. Banyak penjual lokal lain menjual di atas itu. Harga segitu hanya untuk MCU bisa jadi kendala sendiri bagi remaja yang masih dijatah uang jajannya.

Saya langsung teringat ATmega8 yang harga di pasaran lokal lebih murah dengan harga termurah yang tersedia di pasaran lokal adalah Rp 20.000 untuk soket PDIP. Sedangkan harga termahal yang saya temukan Rp 25.000. Saya heran, kok ATmega8 lebih murah dari ATtiny2313 ya? Mungkin karena Attiny2313 bisa ngebut sampai 20 MHz? Ah kapan-kapan saja deh komparasinya.

Jadi pilihan saya pun jatuh ke ATmega8. Pilihan ini menjadikan proses desain lebih mudah karena saya telah familiar dengan ATmega8. Tantangan ngoprek chip keluarga ATmega adalah karena kita harus burn bootloader. Bukan hal mutlak sebenarnya, tapi kalau ini dilakukan, pemrograman dengan IDE Arduino menjadi lebih fleksibel.

ATmega8 memiliki 23 programmable I/O yang setelah dikurangi keperluan internal Arduino jadi hanya punya 20 pin bebas. Ini sudah lebih dari cukup. Sirkuit “Say It with Light!” tanpa Shift Register cuma butuh 16 pin I/O.

Dan akhirnya prototype “Say It with Light!” dengan ATmega8 berhasil saya buat. Kali ini benar-benar memenuhi prinsip murah, meriah dan mudah untuk situasi, kondisi dan lokasi di Indonesia.

Tapi di luar itu, saya juga sedikit bangga dengan desain “Say It with Light!” versi ATtiny85 karena saya telah membuktikan bahwa konsep murah, meriah dan mudah sebenarnya bisa dilakukan dengan ATtiny85 jika di pasaran lokal ada. Karena harga ATtiny85 sebenarnya cuma di bawah Rp 10.000. Sedangkan 2 buah shift register cuma Rp. 5.000. POC (proof of concept) berhasil.

Masih Bersemangat Ngoprek

Ketika terjadi hiruk pikuk saat launching Arduino Due saya hanya bisa berdecak kagum. Maklum, teknologi & fitur yang diusungnya jauh lebih powerful dibanding board Arduino sebelumnya. Arduino Due termasuk sesuatu yang baru yang sedikit keluar dari jalur Arduino sebelumnya karena Due menggunakan prosesor dengan arsitektur ARM sedangkan sebelumnya menggunakan AVR.

Dengan digunakannya arsitektur ARM, maka Arduino Due jadi head-to-head dengan Raspberry Pi yang telah lebih dulu mengguncang dunia sebagai PC paling murah sedunia. Walau pun sebenarnya keduanya jelas memiliki target pengguna yang berbeda, dimana Arduino bermain di dunia microcontroller sedangkan Raspberry Pi bermain di microcomputer. Pada kenyataannya keduanya bisa digunakan untuk controller dan computer dengan trik khusus.

Menurut saya langkah Arduino Due ini sudah baik walau pun keluar dari pakem Arduino sebelumnya karena transisi AVR ke ARM ini difasilitasi dengan baik oleh tim Arduino (salut!!!). Karena bisa jadi dunia microcontroller memang membutuhkan tenaga dan kemampuan yang lebih besar dari yang telah ada sekarang ini. Contohnya adalah saat Google mengeluarkan ADK, Sparkfun dengan IOIO, atau Arduino dengan ADK. Semuanya menjadikan MCU (microcontroller unit) lebih mudah diakses dengan piranti lain, khususnya piranti dengan sistem operasi Android.

Tidak dipungkiri kalau itu semua membutuhkan tenaga yang besar yang lebih dari pada yang bisa didapat dari MCU model AVR. Dan ARM adalah salah satu solusi termurah. Bisa saja kita menggunakan prosesor x86 dari Intel atau AMD, tetapi itu seperti membasmi nyamuk dengan bom.

Di tengah semakin cepatnya perkembangan teknologi saat ini, dengan segenap kerendahan hati, saya sedang merayap mempelajari MCU dengan basis arsitektur AVR. Dimulai dengan keluarga ATtiny yang sederhana sampai ke ATmega yang menengah. Sedangkan board Raspberry Pi masih tergeletak tak terurus menunggu dioprek.

Terus terang saya merasa seakan sedang mengejar ketertinggalan saya. Dan saya agak menyesal karena saat kuliah elektro dulu sering bolos dan tidak memperhatikan atau mempelajari materi kuliah dengan sungguh-sungguh. Di lain pihak, jaman saya kuliah memang masih serba sulit, baik dari segi kurangnya literatur, kurangnya komunitas elektronika, terbatasnya koneksi internet/komunikasi, dan yang pasti karena kurangnya dana untuk membiayai eksperimen.

Syukurlah saat ini semua kendala itu sudah lenyap. Dan saya bersyukur masih bisa menikmati belajar itu semua dengan semangat yang masih menyala. Kendala saya saat ini hanyalah waktu, usia dan menurunnya kemampuan (*hiks*). Namun itu semua tetap tidak mengalahkan semangat saya.

Ini curhatku, mana curhatmu?

Meneruskan Rangkaian Jamdario

Ini adalah perjalanan panjang saya dalam mendesain dan membuat rangkaian Jamdario (Jam dan Radio). Sudah sebulan ini proses terus berlangsung dari desain sampai pembuatan prototype. Panjangnya proses ini karena saya harus menunggu beberapa bagian, yang pertama adalah pembelian modul radio dari Sparkfun, pemesanan PCB dan googling banyak hal seperti LDO (Low Drop Out Voltage), contoh pemrograman radio, dll.

Antara PCB pesanan dengan buatan sendiri
Antara PCB pesanan dengan buatan sendiri

Semuanya adalah proses yang sangat menarik dan menantang. Menuangkan desain ke prototype juga suatu tantangan yang berat. Karena selama ini saya membuat PCB sendiri yang ternyata tidak rapi (*hiks*). Untuk sebuah prototype bolehlah, nanti kalau mau produksi barulah dibuat yang baik. Untuk proyek Jamdario ini saya memesan PCB ke pihak luar. Hasilnya bagus & presisi. Nyoldernya juga enak. Gambar di atas menunjukkan PCB pesanan disandingkan PCB buatan saya sendiri yang tidak rapi, hehehe…

Perakitan prototype di PCB baru
Perakitan prototype di PCB baru

Perakitan di PCB baru juga lebih nyaman karena presisi. Pelapisan perak di jalur rangkaian juga memudahkan penyolderan. Setelah semua chip ditancap, Jamdario langsung menyala dengan baik.

Selanjutnya ngoprek modul radio Si4703
Selanjutnya ngoprek modul radio Si4703

Selanjutnya adalah ngoprek modul radio. Sebelumnya sudah nge-test modul ini dengan code dari Sparkfun dan telah berjalan baik. Tinggal mengintegrasikannya ke Jamdario.

LDO ke 3.3V
LDO ke 3.3V

Untuk mengintegrasikan modul radio ini ada beberapa hal yang perlu dilakukan, pertama adalah mengintegrasikan jalur power supply. Ternyata modul ini bekerja dengan tegangan 3.3V, sedangkan Jamdario seperti layaknya MCU Arduino bekerja dengan tegangan 5 Volt. Diperlukan LDO (low drop out voltage) untuk menurunkan tegangan dari 5 V ke 3.3V. Saya menggunakan LM1117-3.3V seperti yang direkomendasikan banyak desainer elektronika.

Integrasi berikutnya adalah jalur komunikasi dengan MCU (microcontroller unit). Komunikasi dilakukan via komunikasi I2C (2-wire). Ternyata butuh pin 1 lagi untuk reset dan saya belum mengakomodasinya di PCB. Terpaksa dibuat jalur pakai kabel, hehehe…

Integrasi selanjutnya tentu secara software sehingga bisa memanfaatkan tombol-tombol di Jamdario untuk pencarian gelombang dan pengaturan volume. Sangat menantang kan?

Sayangnya desain PCB saya tidak presisi
Sayangnya desain PCB saya tidak presisi

Sayangnya desain PCB saya tidak presisi dalam hal peletakan lubang baut. Tadinya saya mendesain 4 buah lubang untuk spacer yang berguna untuk memegang modul LCD 16×2. Ternyata sedikit bergeser sehingga tidak pas dengan lubang baut di LCD. Mestinya saya mencetak desainnya dulu dan kemudian mencocokkan lubangnya dengan LCD. Masalah ini bisa diatasi dengan membuat board khusus pemegang LCD yang berfungsi pula untuk peletakan tombol-tombol.

Oprekable
Oprekable

Desain prototype Jamdario ini sedikit unik dengan meletakkan LCD mengambang di atas beberapa komponen. Fungsinya tentu saja untuk memperkecil PCB. Untuk mengopreknya tentu diperlukan cara khusus, yaitu dengan memindahkan LCD ke breadboard dan membuat jumper untuk memfungsikannya. Setelah itu barulah kita bisa mengoprek Jamdario, khususnya untuk ngoprek software-nya.

Demikian progress prototype Jamdario yang ternyata memakan waktu lama. Dalam seminggu ke depan saya akan ngoprek software-nya.