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!

28 Nov 2014

0
Komentar

Programming AVR dengan Geany


Bismillahirrahmaanirrahiim.

Sebelumnya, saya telah membahas mengenai pemrograman mikrokontroler AVR di linux dengan menggunakan AVRDude. AVRDude adalah barisan perintah yang digunakan untuk dapat mengirim hasil program (.hex) ke dalam mikrokontroler AVR.  Kemudian pada posting kali ini, kita akan mencoba menggunakan Text Editor sebagai pengganti IDE berbayar seperti CodeVision dan semacamnya. Tujuannya adalah agar tidak bergantung pada IDE tertentu, dan memahami bahwa untuk melakukan programming yang dibutuhkan hanyalah teks editor biasa dan sebuah compiler.

Text Editor apapun bisa digunakan, Notepad sekalipun. Tapi disini, saya menggunakan Geany. Selain fungsinya sebagai text editor, Geany memiliki banyak fitur plugin yang bisa digunakan untuk memudahkan development program. Geany dapat mensuport berbagai bahasa pemrograman seperti C, C++, C#, Java, PHP, Python, dan lain sebagainya.

Untuk dapat memprogram Mikrokontroler AVR dengan Geany, caranya sangat mudah. Pastikan AVRDude telah terinstall (bisa dilihat di post saya sebelumnya mengenai pemrograman AVR di Linux dengan AVRDude). Untuk install Geany, silahkan download di link berikut ini : 
(Untuk Pengguna Ubuntu dapat langsung mencarinya di Software Center)
Berikut ini adalah screenshot tampilan dari Geany: 

Setting Build Command
Step berikutnya, untuk memudahkan kita dalam proses compile dan build. kita dapat mensetting Build Command. Berikut ini langkah-langkahnya:


Selanjutnya, ketikkan perintah seperti pada contoh dibawah ini (terdapat di post sebelumnya). Klik kolom pertama untuk merubah nama perintah buildnya.
Build: avr-gcc -w -Os -DF_CPU=1000000UL -mmcu=atmega8 -c -o %e.o %e.c
Link: avr-gcc -w -mmcu=atmega8 %e.o -o %e
Compile: avr-objcopy -O ihex -R .eeprom %e %e.hex


Pada perintah diatas, beberapa parameternya dapat dirubah sesuai dengan kebutuhan. Misal -mmcu, adalah tipe mikrokontroler AVR yang akan diprogram. Kemudian DF_CPU, yaitu kecepatan clock yang sedang digunakan mikrokontroler AVR tersebut.
Kemudian yang terakhir adalah perintah upload hex, pada baris Execute Command, isikan perintah berikut ini:
sudo avrdude -F -V -c usbasp -p ATmega8 -P usb -U flash:w:%e.hex

Parameter yang dapat dirubah adalah usbasp, dimana dapat diganti dengan programmer AVR yang lain, kemudian ATmega8, dapat diganti dengan tipe mikrokontroler AVR yang sedang digunakan. Untuk syntax %e, digunakan sebagai pengganti nama file. Sehingga perintah build akan otomatis mengeksekusi file yang sedang aktif tanpa perlu merubah lagi nama filenya pada Build Command.

Testing
Untuk mencoba apakah setting telah dilakukan dengan benar, maka kita bisa mencobanya langsung dengan menggunakan program sederhana berikut ini:

#include <avr/io.h>
#include <avr/delay.h>
int main(void)
{
     DDRB |= (1 << PB0) | (1 << PB1);
     while(1)
     {
            PORTB |= (1 << PB0);
            _delay_ms(500);
            PORTB = ~(1 << PB0);
            _delay_ms(500);
        }
}

Selanjutnya, buat rangkaian seperti pada gambar berikut ini:


Kemudian kita coba perintah build yang sudah kita buat sebelumnya, di main toolbar klik (Atau bisa juga menggunakan Hotkeys F8 atau F9): 1. Build > Build 2. Build > Link 3. Build > Compile Lalu jika tidak ada pesan error, kita bisa langsung menguploadnya ke mikrokontroler AVR. Jangan lupa pastikan downloader sudah terhubung dengan PC dan mikrokontroler. Klik perintah Excecute command yang sudah kita buat sebelumnya (Atau tekan F5). Akan muncul dialog terminal seperti berikut ini:


Jika tidak ada pesan Error dan LED kedap-kedip tiap setengah detik (_delay_ms(500);), maka proses uploading program berhasil.

Penutup
Sekian tutorial menggunakan text editor Geany untuk memprogram AVR. Selamat mencoba.

31 Okt 2014

0
Komentar

Mengenal AVRDude

Bismillaahirrahmaanirrahiim.

Curhat sedikit: Saya mulai mengenal GNU/Linux sejak SMK. Berawal dari saran seorang sahabat saya, GNU/Linux pertama saya adalah OpenSUSE. Seiring waktu, ketertarikan mengenai GNU/Linux semakin besar. Sampai sekarang, saya sudah menggunakan GNU/Linux lebih dari 3 tahun.

