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.

RaspberryPi (1)

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 yang membuat 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).

ArduinoUno_R3_Front

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.

Sebuah single board microcontroller memiliki berbagai komponen dasar yang membuat proses pemrograman jadi lebih mudah:

  1. Microcontroller sudah terhubung ke komponen dasar (kristal, diode pengaman, dsb)
  2. Catudaya via USB, dan voltage regulator sudah ada di board.
  3. Hardware untuk melakukan “flashing” sudah terintegrasi (sehingga tidak perlu hardware khusus)
  4. 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).

Attiny45

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.

2 thoughts on “Single Board Computer dan Single Board Microcontroller”

Leave a Reply

Your email address will not be published. Required fields are marked *