Mengenal Arduino

Dalam artikel ini, saya akan menjelaskan apa itu Arduino, dan apa yang membuatnya populer.

Arduino-logo.png

Arduino merupakan platform pyhysical computing open source berdasarkan board microcontroller beserta development environment untuk memprogram board tersebut. Secara sederhana platform Arduino memudahkan kita membuat aplikasi yang berhubungan dengan dunia fisik. Ada banyak sekali proyek Arduino yang bisa ditemukan di Internet dari sederhana sampai rumit:

  • Lampu yang otomatis menyala ketika gelap
  • Mengendalikan LED untuk hiasan rumah, pohon natal, dsb
  • Logging temperatur
  • Otomasi taman supaya tanaman disiram ketika kelembaban tanah terlalu rendah atau ketika jam tertentu saja
  • Otomasi rumah
  • Kostum canggih (misalnya kostum Iron Man dengan LED yang realistis)
  • Bebagai jenis robot
  • Notifikasi jika ada yang memencet bel pintu

Ini adalah contoh salah satu board Arduino.

arduino-uno.jpg.small.jpg

Saat ini ada beberapa jenis board Arduino, tapi kebanyakan memiliki jantung Arduino berupa microcontroller. Sebagian hardware Arduino baru memakai SOC (system on a chip), ini akan dijelaskan di topik lain, saat ini saya hanya akan memperkenalkan Arduino dengan membandingkannya dengan memprogram microcontroller tanpa Arduino.

Microcontroller adalah komputer dalam sebuah IC, Dalam IC tersebut ada prosessor yang bisa melakukan komputasi, ada memori yang bisa menyimpan data, dan peripheral I/O yang bisa berkomunikasi dengan sensor dan aktuator.

Secara sederhana, Anda bisa membayangkan chip microcontroller ini seperti case komputer. Di dalam case komputer ada CPU, ada memori (RAM), ada harddisk. Tapi seperti halnya case CPU, kita perlu menyambungkan input (misalnya keyboard, mouse), dan output (display, speaker, dsb).

Ini adalah microcontroller (PIC):

pic-microcontroller.jpg.small.jpg

Ini juga (Atmega):

atmel-microcontroller.jpg.small.jpg

Dan Atmega dalam packaging yang lain

uc-mega.jpg.small.jpg

Ada banyak jenis microcontroller dari berbagai perusahaan dan dalam berbagai ukuran, misalnya ada PIC (dari perusahaan bernama MicroChip Technology), Atmega/AVR (dari Atmel), MSP430 (Dari Texas Instruments), dan lain-lain.

Dalam sebuah rumah mungkin ada lusinan microcontroller dalam benda yang dipakai sehari-hari, mulai dari Kulkas, AC, mesin cuci, mobil, sampai mainan anak-anak.Seperti komputer biasa, microcontroller menerima input, melakukan pemrosesan, dan menghasilkan output. Bedanya dengan komputer di meja kita, biasanya input yang diterima oleh microcontroller adalah dari sensor dalam bentuk besaran fisik, misalnya, temperatur saat ini atau kelembaban dan outputnya adalah aksi fisik. Misalnya dalam sebuah AC ada microcontroller yang mengatur aliran udara berdasarkan temperatur saat ini.

Dengan memprogram sebuah microcontroller dan menghubungkannya ke sensor dan aktuator, kita bisa membuat banyak benda yang menarik.

Perlu dicatat bahwa keyboard PC ataupun monitor PC bisa dihubungkan ke microcontroller, tapi diperlukan kode dan memori yang cukup banyak di sisi micocontroller, sehingga hal ini biasanya jarang dilakukan. Jika memang butuh input dan output untuk user, biasanya kita akan memakai versi input yang lebih sederhana (keypad), dan output yang lebih sederhana (LCD jenis tertentu).

Tanpa Arduino

Sebelum memperkenalkan Arduino, saya akan menjelaskan dulu mengenai pemrograman microcontroller tanpa Arduino untuk memperlihatkan apa kemudahan yang dibawa oleh Arduino.