Kebetulan saat itu saya sedang asik-asiknya mempelajari mikrokontroler AVR. Dan sudah terlanjur terbiasa dengan CodeVision. Singkatnya, saya mencoba menjalankan CodeVision di GNU/Linux dengan bantuan Wine.

Saya dapat membuat program dan melakukan compile dengan Codevision + Wine. Hanya saja karena keterbatasan pemahaman dan pengalaman, saya tidak tahu bagaimana cara burning file hasil compile (*.hex) ke mikrokontroler AVR di GNU/Linux. Setelah mencoba mempelajari dari berbagai macam sumber, saya mengenal AVRDude.

screenshot-codevision-linux
Running Codevision dengan Wine
Apa itu AVRDude?
Secara sederhana adalah software/tool untuk memprogram memory Flash maupun EEPROM pada Mikrokontroler AVR. Juga dapat digunakan untuk program Fuse dan Lock Bits yang biasa digunakan untuk clock setting.

Jadi untuk melakukan flashing file *.hex ke mikrokontroler AVR, bisa menggunakan AVRDude.
Langkah-langkahnya akan dijabarkan di poin selanjutnya.

1. Install AVRDUDE
Dibawah ini adalah perintah untuk melakukan instalasi AVRDude di GNU/Linux. 
sudo apt-get install gcc-avr avr-libc uisp avrdude

Untuk pengguna Windows, bisa melakukan instalasi dengan download executable filenya disini:

Dan untuk memastikan bahwa AVRDude telah terinstall, ketikkan perintah "avrdude" di terminal/cmd. Harusnya akan tampil pesan seperti berikut ini :

Avrdude telah terinstall
2. Cara Burn/Upload File .hex
Disini saya menggunakan USBASP sebagai downloader, dan ATmega8 sebagai target. File hasil kompilasi saya namakan file.hex. Untuk mengupload hasil program ke AVR, dapat menggunakan perintah dibawah :
sudo avrdude -F -V -c usbasp -p ATmega8 -P usb -U flash:w:file.hex

Proses upload file hex ke MCU sukses

Penutup
Sekian post singkat kali ini. Apabila ada kesulitan, silahkan tinggalkan pesan di kolom komentar.
Semoga kita selalu diberi kesehatan oleh Allah agar dapat terus menuntut ilmu dan mengamalkannya.

</zep>

26 Jan 2013

10
Komentar

Masih Inget Harvest Moon ?

download ost harvest moon

Masih ingat Harvest Moon: Back To Nature? Masa kecil nggak lengkap rasanya kalo belum main game ini, haha. Game RPG yang menceritakan tentang seorang yang ditakdirkan menjadi petani ini dulu sempat jadi trend waktu masih jamannya PS1. Jaman saya masih SMP. Sayang sudah nggak eksis lagi, sekarang kalah eksis sama sinetron cinta-cintaan... ups.



Berbeda halnya dengan game bergenre  FPS (First Person Shooter), berantem2an, dan game2 lainnya. Di Game ini banyak sekali hal-hal yang bisa kita pelajari, mulai dari mengatur waktu, menyusun strategi, cara berinteraksi, banyak deh. Karena game ini menyerupai kehidupan sehari-hari. Buat yang dulu udah pernah main, pasti kangen deh. Apalagi versi PS1nya.

download ROM harvest moon back to nature

Nah, buat mengobati rasa kangen sama Harvest Moon, ini saya punya link download Original Soundtrack (OST) nya Harvest Moon (Back To Nature). Iramanya khas, enak didengerin, haha. Silahkan di download :



OST Harvest Moon

Buat yang pengen main Harvest Moon lagi, nih cari aja di http://coolrom.com. Disini kamu bisa cari ROM plus Emulatornya dari berbagai game dari berbagai platform. Buat yang belum tau, ROM itu seperti kaset game, sedangkan Emulator itu mesinnya. Jadi game yang semestinya buat PS, Nintendo, Xbox, bisa kamu mainkan di PC. Yang mau nostalgia sama game-game lainnya, bisa dicoba :D

NB: Gambar diambil dari google, klik untuk menuju sumbernya.

</zep>

8 Nov 2012

18
Komentar

Custom 404 Untuk Blogspot

Bismillah.

Pernah mengakses web tapi menemui Page 404 ?
Page 404 adalah halaman khusus yang akan ditampilkan apabila halaman web yang dituju tidak ada. Bisa jadi karena broken link, atau salah dalam mengetik URL-nya. Nah, saat ini Blogger juga memiliki fitur seperti itu. Cukup buka BloggerSettings - Search Preferences - Custom Page Not Found (klik edit).



Namun, kekurangannya adalah keterbatasan pengeditan, karena memanfaatkan layout halaman utama. Tapi hal ini tetap bisa 'diakalin' dengan memanfaatkan syntax b:if, jadi kita membuat styling CSS khusus hanya untuk halaman 404.


Untuk mencobanya, ketik saja alamat blog dengan sub-halaman yang tidak ada di blogmu  http://urlblogmu.blogspot.com/cobacoba
Bagaimana? hehe.

Berikut ini adalah halaman 404 versi saya, silahkan klik link berikut ini :