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.

Burning Bootloader

Salah satu kegiatan sebelum membuat rangkaian dengan chip ATmega adalah mem-burn (burning) bootloader ke chip ATmega. Bootloader ini berguna sehingga kita bisa menggunakan lingkungan pemrograman Arduino. Dengan IDE Arduino kita jadi lebih nyaman dalam memprogram chip dibandingkan jika dengan bahasa C atau Assembly.

Sedang antri nunggu giliran di-burn
Sedang antri nunggu giliran di-burn

Selain itu microcontroller jadi lebih fleksibel karena dukungan library Arduino yang begitu luas dan mudah dipahami. Dan saya pun mem-burn semua stok ATmega328P saya dengan bootloader Arduino. Cara burn bootloader ini bisa dilihat di: From Arduino to a Microcontroller on a Breadboard.

9 buah MCU siap digunakan
9 buah MCU siap digunakan

Setelah di-burn, chip siap digunakan untuk rangkaian embedded microcontroller atau pun hanya sebagai stok cadangan Arduino Uno.

Membuat Jam Digital Sendiri

Dulu saat kelas 2 SMP saya pernah membuat jam digital dengan display seven segment besar. Jaman tahun segitu betapa bangganya saya bisa membuatnya sendiri. Memang sih dulu membeli PCB yang sudah jadi, jadi tinggal beli komponen dan solder-solder komponen saja. Sayangnya dulu kristal yang dibutuhkan tidak ada yang nilainya pas sehingga jam menjadi terlambat beberapa menit setelah beberapa hari. (*wah jam kok tidak akurat?*)

Kini setelah puluhan tahun kemudian saya diminta untuk membuat jam lagi. Kali ini saya mendesainnya dengan microcontroller Atmega328. Jam ini didesain memiliki alarm yang bisa menyalakan suara biasa atau bisa diset untuk menyalakan radio. Selain itu jam ini didesain memiliki sensor suhu. Saya mendesainnya menggunakan LM35, kebetulan ada stoknya. Tadinya mau pakai DHT11 tapi saya pikir tidak perlu sensor kelembaban. Selain menghemat biaya, pemakaian LM35 juga menghemat memori karena tidak perlu library khusus untuk pemrogramannya.

Masih 1/2 selesai
Masih 1/2 selesai

Untuk display saya menggunakan LCD 16×2. Terus terang ini solusi yang paling praktis bagi saya, karena saya sudah beberapa kali menggunakan display ini dan berjalan dengan baik. Lagi pula dengan LCD 16×2 lebih fleksibel tampilannya karena bisa menampilkan banyak karakter/angka.

Mungkin proyek selanjutnya saya akan coba pakai 7-Segment. Kebetulan harga 7-segment kecil tidak terlalu mahal.

Selain sulitnya mendesain rangkaian, tantangan terbesar adalah mendesain tampilan akhir produk. Ini yang paling sulit, bagaimana membuat produk yang enak dipandang dan dipakai. Banyak produk bagus (apa pun produknya) yang gagal di pasaran hanya karena tampilannya tidak menarik dan/atau tidak enak dipakai, padahal fiturnya canggih.

Untuk sementara ini saya memilih untuk memprioritaskan fungsionalitas. Untuk tampilan nanti sajalah saat membuat versi selanjutnya. Hehehe…

Oh iya, dalam desain jam ini masih tersisa beberapa pin, yaitu 2 pin analog dan 4 pin digital (2 di antaranya PWM). Jadi ke depannya jam ini masih bisa dioprek untuk menambahkan fitur, misalnya menambahkan sensor gas/LPG, cahaya, soil moisture (oh bisa jadi ngepot), atau bisa juga ditambahkan relay untuk lampu/AC atau motor untuk membuka/menutup tirai jendela.

Kebetulan saya pakai ATmega328 yang punya memori 32KB, yang berarti 4x lebih besar dari pada ATmega8.

Foto di atas adalah tampilan jam-nya. Masih setengah jadi. Baru bisa menampilkan tanggal dan jam saja. RTC dengan DS1307 didesain embedded. Nanti malam akan dilanjutkan untuk memasang tombol-tombol dan sensor suhu LM35. Sebenarnya saya sangat penasaran untuk segera bisa memasang modul radio (dengan breakout Si4703 dari Sparkfun). Sayangnya pesanan saya belum tiba. Hiks…