Memasukkan program dengan programmer

Di komputer desktop, program bisa dengan mudah dimasukkan via disk atau internet, tapi tidak semudah itu memasukkan program untuk microcontroller.

Bagaimana cara memasukan program ke dalam microcontroller? ada dua cara yang umum.

Cara pertama adalah dengan mengangkat chip microcontroller, memasukkannya ke dalam tool yang namanya programmer atau flasher, lalu mengembalikan chipnya ke sirkuitnya (demokan dengan PIC). Tentunya ini sangat merepotkan, karena jika ada kesalahan, kita harus mengulangi lagi prosesnya.

Ini adalah contoh programmer untuk AVR (UsbASP):

avr-flasher.jpg.small.jpg

Dan begini koneksinya ke chip microcontroller:

koneksi-usbasp.jpg.small.jpg

Cara kedua adalah: dengan menghubungkan device programmer langsung ke chip tanpa mencabutnya dari sirkuit, atau istilahnya "In circuit programming", karena menggunakan protokol serial, maka ini disebut juga "In circuit serial programming. Dengan cara ini, kita perlu menyiapkan koneksi khusus tambahan untuk memprogram ulang microcontroller.

Setelah dihubungkan (baik dengan cara pertama maupun kedua), kita bisa menggunakan command line atau IDE untuk mengirimkan file hasil kompilasi menggunakan programmer tersebut.

avrdude-ok.png

Jika sebuah microcontroller sudah diprogram, maka microcontroller ini bisa berdiri sendiri, device flasher tidak lagi dibutuhkan. Ini contohnya microcontroller yang sudah diprogram, saya hubungkan ke LED. Programnya sangat sederhana, mengedipkan sebuah led, resistor di papan ini hanya bertujuan untuk membatasi arus agar LED tidak rusak.

Blinking LED.gif

Perhatikan bahwa dibutuhkan arus listrik untuk menyalakan microcontroller. Asalnya bisa dari USB komputer (dengan adapter tertentu), dari adaptor, atau dari batere.

Kita sudah melihat repotnya memprogram sebuah microcontroller. Sekarang kita tengok bagian softwarenya. Ini kode yang saya pakai untuk mengedipkan LED. Perhatikan bahwa program ini ditulis dalam C, kebanyakan microcontroller diprogram menggunakan C atau assembly, meski ada juga yang menggunakan bahasa BASIC dan bahsa lain.

Saya tidak akan menjelaskan program ini secara detail, tapi saya akan memperlihatkan beberapa hal dasar, yang nantinya akan disederhanakan oleh Arduino.

blink-raw2.png

Perhatikan bahwa di program ini ada berbagai variabel aneh seperti DDRB, dan PORTB, yang merupakan nama port di microntroller atmega yang saya pakai. Kita perlu melihat datasheet ATMEGA8. Saya menggunakan port PB0, yang di atmega saya ada di pin no 14. Dengan melihat kode ini, tanpa melihat datasheet, Anda tidak akan tahu fakta ini.

atmega-pinout.png

Program ini juga terdiri dari dua bagian, bagian sebelum loop, dan loop. Bagian sebelum loop adalah inisialisasi, dan bagian dalam loop akan berulang terus selama microcontroller masih menyala. Dalam memprogram microcontroller, sebuah program tidak pernah berhenti.

Bagaimana kalo program kita salah? Sirkuit kita akan diam saja. Kesalahannya bisa banyak, mungkin kita salah ketik nomor pin, mungkin kita salah menghubungkan LED ke PIN yang salah.

Input dan Output

Mengedipkan LED adalah hello world untuk microcontroller. Jika kita sudah bisa mengedipkan LED, kita bisa yakin bahwa sirkuit kita bekerja dengan baik, dan ini bisa menjadi dasar berikutnya untuk debugging.

