A. Mengenal Embedded System
A Mengenal Embedded System
Embedded system merupakan sistem komputer yang didesain dan dibuat dengan tujuan dan fungsi tertentu secara spesifik Embedded system terdiri atas perangkat keras dan perangkat lunak. Perangkat keras dalam embedded system meliputi mikroprosesor atau mikrokontroler dengan penambahan memori eksternal, I/O, dan komponen lainnya seperti sensor, keypad, LED, dan LCD. Adapun, perangkat lunak embedded berfungsi sebagai penggerak pada embedded system.
Sebagian besar perangkat lunak pada embedded system ini didukung oleh Real Time Operating System (RTOS). Real Time Operating System merupakan sistem operasi multitasking yang diperuntukkan dan dikhususkan untuk aplikasi real-time. Perangkat lunak embedded biasanya disebut firmuure karena perangkat lunak tipe ini dapat dimuat ke ROM, EPROM atau Memory Flash. Sekali program dimasukkan ke dalam perangkat keras maka program tersebut tidak akan pernah berubah kecuali jika di program ulang.
Embedded system biasanya ditanamkan pada perangkat yang lebih besar yang didalamnya terdapat perangkat keras dan berbagai peralatan mekanik. Berbeda dengan komputer, embedded system dikhususkan untuk melakukan fungsi dan tugas yang spesifik. Saat ini sudah banyak teknologi yang telah ditanamkan embedded system ini contohnya pada kamera digital. Embedded system diimplementasikan pada kamera digital agar dapat melakukan fitur autofocus.
Dengan menggunakan embedded system, maka kita dapat mengontrol perangkat untuk melakukan suatu tugas yang spesifik. Dibandingkan dengan komputer/PC, embedded system lebih cepat dalam waktu proses pada sistemnya. Hal tersebut terjadi karena embedded system dibangun menggunakan bahasa pemrograman yang lebih dekat/ dikenali oleh perangkat keras. Bahasa pemrograman yang digunakan untuk mengembangkan embedded system ini di antaranya bahasa pemrograman ADA, Java, System, C, dan VHDL.
Untuk mengetahui perbedaan embedded system dengan sistem lain, berikut merupakan ciri-ciri dari embedded system.
1. Mempunyai computing power (dilengkapi dengan sebuah processor).
2. Bekerja di lingkungan luar ruangan IT (tidak dilengkapi dengan AC dan mendapatkan gangguan seperti getaran dan debu).
3. Memiliki tugas yang spesifik. Pemakaian embedded system dalam kehidupan sehari-hari
dapat ditemukan pada aplikasi-aplikasi berikut.
1. Automatic Teller Machine (ATM)
2. Peralatan jaringan komputer, termasuk Router, Timeserver dan Firewall
3. Printer komputer
4. Mesin fotokopi
5. Telepon genggam
6. Penyimpanan Hard Disk
7. Engine Controllers dan Antilock Brake Controller pada mobil
8. Pengontrolan pabrik
9. Komputer transaksi di jalan tol
10. Peralatan Smart Electronic yang terpasang di dalam mobil Sistem kerja dari embedded system adalah sebagai berikut.
1. Input analog/digital yang dilakukan oleh pengguna.
Contohnya adalah melalui saklar tombol, keypad, sensor,
dan layar sentuh.
2. Memproses input yang telah diberikan. Pemrosesan dapat berupa perhitungan atau konversi. Misalnya, ADC (pengonversi analog ke digital) mengubah input analog sensor ke output digital.
3. Memberikan hasilnya melalui perangkat output.
Contohnya adalah motor, LCD, dan layar sentuh.
1. Kategori Embedded System
Embedded system dapat berdasarkan fungsi dan kinerjanya, yaitu sebagai berikut.
a. Embedded system stand alone (berdiri sendiri) Embedded system stand alone merupakan embedded system yang dapat bekerja sendiri. Embedded system ini dapat menerima input digital atau analog, melakukan kalibrasi, konversi, pemrosesan data, serta menghasilkan output misalnya melalui tampilan LCD. Contoh alat dengan embedded system yang dapat berdiri sendiri adalah konsol video game, MP3 player, dan kamera digital.
b. Embedded system real-time
Sistem yang dapat dikatakan embedded system real-time adalah jika memiliki waktu respon yang cepat. Beberapa tugas tertentu harus dilakukan dalam periode waktu yang spesifik sehingga waktu respon ini merupakan hal yang sangat penting. Terdapat 2 jenis dalam embedded system real time ini, yaitu sebagai berikut.
1) Embedded system hard real-time Hal yang perlu diperhatikan dalam embedded system hard real- time adalah jika pengerjaan operasinya melebihi waktu yang ditentukan, maka dapat menyebabkan terjadinya kegagalan yang fatal dan kerusakan pada alat. Batas waktu respon sistem ini yaitu dalam millisecond atau bahkan bisa lebih singkat lagi. Contohnya adalah pada embedded system kontrol rudal (peluru kendali). Jika penyelesaian operasinya tidak sesuai waktu, maka dapat menyebabkan bencana.Contoh lain implementasi embedded rotem hand real-time adalah pada sistem kontrol kantong udara pada mobil. Jika penyelesaian operasi pada sistem ini tidak sesuai, maka dapat mengancam pengendara mobil karena kecelakaan dapat terjadi dalam waktu yang sangat singkat. Embedded system harus dapat bekerja dengan batas waktu yang sangat tepat. Oleh karena itu, pemilihan chip dan RTOS sangatlah penting pada embedded system hard real-time ini.
2) Embedded system soft real-time Pada beberapa embedded system, keterlambatan waktu respon dapat ditoleransi pada batas tertentu. Embedded system termasuk ke dalam kategori embedded system soft real time. Pelanggaran batas waktu tersebut dapat menyebabkan kinerja sistem menurun, namun masih tetap dapat beroperasi. Contoh alat pada embedded system kategori ini adalah microwave dan mesin cuci. Walaupun ada batas waktu untuk setiap operasinya, namun keterlambatan yang dapat ditoleransi adalah dalam hitungan detik, bukan millisecond.
c. Networked embedded systems Networked embedded system digunakan untuk menghubungkan jaringan ke sumber akses. Jaringan yang dihubungkan dapat melalui jaringan Local Area Network (LAN), Wide Area Network (WAN) atau internet. Media transmisinya dapat menggunakan atau nirkabel. Contoh dari LAN networked embedded system adalah pada sistem pengamanan rumah di mana semua sensor (misalnya pendeteksi gerak, sensor tekanan, sensor cahaya, dan sensor asap) terhubung melalui kabel dan dijalankan dengan protokol TCP/IP. Sistem pengamanan rumah dapat diintegrasikan dengan tambahan jaringan kamera yang dijalankan dengan protokol HTTP. Subsistem dari embedded system jaringan ini dapat bekerja dengan real time ataupun non realtime. Pada sistem real-time, embedded system dapat berdiri sendiri ataupun terhubung dengan jaringan.
2. Aspek-Aspek Penting dalam Embedded System Berikut ini merupakan aspek-aspek penting yang membedakan embedded system dengan sistem lain, di antaranya adalah sebagai berikut.
a. Biaya
Komponen yang optimal memungkinkan untuk implementasi sistem dengan biaya yang serendah-rendahnya. Hal ini disebabkan karena perbedaan harga sedikit saja dapat sangat berpengaruh pada embedded system ketika dipasarkan secara luas dalam jumlah yang besar.
b. Batasan waktu Pada umumnya embedded system merupakan real-time system. Real-time system yaitu sistem yang prosesnya terbatasi oleh batas waktu (time limit). Sistem-sistem ini umumnya merupakan sistem yang digunakan untuk keperluan yang kritikal dan harus selalu aktif. Embedded system harus dapat menangani masalah jika saat real-time system serangan Denial of Service (DoS) yang membuatnya menjadi lambat sehingga batas waktunya tidak lagi terpenuhi.
c. Interaksi langsung dengan dunia nyata Embedded system control application pada umumnya berhubungan langsung dengan dunia nyata. Oleh karena itu, jika terjadi kesalahan atau kerusakan pada embedded system ini akan ber dampak lebih besar dibandingkan dengan sistem komputer biasa. d. Batasan energi
Banyak embedded system yang mengambil daya dan energinya dari baterai. Maka, serangan atau gangguan pun dapat terjadi pada embedded system melalui power supply.
e. Elektronika
Karena embedded system merupakan sistem yang sangat erat kaitannya dengan elektronika, maka serangan-serangan atau gangguan juga mungkin didapatkan secara elektrik. Misalnya analisis dengan multimeter dan logic analyzer. Walaupun sistem komputer lain pada dasarnya juga merupakan alat elektronik, tetapi kemungkinan serangan dan gangguan pada embedded system bisa lebih besar terjadi.
B Mikrokontroler
Mikrokontroler adalah sebuah komputer kecil dalam satu sirkuit berisi inti prosesor, memori, dan input/output. Mikrokontroler tidak ditanamkan dalam komputer, karena
mikrokontroler ini tidak didesain untuk melakukan pekerjaan-pekerjaan rumit. Mikrokontroler didesain khusu untuk embedded system.
Mikrokontroler ini berukuran lebih kecil karena menyesuaikan dengan embedded system yang tidak mem butuhkan kapasitas dan address hus yang terlalu besar. Mikrokontroler juga banyak dipasang barang-barang eletronik karena harganya yang terjangkau.
C. Arduino
Arduino adalah papan rangkaian elektronik yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Armel. Arduino dikembangkan oleh Mazimo Banzi dan rekan- rekannya dengan tujuan untuk memudahkan dalam mengakses teknologi elektronika khusunya mikrokontroler.
Arduino diharapkan menjadi alat yang memudahkan para individu kreatif untuk merealisasikan ide yang ada tanpa harus terhalangi oleh beban teknis.
Beberapa fitur yang dimilliki oleh Arduino adalah sebagai
berikut.
1. Multiplatform environment. Arduino IDE (Integrated Environment Development) dapat berjalan pada berbagai macam sistem operasi (Windows, Linux, dan Macintosh). 2. Software Arduino memiliki tampilan dan fungsi yang
bersifat intuitif dan mudah digunakan.
3. Open source baik pada perangkat keras maupun perangkat lunak.
4. Investasi yang lebih murah (dilihat dari segi biaya dan waktu pengembangan). Sumber informasi dapat dicari dimana pun karena banyak forum dan artikel yang telah membahas mengenai penggunaan Arduino.
6. Arduino cocok digunakan untuk pemula yang ingin
memasuki dunia mikrokontroler.
1. Hardware Arduino
Hardware Arduino dibagi menjadi dua bagian, yaitu modul Arduino dan modul shield. Modul Arduino merupakan modul mikrokontroler yang digunakan sebagai pengendali. Adapun modul shield merupakan modul tambahan (add- on) yang fungsinya bermacam-macam seperti sensor, motor driver, LED display, LCD, GPS, dan ethernet.
Kelebihan dari Arduino terletak pada konsep shield. Jika umumnya koneksi antara modul mikrokontroler dengan modul sensor dilakukan menggunakan kabel, maka pada Arduino ini koneksi dapat dilakukan hanya dengan memasang modul shield di atas modul Aduino. Hal tersebut membuat Arduino menjadi lebih praktis.
a. Modul Arduino Arduino merupakan gabungan dari perangkat keras dan perangkat lunak yang sifatnya open-source. Arduino membebaskan semua kalangan untuk memodifikasi rancangan keras maupun perangkat lunaknya dengan beberapa ketentuan. Hal itu yang menyebabkan lahirnya produk-produk Arduino compatible dari berbagai produsen seperti Innovative Electronics, SparkFun, Seeed Studio, dan DFRobot.
Berikut deskripsi dan fungsi dari beberapa bagian modul arduino.
Tetapi pada umumnya bagian-bagian dalam Arduino ini berbeda antara satu Arduino dengan Arduino yang lain. Untuk mengetahui bagian-bagian dalam Arduino, baca informasi pada panduan masing-masing modul Arduino yang digunakan.
b. Modul Shield
Modul shield merupakan modul tambahan dalam Arduino untuk memudahkan proses penggunaan Arduino. Fungsi setiap modul shield beragam sesuai dengan keperluan, di antaranya adalah sebagai berikut.
a) EMS Blue Shield, digunakan untuk keperluan komunikasi dengan menggunakan antarmuka bluetooth. b) EMS RFID Shield, digunakan untuk keperluan pembacaan smart card seperti Mifare 1k, Mifare 4k, dan Mifare Ultralight.
c) 2A Motor Shield for Arduino, digunakan untuk keperluan pengendalian motor DC oleh Arduino.
d) OpenLog Open Source Datalogger, digunakan untuk
memudahkan pengaksesan SD card melalui antarmuka UART.
e) WizFi250-EVB Evaluation board for WIZFi250, digunakan untuk keperluan komunikasi dengan
menggunakan antarmuka WiFi.
f) Arduino WiFi shield, digunakan untuk keperluan komunikasi dengan menggunakan antarmuka WiFi.
IDE (Integrated Development Environment) merupakan
lingkungan terintegrasi yang digunakan untuk melakukan pengembangan program. Disebut sebagai lingkungan karena melalui aplikasi ini Arduino dapat menjalankan suatu program untuk melakukan fungsi-fungsi yang ditanamkan melalui sintaks pemrograman. Arduino menggunakan bahasa pemrograman yang menyerupai bahasa C. Bahasa pemrograman Arduino (sketch) telah mengalami perubahan dengan tujuan untuk memudahkan pemula dalam melakukan pemrograman dibandingkan bahasa aslinya. Sebelum dijual ke pasaran, IC mikrokontroler Arduino ditanamkan ke program bernama Bootloader yang berfungsi sebagai penengah antara compiler Arduino dengan mikrokontroler.
Arduino IDE dilengkapi dengan library C/C++ yang biasa disebut wiring. Wiring ini dapat membuat operasi input dan output menjadi lebih mudah. Arduino IDE merupakan pengembangan dari software processing yang akhirnya diubah menjadi Arduino IDE khusus untuk pemrograman dengan Arduino. Terdapat tiga bagian utama dari Arduino IDE, di antaranya adalah sebagai berikut.
1. Editor
Antarmuka yang digunakan pengguna untuk mengetikkan kode program.
2. Compiler
Bagian yang akan mengubah kode program yang dituliskan oleh user menjadi instruksi mesin yang dimengerti oleh mikrokontroler pada modul Arduino.
3. Uploader
Digunakan untuk melakukan proses mengunggah
program dari aplikasi Arduino IDE ke modul Arduino.
a. Tombol dan Fungsi pada Aplikasi Arduino IDE
Terdapat beberapa toolbar pada Arduino IDE dengan fungsi fungsinya masing-masing. Berikut merupakan deskripsi dari tombol-tombol ada pada toolbar Arduino IDE beserta yang fungsinya.
Selain tombol-tombol yang terletak pada toolbar Arduino IDE terdapat 5 buah menu bar yang terdiri dari File, Edit, Sketch. Tools, dan Help. Berikut merupakan deskripsi dari beberapa bagian penting untuk masing-masing menu dan sub menu.
b. Struktur Dasar Pemrograman Arduino
Bahasa pemrograman yang digunakan pada aplikasi Arduino IDE adalah bahasa pemrograman C/C++. Jadi sebaiknya kamu sudah mengetahui dan mengenal dasar-dasar menulis pemrograman dalam bahasa C/C++.
Struktur dasar penulisan kode pada aplikasi Arduino
IDE ini adalah sebagai berikut.
1) Setup()
Setup hanya akan dijalankan satu kali saja, yaitu pada saat program dijalankan. Fungsi ini digunakan untuk mendeklarasikan nilai variabel, deklarasi library, dan kode-kode lain yang hanya dijalankan satu kali.
2) Loop()
Loop() akan berjalan berulang-kali dan terus menerus sampai program Arduino dimatikan.
a) Function
Function (fungsi) adalah blok program yang mempunyai nama dan pernyataan yang akan dieksekusi ketika function tersebut dipanggil. Fungsi setup() dan loop0 telah dibahas sebelumnya.
Cara penulisan dalam pendeklarasian function sebagai berikut.
Pada contoh tersebut diketahui blok program tersebut me- miliki nilai balik int (integer). Jika tidak menghendaki adanya nilai balik maka tipe function tersebut harus diganti menjadi void.
b) Curly brace "{}"
Curly brace digunakan untuk mendefinisikan awal dan akhir dari sebuah blok fungsi. Jika programmer lupa memberi curly brace tutup, maka ketika di compile akan ada pemberitahuan error.
c) Semicolon ";"
Semicolon harus diberikan pada setiap yang dibuat. Semicolon ini merupakan pembatas dari setiap
pernyataan program yang dibuat.
d) Block comment "/"..."/"
Block comment berfungsi menyimpan komentar. Block comment ini biasanya digunakan jika komentar yang ditambah memakai banyak baris. Block comment ini harus selalu ditutup agar tidak ikut tereksekusi dan tidak akan di compile sehingga tidak mempengaruhi program yang dibuat.
e) Line comment "//" Fungsi dari line comment sama dengan block comment. adalah line comment ini digunakan jika komentar yang ditambahkan hanya dalam satu baris saja.
f) Variabel
Variabel digunakan untuk menyimpan nilai yang dibutuhkan dalam program. Dalam mendeklarasikan variabel harus dituliskan tipe variabel serta nilai awal variabel yang dibuat. Variabel dapat diubah sesuai dengan kebutuhan.
Dalam setiap variabel memiliki tipe data yang akan digunakan oleh compiler untuk mengetahui jenis data yang disimpan. Berikut merupakan jenis-jenis tipe data yang terdapat pada Arduino adalah sebagai berikut.
Variabel dapat dideklarasikan pada awal program sebelum penulisan void setup(), di dalam sebuah function, dan terkadang di dalam sebuah blok pernyataan pengulangan (loop).
(1) Variabel global hanya didefinisikan satu kali
dan dapat digunakan di semua blok function dan pernyataan di dalam program. Variabel global dideklarasikan pada awal program sebelum function setup().
(2) Variabel lokal dapat dideklarasikan di setiap blok function ataupun pernyataan pengulangan (loop) dan hanya dapat digunakan pada blok yang bersangkutan.
Operator dibagi menjadi beberapa jenis berdasarkan fungsinya yaitu operator assignment, operator aritmatika, operator hubungan, dan operator logika.
(1) Operator Assigment
Operator assignment (-) merupakan operator yang digunakan untuk memberikan nilai suatu variabel. Sebagai contoh a- 15; maka diketahui variabel a bernilai 5. Operator assignment berbeda dengan operator equal to (==). Operator equal to digunakan untuk mengetahui persamaan dari dua buah pernyataan.
(2) Operator Aritmatika
Operator aritmatika digunakan untuk melakukan penghitungan dengan operasi aritmatika. Beberapa simbol operator aritmatika dan fungsinya adalah sebagai berikut.
Contoh: a 7%2
a=1
Karena bilangan terbesar yang nilainya lebih kecil dari 7 dan masih bisa dibagi 2 adalah 6, maka sisa hasil baginya adalah (7-6) yaitu 1.
(3). Operator Hubungan
Operator hubungan digunakan untuk membandingkan dua buah pernyataan. Jika pernyataan yang dibandingkan tersebut memenuhi syarat yang ditentukan operator, maka pernyataan tersebut akan bernilai true atau 1. Jika pernyataan tersebut tidak memenuhi syarat maka akan bernilai false atau 0.
Contoh :
a=5,b=3
a>=b
true
Karena variabel a mempunyai nilai lebih besar dari variabel b, maka akan menghasilkan nilai true. Beberapa operator hubungan dan penjelasannya adalah sebagai berikut.
Operator logika digunakan untuk membandingkan dua ekspresi dan mengembalikan nilai balik yang bernilai benar atau salah sesuai dengan operator yang digunakan. Terdapat tiga operator logika yang biasanya digunakan pada pernyataan if. Tiga operator logika dan fungsinya adalah sebagai berikut.
(1) If
If digunakan untuk menguji sebuah kondisi, apakah nilai pada if sesuai atau tidak. Jika sesuai dengan kondisi, maka akan mengeksekusi baris program yang ada pada blok if. Akan tetapi jika tidak sesuai dengan kondisi tersebut, maka blok if tersebut tidak akan dieksekusi.
Operator if...else digunakan untuk menguji sebuah kondisi apabila tidak sesuai dengan kondisi yang pertama maka akan mengeksekusi blok program yang ada di else.
Operator for digunakan untuk melakukan pe-
ngulangan tertutup sampai batas pengulangan yang sesuai dengan kondisi.
(4) While
Operator while digunakan untuk terus menerus melakukan pengulangan baris perintah yang ada dalam blok sampai kondisi pengulangan tersebut benilai salah.
(5) Do...while
Do... while mempunyai fungsi yang sama seperti while. Perbedaannya adalah operator Do...while melakukan pengecekan kondisi pada akhir baris blok, sedangkan while melakukan pengecekan kondisi pada awal baris blok.
k) Digital I/O Input/Output digital pada breadboard arduino ada 14 dan pengalamatnya dari 0 - 13. Tetapi pada saat tertentu I/O 0 dan I tidak bisa digunakan karena dipakai untuk komunikasi serial, sehingga harus hati-hati dalam pengalokasian I/O.
(1) pinMode(pin, mode) pinMode digunakan untuk menentukan nilai pin sebagai input atau output. Pada arduino digital, pin telah ditentukan sebagai input sehingga untuk mengubahnya harus menggunakan operator pinMode(pin, mode).
digitalRead() digunakan untuk membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
(3) digitalWrite(pin, value)
digitalWrite(pin, value) digunakan untuk mengatur pin digital. Pin digital arduino mempunyai 14, yaitu dari 0-13.
1) Analog I/O
Input/Ouput analog pada breadboard arduino ada 6 dan pengalamatnya yaitu dari 0-5.
(1) analogRead(pin)
analogRead(pin) digunakan untuk membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin dari 0-5. Hasil dari pembacaan ini berupa nilai integer dengan range () sampai 1023.
(2) analogWrite(pin, value)
analogWrite() digunakan untuk mengirimkan nilai analog pada pin analog.
(1) delay(ms)
delay digunakan untuk menghentikan program untuk sesaat sesuai dengan waktu yang ditentukan.
Satuan waktu yang digunakan millisecond.
(2) millis() millis digunakan untuk mengembalikan nilai dalam millisecond yang dihitung sejak arduino board menyala. Tipe data yang digunakan adalah long integer.
n) Math
(1). min(x,y)
min() digunakan untuk membandingkan 2 variabel dan mengembalikan variabel yang bernilai paling kecil.
(2) max(x,y)
max() merupakan kebalikan dari min(), yaitu digunakan untuk membandingkan 2 variabel dan mengembalikan variabel yang bernilai paling besar.
(3) Serial.begin(rate)
Pernyataan serial.begin() digunakan untuk mengaktifkan komunikasi serial dan mengatur baudrate.
Pernyataan serial.println() digunakan untuk me- ngirimkan data ke serial port.