9 Apr 2016

1
Komentar

Generasi Arduino

Bismillahirrahmanirrahiim.

Pengoprek mana yang nggak kenal dengan Arduino? Dengan dukungan library yang menurut saya luar biasa lengkap, mengesampingkan berbagai kerumitan dalam memprogram mikokontroler. Dengan IDE yang sangat simpel dan example codes yang disertakan. Saking mudahnya kita sudah tidak dipusingkan dengan mendownload datasheet. Cuma perlu tau nama atau nomor pin. Edit, Upload!

Gambar 1. Arduino

Banyak register-register AVR yang kita tidak perlu susah payah untuk memahami. Seperti mengeluarkan sinyal PWM, kita cuma perlu menulis analogWrite(pin). Atau untuk membaca ADC, perintahnya hanya analogRead(pin). Kita tidak pernah tau proses aktivasi register didalamnya. Semua dimudahkan, sangat simple.

Saya sendiri pun kadang mengerjakan beberapa proyek dengan memanfaatkan IDE Arduino. Karena tidak perlu susah payah memahami cara kerja suatu sensor, IC, atau perangkat lainnya. Hanya tinggal menyertakan header, dan panggil fungsinya. Upload, alat bekerja. Saya mengakui betapa mudahnya saat ini untuk memprogram sebuah mikrokontroler.

Kemudahan ini bagi saya semakin lama malah menjadi sebuah keterbatasan. Ketika terbiasa copy-paste dari contoh koding yang sudah ada, kita akan kesulitan atau mungkin lebih tepatnya malas untuk berpikir dan lebih memilih untuk mencari koding yang sudah ada di internet.

Hal ini benar-benar saya rasakan saat mengerjakan project menggunakan led matrix P10 dan sebuah monitoring penggunaan daya di suatu daerah. Dengan permintaan fitur yang macem-macem, saya yakin kalau Atmega328 harusnya sudah cukup. Tapi di akhir jalan saat koding sudah mencapai step finishing, menghubungkan berbagai fungsi yang sudah bekerja (tested). Seketika hardware hang. Jelas saja saya cek ternyata memory-nya hampir penuh (ihat gambar dibawah).

Gambar 2. Proses Compile di Arduino

Sebelumnya mencapai 99%. Kesalahan saya selama ini adalah tidak pernah memperhitungkan byte yang digunakan dalam suatu program. Meskipun fungsi-fungsi telah saya buat seefisien mungkin, tetap tidak menyangka kalau sampai penuh begitu. Saya coba hapus fungsi seperti lcd.print() yang saya gunakan untuk menampilkan debug dan sebagainya. Dan saya hilangkan bagian-bagian yang sekiranya tidak begitu krusial hingga bisa turun hingga 93%.

Banyak fungsi yang masih bisa diminimalisir, tapi apa daya saya terlalu malas untuk memikirkan kerumitan yang akan terjadi kalau tanpa menggunakan library. Ya, saya sadar kalau saya sudah mulai ketergantungan dengan library.

Memprogram embedded system tidak seperti memprogram software. Kita harus sangat pemilih dalam menggunakan tipe data. Dan harus sangat kreatif dalam menyederhanakan fungsi. Tulisan ini tidak dibuat untuk mendiskreditkan pengguna Arduino. Tapi lebih ke basic instinct dalam melakukan pemrograman. Ketika kita sudah biasa melakukan hal-hal sulit, kita akan lebih mudah untuk menyelesaikan masalah-masalah dasar dan siap untuk menghadapi masalah lain yang mungkin lebih berat.

Arduino sangat cocok bagi pemula. Saya sendiri akan menyarankan Arduino bagi orang yang belum terlalu dekat dengan bahasa pemrograman mikrokontroler. Namun untuk saya pribadi, saya lebih senang jika mengetahui lebih dalam apa yang saya buat. Saat saya kuliah, Arduino belum setenar sekarang. Saya masih senang membuat semua dengan DIY, do it yourself. Mengetching PCB sendiri, membuat downloader, sistem minimum, power supply, dan lain sebagainya. Tidak ada modul. Tidak ada Shield.

Gambar 3. Modul/Shield Arduino

Adik angkatan, atau bisa dibilang Generasi setelah saya, lebih memilih untuk menggunakan Arduino, beserta modul-modul atau shield siap pakai. Tidak ada yang salah, hanya lebih mahal. Tapi... Insting dalam mengoprek tetap tak dapat terlatih dengan mencari kemudahan. Harus terbiasa dengan kerumitan dan kesulitan. Agar otak tetap bekerja, berlatih lebih kreatif.

Haha, ini cuma curahan isi kepala saya saja. Pilihan untuk menggunakan atau tidak menggunakan Arduino hanyalah masalah mood atau budget. Bukan salah atau benar karena dalam suatu project yang diutamakan adalah low cost - high impact (jangan lupa tetap harus stabil). Yang penting dari semua ini adalah jangan takut untuk salah, ragu untuk mencoba, malas untuk mencari, dan tetap semangat untuk terus bereksplorasi. Salam!