Karena Microcontroller tidak memiliki layar, maka cara debugging paling sederhana kita adalah dengan mengedipkan satu atau lebih LED. Tentunya cara ini tidak cukup untuk program yang rumit. Di microcontroller, kita juga bisa mengeprint sesuatu, tapi kita perlu cara untuk menangkap output microcontoller tersebut. Cara paling gampang untuk menangkap output microcontroller adalah dengan menghubungkannya ke komputer kita, dan menampilkan outputnya ke layar komputer.

Bagaimana cara membaca output microcontroller? Kebanyakan microcontroller sekarang punya koneksi UART (universal asynchronous receiver/transmitter), atau lebih gampangnya bisa disebut sebagai "serial port".

Tapi memakai serial port ini tidak mudah.

untuk bisa mengakses UART di sisi microcontroller, kita harus memprogram dulu port UART-nya di sisi microtontroller, lalu menghubungkannya ke PC untuk bisa melihat hasil outputnya. UART ini sifatnya dua arah, jadi bisa juga digunakan untuk memberikan input

Selain masalah software, ada juga masalah hardware. Kita tidak bisa menghubungkan serial port microcontroller langsung ke PC karena serial port di PC memakai 12 V. Kita perlu membeli/membuat level converter untuk menghubungkannya. Atau kita bisa, membeli konektor USB to serial dengan logic level yang sesuai dengan microcontroller yang kita pakai.

Tentu saja debugging dengan print tetap tidak mudah dilakukan untuk software yang kompleks. Untuk bisa mendebug dengan benar, kita butuh tool yang namanya hardware debugger (atau istilahnya dalam bidang elektronik adalah in circuit emulator).

Memprogram dengan Arduino

Dari penjelasan sebelumnya, terlihat bahwa untuk mendevelop microcontroller, kita perlu:

  • Chip microntroller
  • Programmer untuk memasukkan program ke dalam microcontroller tersebut
  • Power supply supaya microncontroller bisa hidup
  • Debugger dan/atau koneksi serial port dari PC untuk debugging

Kita juga perlu memperhatikan hal-hal penting lain, misalnya jangan membuat rangkaian yang mungkin merusak komputer yang terhubung ke microcontroller.

Nah, Arduino menyederhanakan itu semua, dalam satu board ini sudah ada:

  • Port USB dengan tiga kegunaan: sebagai sumber daya, sebagai programmer, dan untuk koneksi serial
  • Ada fuse (polyfuse) supaya jika kita membuat kesalahan, tidak akan merusak komputer yang terhubung ke Arduino
  • Sudah ada barrel jack, jadi gampang dilepaskan dan diberi voltase dari batere 9V.
  • Beberapa LED indikator dan untuk testing

Masih ada beberapa hal di level hardware, yang mungkin baru akan disadari kegunaannya nanti, misalnya di Arduino UNO ada regulator untuk 3.3V supaya kita bisa menghubungkan Arduino ini dengan berbagai chip yang memakai 3.3V.

Apakah sebelum Arduino ada benda sejenis ini? ada, istilahnya adalah development board. Umumnya harga sebuah development board sangat mahal dan tidak mudah didapat.

Sekarang lihat bagaimana caranya memprogram sebuah Arduino. Pertama kita tuliskan program untuk Arduino ini. Arduino memakai bahasa Wiring, yang sebenarnya adalah subset dari C++. Kita akan memiliki dua fungsi, setup dan loop. Setup dipanggil sekali saja ketika board dinyalakan kali pertama. Berikutnya fungsi loop dipanggil berulang-ulang. Ini lebih jelas dibandingkan versi C yang mencampur bagian loop dan inisialisasi dalam main.

void setup() 
{
  pinMode(13, OUTPUT);
}

