Single Board Computer dan Single Board Microcontroller Belajar embedded system merupakan cara yang baik untuk lebih mengenal arsitektur komputer. Di PC/Tablet/Smartphone, ada begitu banyak “layer” yang mempersulit pemahaman kita tentang hardware, tapi di embedded system, kita bisa langsung berinteraksi dengan hardware, bahkan tanpa menggunakan sistem operasi sama sekali. Saat ini ada dua jalur populer untuk belajar embedded system: menggunakan single board computer (misalnya: Raspberry Pi, BeagleBoard, BeagleBone Black, Cubie Board, RadXa, dsb), atau menggunakan single board microcontroller (misalnya: berbagai versi Arduino, Parallax Propeller, LaunchPad MSP430, dsb). Singkatan SBC untuk single board computer sudah lazim digunakan, tapi single board microcontroller biasanya tidak disingkat, tapi supaya artikel ini ringkas, akan saya singkat saja sebagai SBM. Perlu diperhatikan bahwa saya menekankan pada kata populer, Anda tidak harus menggunakan SBM atau SBC untuk belajar embedded system, tapi keduanya akan membuat proses belajar menjadi lebih mudah. Banyak pemula merasa bingung memilih dan membedakan fungsi keduanya. Jika Anda melihat berbagai proyek elektronik di Internet, sepertinya fungsi dan kemampuan keduanya hampir sama. Untuk lebih jelasnya, saya akan membahas keduanya.
Single Board Computer Sesuai namanya, single board microcomputer adalah komputer dalam sebuah board. Artinya apapun yang bisa dilakukan oleh komputer bisa dilakukan oleh SBC. SBC saat ini memiliki memori yang besar (128 MB-2 GB, bahkan sebagian sudah lebih), memiliki external storage (SD Card/USB disk), dan memiliki prosessor dalam dengan kecepatan ratusan megahertz sampai gigahertz, sebagian bahkan sudah quad core.
Sebuah SBC biasanya memiliki sebuah sistem operasi (biasanya Linux, FreeBSD, atau OS open source lain), dan kita bisa menjalankan program dalam bahasa apapun di situ (misalnya: C, Python, bahkan Lisp atau prolog). Meskipun biasanya punya sistem operasi, kita bisa saja memprogramnya tanpa sistem operasi (misalnya ada yangmembuat tutorialnya untuk Raspberry Pi). Kemampuan komputasi sebuah SBC biasanya sangat besar, bisa memproses audio, foto dan bahkan video (misalnya mengenali wajah dalam video). Ini adalah contoh hal-hal yang tidak bisa dilakukan oleh microcontroller (walaupun dalam batas tertentu microcontroller bisa memproses data yang cukup rumit). Jika SBC ini kemampuannya sama dengan PC, kenapa tidak memakai PC saja? SBC ini memiliki penggunaan daya yang sangat rendah (<5 watt) dibanding dengan PC (desktop biasanya > 70 watt, sedangkan HTPC > 30 watt), dengan pengunaan daya yang sangat kecil, maka kita bisa memakai batere sebagai sumber powernya. Ukuran SBC juga sangat kecil dan ringan (misalnya bisa diterbangkan dengan balon udara). Perbedaan lain SBC dengan PC biasa adalah: ada pin-pin GPIO (General Purpose Input Output) yang bisa dihubungkan dengan device “apapun” (ada batasan kecepatan, jadi sebenarnya tidak 100% apapun). PC lama memiliki port serial, parallel, game port, dsb yang bisa dihubungkan dengan banyak
hardware eksternal, tapi PC baru biasanya hanya memiliki konektor display, ethernet, dan USB. Dalam banyak kasus USB ini terlalu rumit dan/atau memiliki latensi yang terlalu tinggi untuk berkomunikasi dengan device eksternal. Ketika menggunakan sistem operasi biasa (non-realtime) di SBC, Anda mungkin akan mulai merasa bahwa perilaku sistem kadang tidak bisa diprediksi dalam masalah timing, misalnya: kok sistemnya lama banget menyalakan LED sejak tombolnya saya pencet? Ternyata sistemnya sedang sibuk karena ada proses latar belakang yang sedang sibuk. Ketika Anda mulai mengalami masalah seperti ini, saatnya untuk mulai menggunakan real-time operating system untuk SBC. Sebagai catatan: hampir semua SBC saat ini menggunakan prosessor ARM, tapi ada juga yang memakai Intel, dan sedikit sekali yang memakai MIPS. Sebuah SBC memiliki banyak komponen, dan diproduksi secara khusus. Yang saya maksud dengan sangat khusus adalah: diperlukan hardware dan keahlian untuk membuat sebuah SBC. Chip yang digunakan umumnya menggunakan packaging BGA (Ball Grid Array) yang tidak bisa disolder dengan solder biasa. Dalam banyak kasus, kita tidak perlu tahu mengenai proses produksi ini, tapi ketika kita sudah menyelesaikan sebuah prototipe dan ingin merilis produk, komponen-komponen ekstra yang tidak dipakai akan menambah biaya dan penggunaan daya. Ini sebabnya mengapa beberapa SBC memiliki beberapa versi, misalnya Raspberry Pi memiliki dua versi: dengan dan tanpa ethernet card (yang harganya berbeda 10 USD).
Single Board Microcontroller Sebuah microcontroller adalah komputer juga, di dalam sebuah chip microcontroller sudah ada processor core, memori, dan sistem input/output. Biasanya RAM di microcontroller sangat kecil dibandingkan dengan SBC (ratusan kilobyte, sampai beberapa megabyte), storage juga terbatas (ratusan kilobyte, kecuali jika dihubungkan dengan external storage, seperti SD Card), kecepatan juga terbatas (biasanya kurang dari 100 Mhz).
Sebuah microcontroller biasanya diprogram langsung tanpa operating system. Meskipun ada beberapa OS untuk microcontroller, kemampuannya sangat berbeda dari OS untuk komputer. Bahasa yang digunakan untuk memprogram microcontroller sebenarnya beraneka ragam, tapi biasanya orang memilih memakai assembly dan atau C/C++. Single board microcontroller yang paling terkenal saat ini (Arduino) menggunakan bahasa Wiring yang sebenarnya merupakan subset dari C++. Pemakaian daya microcontroller bisa sangat kecil, dalam hitungan microwatt dan bahkan nanowatt. Pemakaian daya yang sangat kecil ini penting, karena artinya dalam kasus tertentu kita bisa memakai batere kecil (misalnya CR2032) yang bisa bertahan beberapa bulan. Sebuah microcontroller adalah sebuah chip yang independen. Dulu untuk memprogram microcontroller, orang perlu melakukan ini: 1. Menaruh chip microcontroller di breadboard (kadang microcontrollernya perlu dihubungkan ke kristal jika kita ingin frekuensi tertentu) 2. Menghubungkan catudaya. Supaya voltasenya cocok dan stabil biasanya perlu memakai voltage regulator. 3. Menghubungkan hardware untuk memprogram (“flash”/”burn”) kode ke microcontroller
4. Menghubungkan harware lain untuk melihat apakah kodenya berjalan dengan benar. Bagi pemula, banyak sekali hal yang bisa error: dari mulai kabel yang salah, hardware programmer/flasher yang error, sampai program yang salah.
1. 2. 3. 4.
Sebuah single board microcontroller memiliki berbagai komponen dasar yang membuat proses pemrograman jadi lebih mudah: Microcontroller sudah terhubung ke komponen dasar (kristal, diode pengaman, dsb) Catudaya via USB, dan voltage regulator sudah ada di board. Hardware untuk melakukan “flashing” sudah terintegrasi (sehingga tidak perlu hardware khusus) Ada hardware tambahan untuk melihat output serial port microcontroller yang bisa diakses via USB Intinya: sebuah single board microcontroller membuat proses development jadi lebih mudah, hanya perlu colok board ke USB, jalankan IDE, dan klik “Run”, output microcontroller juga bisa terlihat di komputer. Setelah proyek kita selesai, kita bisa menggunakan chip microcontroller dan beberapa komponen saja di produk akhir (jadi boardnya tidak dibutuhkan untuk produk akhir). Dalam contoh gambar di atas (Arduino UNO), kita bisa melepas chipnya dan menggunakan chip itu di produk akhir kita (lalu kita bisa memasukkan chip baru ke dalam boardnya). Ada banyak jenis microcontroller dengan berbagai arsitektur, beberapa yang terkenal: AVR/Atmega, PIC/PIC32, ARM, dsb. Untuk pemula, biasanya memakai Atmega atau PIC akan lebih mudah (resourcenya ada lebih banyak tersedia, baik buku maupun situs internet). Chip microcontroller memiliki banyak varian, misalnya seri ATTiny dari Atmega punya banyak seri, tergantung dari jumlah memori, jumlah dan fungsi pin (misalnya : ada yang memiliki built in Analog to Digital Converter, dan ada yang tidak). Jumlah PIN I/O dalam microcontroller bisa sangat banyak (sampai puluhan). Karena ada banyak pilihan, kita bisa menyesuaikan dengan kebutuhan (apakah butuh chip yang sangat kecil dengan 8 pin saja, atau butuh input sangat banyak).
Memilih Single board computer atau microcontroller masing-masing punya kegunaan dan batasan, jadi pemilihannya tergantung dari kebutuhan.
Jika memerlukan komputasi tinggi (memproses video, memutar video, dsb), maka SBC sudah pasti menjadi pilihan. Jika komputasi yang dilakukan tidak rumit, maka SBC masih bisa dipilih juga. Jika ingin membuat produk independen yang membutuhkan sedikit daya, maka microcontroller biasanya adalah pilihan yang tepat (jika komputasinya dapat dilakukan dalam microcontroller). Jika membutuhkan jumlah PIN yang banyak, microcontroller akan lebih baik dibanding SBC. Contoh kasus: ingin membuat sistem yang jika suhu tinggi, maka nyalakan AC (via remote infrared), jika sudah cukup rendah, matikan AC, nyalakan kipas angin (via remote juga). Sistem tersebut hanya butuh: microcontroller, sensor suhu, LED infrared, dan batere. Kita bisa menyolder sendiri semuanya dalam sebuah PCB kecil, dan tidak butuh komponen ekstra apapun, semua bisa dilakukan satu orang, dan harga sebuah microcontroller sangat murah (harga satuannya mulai beberapa belas ribu rupiah saja). PCB bisa sangat kecil karena dalam kasus ini kita cuma perlu beberapa pin saja (kita bisa memakai ATTiny45 yang sangat kecil karena hanya punya 8 pin).
Proyek tersebut (secara fungsi) bisa dilakukan dengan SBC, tapi ketika sudah selesai, board SBC (yg harganya ratusan ribu rupiah) tetap diperlukan, ukuran board tersebut besar (dibandingkan PCB khusus + microcontroller) dan butuh catudaya khusus untuk SBC tersebut. Kadang-kadang sebagian solusi membutuhkan keduanya: misalnya Raspberry + arduino mega. Arduino mega memiliki banyak sekali PIN I/O, dan komputasi yang rumit bisa diserahkan ke Raspberry pi. Semoga artikel singkat ini bisa cukup menjelaskan mengenai single board computer dan microcontroller. http://cintaprogramming.com/2014/03/03/single-board-computer-dan-single-boardmicrocontroller/
Arduino Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Arduino Software
Contoh program
Pengembang
Arduino Software
Rilis stabil
0022 (24 Desember 2010; 6 tahun lalu)
Bahasa pemograman
Java
Sistem operasi
Cross-platform
Jenis
Integrated development environment
Lisensi
LGPL atau GPL
Situs web resmi
arduino.cc/en/
Arduino dibandingkan dengan tangan manusia
Arduino adalah pengendali mikro single-board yang bersifat open-source[1], diturunkan dari Wiring platform[2], dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri. Arduino juga merupakan platform[3] hardware terbuka yang ditujukan kepada siapa saja yang ingin membuat purwarupa peralatan elektronik interaktif berdasarkan hardware dan software yang fleksibel dan mudah digunakan. Mikrokontroler diprogram menggunakan bahasa pemrograman arduino yang memiliki kemiripan syntax dengan bahasa pemrograman C. Karena sifatnya yang terbuka maka siapa saja dapat mengunduh skema hardware arduino dan membangunnya. Arduino menggunakan keluarga mikrokontroler ATMega yang dirilis oleh Atmel sebagai basis, namun ada individu/perusahaan yang membuat clone arduino dengan menggunakan mikrokontroler lain dan tetap kompatibel dengan arduino pada level hardware. Untuk fleksibilitas, program dimasukkan melalui bootloader meskipun ada opsi untuk membypass bootloader dan menggunakan downloader untuk memprogram mikrokontroler secara langsung melalui port ISP.
Sejarah Singkat[sunting | sunting sumber] Semuanya berawal dari sebuah thesis yang dibuat oleh Hernando Barragan, di institute Ivrea, Italia pada tahun 2005, dikembangkan oleh Massimo Banzi dan David Cuartielles dan diberi nama Arduin of Ivrea. Lalu diganti nama menjadi Arduino yang dalam bahasa Italia berarti teman yang berani.
Tujuan awal dibuat Arduino adalah untuk membuat perangkat mudah dan murah, dari perangkat yang ada saat itu. Dan perangkat tersebut ditujukan untuk para siswa yang akan membuat perangkat desain dan interaksi. Visi awalnya aja udah mulia kan.
Saat ini tim pengembangnya adalah Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis, dan Nicholas Zambetti. Mereka mengupayakan 4 hal dalam Arduino ini, yaitu: 1. Harga terjangkau 2. Dapat dijalankan diberbagai sistem operasi, Windows, Linux, Max, dan sebagainya. 3. Sederhana, dengan bahasa pemograman yang mudah bisa dipelajari orang awam, bukan untuk orang teknik saja. 4. Open Source, hardware maupun software. Sifat Arduino yang Open Source, membuat Arduino berkembang sangat cepat. Dan banyak lahir perangkat-perangkat sejenis Arduino. Seperti DFRDuino atau Freeduino, dan kalau yang lokal ada namanya CipaDuino yang dibuat oleh SKIR70, terus ada MurmerDuino yang dibuat oleh Robot Unyil, ada lagi AViShaDuino yang salah satu pembuatnya adalah Admin Kelas Robot. Sampai saat ini pihak resmi, sudah membuat berbagai jenis-jenis Arduino. Mulai dari yang paling mudah dicari dan paling banyak digunakan, yaitu Arduino Uno. Hingga Arduino yang sudah menggunakan ARM Cortex, beebentuk Mini PC. Dan sudah ada ratusan ribu Arduino yang digunakan di gunakan di dunia pada tahun 2011. Dan untuk hari ini, yang bisa kamu hitung sendiri ya. Dan Arduino juga sudah banyak dipaka oleh perusahaan besar. Contohnya Google menggunakan Arduino untuk Accessory Development Kit, NASA memakai Arduino untuk prototypin, ada lagi Large Hadron Colider memakai Arduino dalam beberapa hal untuk pengumpulan data. Dan banyak yang bertanya juga Arduino ini menggunakan bahasa pemograman apa? Arduino sebenarnya menggunakan bahas C, yang sudah disederhanakan. Sehingga orang awam pun bisa menjadi seniman digital, bisa mempelajari Arduino dengan mudahnya...
Jenis-Jenis Arduino[sunting | sunting sumber] Dan seperti Microcontroller yang banyak jenisnya, Arduino lahir dan berkembang, kemudian muncul dengan berbagai jenis. Diantaranya adalah: a. Arduino Uno Jenis yang ini adalah yang paling banyak digunakan. Terutama untuk pemula sangat disarankan untuk menggunakan Arduino Uno. Dan banyak sekali referensi yang membahas Arduino Uno. Versi yang terakhir adalah Arduino Uno R3 (Revisi 3), menggunakan ATMEGA328 sebagai Microcontrollernya, memiliki 14 pin I/O digital dan 6 pin input analog. Untuk pemograman cukup menggunakan koneksi USB type A to To type B. Sama seperti yang digunakan pada USB printer. b. Arduino Due Berbeda dengan saudaranya, Arduino Due tidak menggunakan ATMEGA, melainkan dengan chip yang lebih tinggi ARM Cortex CPU. Memiliki 54 I/O pin digital dan 12 pin input analog. Untuk pemogramannya menggunakan Micro USB, terdapat pada beberapa handphone. c. Arduino Mega Mirip dengan Arduino Uno, sama-sama menggunakan USB type A to B untuk pemogramannya. Tetapi Arduino Mega, menggunakan Chip yang lebih tinggi ATMEGA2560. Dan tentu saja untuk Pin I/O Digital dan pin input Analognya lebih banyak dari Uno. d. Arduino Leonardo. Bisa dibilang Leonardo adalah saudara kembar dari Uno. Dari mulai jumlah pin I/O digital dan pin input Analognya sama. Hanya pada Leonardo menggunakan Micro USB untuk pemogramannya.
e. Arduino Fio Bentuknya lebih unik, terutama untuk socketnya. Walau jumlah pin I/O digital dan input analognya sama dengan uno dan leonardo, tapi Fio memiliki Socket XBee. XBee membuat Fio dapat dipakai untuk keperluan projek yang berhubungan dengan wireless. f. Arduino Lilypad Bentuknya yang melingkar membuat Lilypad dapat dipakai untuk membuat projek unik. Seperti membuat amor iron man misalkan. Hanya versi lamanya menggunakan ATMEGA168, tapi masih cukup untuk membuat satu projek keren. Dengan 14 pin I/O digital, dan 6 pin input analognya. g. Arduino Nano Sepertinya namanya, Nano yang berukulan kecil dan sangat sederhana ini, menyimpan banyak fasilitas. Sudah dilengkapi dengan FTDI untuk pemograman lewat Micro USB. 14 Pin I/O Digital, dan 8 Pin input Analog (lebih banyak dari Uno). Dan ada yang menggunakan ATMEGA168, atau ATMEGA328. h. Arduino Mini Fasilitasnya sama dengan yang dimiliki Nano. Hanya tidak dilengkapi dengan Micro USB untuk pemograman. Dan ukurannya hanya 30 mm x 18 mm saja. i. Arduino Micro Ukurannya lebih panjang dari Nano dan Mini. Karena memang fasilitasnya lebih banyak yaitu; memiliki 20 pin I/O digital dan 12 pin input analog. j. Arduino Ethernet Ini arduino yang sudah dilengkapi dengan fasilitas ethernet. Membuat Arduino kamu dapat berhubungan melalui jaringan LAN pada komputer. Untuk fasilitas pada Pin I/O Digital dan Input Analognya sama dengan Uno. k. Arduino Esplora Rekomendasi bagi kamu yang mau membuat gadget sepeti Smartphone, karena sudah dilengkapi dengan Joystick, button, dan sebagainya. Kamu hanya perlu tambahkan LCD, untuk lebih mempercantik Esplora. l. Arduino Robot Ini adalah paket komplit dari Arduino yang sudah berbentuk robot. Sudah dilengkapi dengan LCD, Speaker, Roda, Sensor Infrared, dan semua yang kamu butuhkan untuk robot sudah ada pada Arduino ini.
Contoh program[sunting | sunting sumber] int LED_PIN = 13; void setup () { pinMode (LED_PIN, OUTPUT);
// enable pin 13 for digital output
} void loop () { digitalWrite (LED_PIN, HIGH);
// turn on the LED
delay (1000);
// wait one second (1000 milliseconds)
digitalWrite (LED_PIN, LOW);
// turn off the LED
delay (1000);
// wait one second
}
Arduino-compatible boards[sunting | sunting sumber] Karena rancangan hardware dan software Arduino bersifat open-source, produsen lain bebas untuk menirunya, misalnya:
Freeduino Cosmo Black Star Freeduino MaxSerial
Zigduino
Development team[sunting | sunting sumber] Tim pengembang Arduino adalah Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis, dan Nicholas Zambetti.
Pranala luar[sunting | sunting sumber]
Situs resmi Arduino [1] arduino.or.id(situs yayasan arduino indonesia)
^ Sumber terbuka ^ https://en.wikipedia.org/wiki/Wiring_(development_platform) ^ Platform