EMBEDDED SYSTEM

EMBEDDED SYSTEM

Banyak yang belum mengenal ataupun mengetahui mengenai embedded system (sistem tertanam). Padahal hampir setiap hari kita menemukan bahkan menggunakan embedded system ini. Berbagai aplikasi elektronik, seperti jam digital, MP3 player, lampu lalu lintas, dan AC merupakan contoh alat-alat yang di dalamnya sudah ditanamkan embedded system. Embedded system tidak hanya dapat digunakan dalam dunia IT, tetapi dapat diimplemetasikan juga di dunia otomotif, atau bahkan kedokteran. Pada bab ini akan dijelaskan mengenai apa itu embedded system dan penggunaan salah satu aplikasinya, yaitu Arduino IDE. 
 
A. Mengenal Embedded system

Embedded restem merupakan sistem komputer yang didesain dan dibuat
 dengan tujuan dan fungsi tertentu secara spesifik. Embedded system terdiri atas perangkat keras dan perang lunak Perangkat keras dalam embedded stem melip mikroprosesor atau mikrokontroler dengan penambah memori eksternal, 1/O, dan komponen lainnya seper sensor, keypad, LED, dan LCD. Adapun, perangkat lunak embedded berfungsi sebagai penggerak pada embedded system. 

 Sebagian besar perangkat lunak pada embedded system in didukung oleh Real Time Operating System (RTOS) Real Ti Operating System (RTOS) merupakan sistem operasi multitasking yang diperuntukkan dan dikhususkan untuk aplikasi realtime 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 dimplementasikan pada kamera digital agar dapat melakukan fitur 
autofocus.

Dengan menggunakan embedded tem, maka kita dapat mengontrol perangkat untuk melakukan suatu rogas yang spik Dibandingkan dengan komputer/PC, embedded lebih cepat dalam waktu proses pada sistemnys Hal tersebut terjadi karena embedded tem dibangun menggunakan bahasa pemrograman yang lebih dekat dikenali oleh perangkat keras. Bahasa pemrograman yang Jigunakan untuk mengembangkan embedded system ini di antaranya bahasa pemrograman ADA, Java, System, C, dan VHDL. 

Untuk mengetahui perbedaan embedded system dengan stem 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 rugas yang spesifik. Pemakaian embedded system dalam kehidupan sehari-hari dapat ditemukan pada aplikasi-aplikasi berikut:
1. Automatic Teller Machine (ATM) 2. 2.Peralatan jaringan komputer, termasuk Router, Timeserver
dan Firewall
3. Printer komputer
4. Mesin fotokopi 
5. Telepon genggam
6. Pemimpanan Hand Disk 
7. Engine Compollen dan Antilock Brake Controller pada mobil
8. Pengontrolan pabrik 
9. Komputer transaksi di jalan tol
10. Peralatan Smart Electronic yang terpasang di dalam mobil Sotem 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 diklasifikasikan 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 data 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. Contohlain implementasi embedded system hard real-time adalah p sistem kontrol kantong udara pada mobil. Jika penyelesaian pada operasi pada sistem ini tidak sesuai, maka dapat mengancam keselamatan 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 ini. 

2.Embedded system soft real-time

Pada beberapa embedded system, keterlambatan waktu respon dapat ditoleransi pada batas tertentu. Embedded system tersebut 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 kabel 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 
  System Berkut 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), Sistemsistem ini umumnya merupakan sistem yang digunakan untuk keperluan yang kritikal dan harus selalu aktif. Embedded system harus dapat menangani masalah jika suatu saat realtime system mengalami 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 yang berisi inti prosesor, memori, dan input/output. Mikrokontroler tidak ditanamkan dalam komputer, karena mikrokontroler ini tidak didesain untuk melakukan pekerjaan-pekerjaan rumit. Mikrokontroler didesain khusus untuk embedded system.

Mikrokontroler ini berukuran lebih kecil karena menyesuaikan dengan embedded system yang tidak mem- butuhkan kapasitas dan address bus yang terlalu besar. Mikrokontroler juga banyak dipas ang ke barang-barang eletronik karena harganya yang terjangkau.

Arduino adalah papan rangkaian elektronik yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino dikembangkan oleh Mazimo Banzi dan rekan- rekannya dengan tujuan untuk memudahkan dalam mengakses teknologi elektronika khusunya mikrokontroler.
Anduino diharapkan menjali alat yang memudahkan para individu kreatif untuk merealisasikan ide yang ada tanpa harus terhalangi oleh beban teknis Beberapa fitur yang dimiliki oleh Arduino adalah sebagai
berikut 

I Multiplatform environment Arduino IDE (Integrated Environment Development) dapat berjalan pada berbagai macam sistem operasi (Windows, Linux, dan Macintosh).

2 Software Arduino IDE 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 da ri segi biaya dan waktu pengembangan).

5. Sumber informasi dapat dicari dimana pun karena banyak forum dan artikel yang telah membahas mengenai penggunaan Ardumo,

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 pada 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 perangkat keras maupun perangkat lunaknya dengan beberapa ketentuan. Hal itu yang menyebabkan


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) ZA 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 WIZF1250, digunakan untuk keperluan komunikasi dengan

menggunakan antarmuka WiFi.

f) Arduino WiFi shield, digunakan untuk keperluan komunikasi dengan menggunakan antarmuka WiFi.

2. Arduino IDE
 
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 sendiri 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 yang ada pada toolbar Arduino IDE beserta 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()

Setup0 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) Loop0

Loop0 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 setup0 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 "[]"

b) 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","

c) Semicolon harus diberikan pada setiap pernyataan program 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. Perbedaannya 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.

g) Tipe Data:

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.

h) Variabel Global dan Lokal 

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 setup0.

(2) Variabel lokal dapat dideklarasikan di setiap blok function ataupun pernyataan pengulangan (loop) dan hanya dapat digunakan pada blok yang bersangkutan.

i) Operator
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=5; 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.  

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 untukbandingkan 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.

(4) Operator Logika

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.

j) Flow Control
(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.

(2) If...else

Operator if...else digunakan untuk menguji sebuah kondisi apabila tidak sesuai dengan kondisi yang pertama maka akan mengeksekusi blok program yang ada di else.

3) For

Operator for digunakan untuk melakukan pengulangan tertutup sampai batas pengulangan yang sesuai dengan kondisi.

(4) While

Operator while digunakan untuk terus menerus melakukan pengulangan haris 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 Da...while melakukan pengecekan kondisi pada akhir baris blok sedangkan while melakukan pengecekan kondisi pada awal baris blok. 
 
1) Digital 1/0

Input/Output digital pada breadboard arduino ada 14 dan pengalamatnya dari 0- 13. Tetapi pada saat tertentu I/O0 dan I tidak bisa digunakan karena dipakai untuk komunikasi serial, sehingga harus hats hati dalam pengalokasian I/O

(1) pinModelpin, mode)

pin Mode digunakan untuk menentukan nilai pin sebagai input atau output. Pada arduino digital, pin telah ditentukan sebagai inpur sehingga untuk mengubahnya harus menggunakan operator pinModeipin, mode).

(2) digitalRead(pin) 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.

I) D 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 O sampai 1023.

2) analog Write(pin, value) 
analogWrite() digunakan untuk mengirimkan nilai analog pada pin analog.

m) Time
(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)

min0) digunakan untuk membandingkan 2 variabel dan mengembalikan variabel yang bernilai paling kecil.

(2) max(x,y)

max) merupakan kebalikan dari min0, 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.

(4) Serial.prinln(data)

Pernyataan serial.println() digunakan untuk me- ngirimkan data ke serial port.