void loop() 
{
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

Setelah menghubungkan LED ke breadboard, kita bisa memprogram LED yang berkedip dalam waktu 2 menit saja. Setelah menjalankan IDE Arduino, kita bisa mengetik programnya (atau sebenarnya kita bisa langsung membuka project contoh), menekan compile, lalu menekan upload. Menekan compile akan memeriksa syntax program kita (jadi langkah ini opsional karena sebelum upload, program akan dicompile lagi).

Di dalam fungsi setup, kita set agar pin nomor 3 menjadi output. Di dalam loop kita set agar output pin nomor 3 menjadi HIGH dengan digitalWrite supaya LED menyala, lalu kita beri delay, kita set menjadi LOW supaya LEDnya mati, lalu kita beri delay lagi.

pin3.jpg.small.jpg

Perhatikan pin no 3 tercetak jelas di board Arduino, kita tidak perlu melihat datasheet. Yang lebih penting lagi: jika kita menggunakan board Arduino lain, source code kita akan kompatibel dengan penomoran PIN yang sama.

Bentuk board Arduino yang seperti ini juga ada alasannya, kita bisa menaruh "shield" di atasnya. Shield ini bisa ditumpuk di atas Arduino. Shield ini menambah fungsionalitas yang tidak ada di Arduino dasar.

shield.jpg.small.jpg

Contoh shield adalah ethernet shield untuk mengkoneksikan Arduino ke jaringan.

ethernet.jpg.small.jpg

LCD Shield untuk menampilkan informasi.

lcd-keypad.jpg.small.jpg

Masih ada banyak shield lain, misalnyas shield untuk GPS, WIFI, GSM/GPRS, dsb.

Ada juga modul yang dihubungkan via kabel, tidak seperti shield yang melekat di atas Arduino. Misalnya ada modul layar Nokia, modul sensor temperatur, module LED, dan sebagainya.

nokia-lcd.jpg.small.jpg

Berbagai jenis board Arduino:

  • Ada yang kecil (untuk wearable electronics, bisa ditempel di pakaian, tas, dsb)
  • Ada yang sedang
  • Ada yang besar (misanya untuk robotik)

Penjelasan lengkap masing-masing bisa dilihat di website Arduino.

Saat ini Arduino yang paling terkenal dan mudah adalah Arduino UNO. Arduino ini menggunakan microcontroller ATMEL AVR 328p. Versi ini paling murah, cocok untuk proyek sederhana sampai agak rumit.

Arduino ini sifatnya open source. Design hardware dan softwarenya terbuka. Siapa saja boleh membuat clone Arduino, syaratnya adalah dengan tidak menggunakan nama Arduino di boardnya tanpa ijin dari pemegang merknya. Karena Arduino sangat populer, clonenya harganya semakin turun. Saya sudah menemukan yang menjual dengan harga sekitar 2.87 USD belum termasuk ongkos kirim, dengan sekitar 4.3 USD, kita bisa mendapatkan Arduino yang dikirim sampai rumah (tanpa kabel USB).

Perlu diperhatikan bahwa clone Arduino ini ada yang tidak 100% kompatibel, tapi untuk 99% proyek yang ada di internet, cukup kompatibel. Salah satu alasan clonenya Arduino UNO bisa murah adalah: chip USB yang dipakai di Arduino UNO asli menggunaakan Microcontroller juga, sedangkan clonenya memakai chip USB to serial yang lebih murah.

Dari penjelasan di atas, beberapa alasan Arduino bisa populer adalah:

  • Arduino ini open source, walau sudah ada sistem sebelum ini yang memudahkan pemrograman microcontroller, seperti Parallax dan PICAXE, sistem yang ada sebelumnya tidak open source
  • Arduino ini cross platform, bisa jalan di Linux, Windows dan OS X (ten). Kebanyakan sistem lain hanya berjalan di Windows, dan biasanya kita perlu menggunakan command line di platform lain
  • Karena open source, clone Arduino bermunculan, bahkan kita bisa membuat sendiri board Arduino dengan panduan dari Internet, jadi Arduino ini lebih murah di bandingkan sistem yang sudah ada.
  • Arduino ini mudah dan menyenangkan, tidak perlu menyolder untuk melakukan banyak hal kecil, tidak perlu berlama-lama membaca atau menghapalkan datasheet

Buat apa belajar Arduino:

  • Mengenal hardware, ada kepuasan tersendiri membuat program yang inputnya dari sensor dan menggerakkan sesuatu. Beda rasanya jika input program adalah alam semesta ini
  • Kita belajar optimasi program karena keterbatasan ROM dan RAM pada Arduino
  • Jika Anda sudah bosan merasakan frustasi coding yang nggak jalan, Anda bisa frustasi dengan cara yang baru karena salah colok kabel, hardware rusak, dan sebagainya

Mahal nggak sih hobi ini?

Bagi sebagian orang, Arduino merupakan bagian dari pekerjaan. Banyak engineer yang memakai Arduino untuk prototyping, dan bahkan dalam produksi untuk sesuatu yang tidak perlu produksi massal. Arduino juga dipakai oleh seniman (artist) untuk berbagai karya seni digital.

Tapi bagi sebagian besar orang, Arduino hanyalah bagian dari hobby. Arduino bisa diaplikasikan dalam hidup sehari-hari dan dihubungkan dengan hobi lain, misalnya jika Anda suka mengemudi, Arduino bisa dihubungkan dengan OBD (On Board Diagnostic) untuk memonitor mesin, atau dihubungkan dengan CAN Bus untuk mengontrol mobil (misalnya menambah kunci RFID pada mobil).

Hampir semua hobi menguras kantong. Salah satu pertanyaan yang sering ditanyakan orang adalah: mahal nggak sih hobi Arduino ini? Tergantung dibandingkan hobi apa, dan sedalam apa. Misalnya Anda bisa mulai hobi fotografi dengan kamera biasa, tapi kalau ingin serius, Anda perlu beli lensa, flash, dan meluangkan dana untuk jalan-jalan. Arduino nggak butuh dana sebanyak itu.

Harga sebuah kit Arduino bisa didapatkan kurang dari 30 USD. Ini jauh lebih murah dari memulai berbagai hobi lain. Seperti hobi fotografi: kita tidak mempublish tiap foto yang kita ambil, mungkin hanya yang terbaik saja yang kita terbitkan. Jika Anda memandang Arduino sebagai hobi, maka belajar Arduino ini bukan hasil akhirnya yang penting. Tidak penting membuat sesuatu yang berguna atau tidak, seperti hobi lain, yang utama hal tersebut membuat kita bahagia.

Jadi jika ingin belajar Arduino, apa saja yang perlu dibeli? Anda bisa membeli kit yang sudah lengkap, atau membeli berbagai komponen terpisah.

Saya akan memberikan link ke http://dx.com dan http://banggood.com, barang-barang ini juga bisa dicari di http://aliexpress.com, kadang dengan harga yang lebih murah, tapi dari pengalaman sejauh ini, linknya sering berubah dan penjual yang bagus juga sering berganti.

Catatan: link yang diberikan di bawah menggunakan affiliate link

Berikut ini beberapa kit Arduino murah:

Jika ingin membeli barang-barang terpisah, beberapa benda ini esensial:

  • Arduino (atau clone) + Kabelnya DCCDuino UNO R3
  • Beberapa lampu LED
  • Resistor (500 Ohm - 1 K Ohm), atau bisa juga beli satu set
  • Breadboard (bisa beli yang paling kecil, tapi sebaiknya yang agak besar)
  • Kabel
  • Saklar

Sisanya terserah ingin membuat apa, misalnya ingin membuat light sensor, bisa membeli LDR. Jika ingin bereksperimen dengan remote, bisa membeli sensor infrared.

Jika ingin sekalian memesan banyak barang, beberapa benda ini menarik untuk dimiliki:

  • LCD Nokia, terutama dulu Anda yang pernah memakai HP Nokia jaman dulu, bisa mencoba menciptakan ulang game/animasi Nokia jaman dulu.
  • LCD Keypad Shield, ini praktis karena dalam satu shield ada input (beberapa tombol) dan ada output (LCD)

Jika ingin membuat sesuatu yang permanan, sebaiknya membeli juga:

Copyright © 2009-2018 Yohanes Nugroho