Anda di halaman 1dari 49

MIKROKONTROLER

(03 2 3 MIK T)

MODUL TEORI
DAFTAR ISI

DAFTAR ISI ...................................................................................................................................................... i


BAB I
PENDAHULUAN ............................................................................................................................................. 1
Pengenalan Mikrokontroler .......................................................................................................... 1
Sejarah Mikrokontroler ................................................................................................................. 2
Fungsi Mikrokontroler ................................................................................................................... 3
Jenis - jenis Mikrokontroler ........................................................................................................... 4
1.1.1 Mikrokontroler AVR .............................................................................................................. 5
1.1.2 Mikrokontroler MCS-51......................................................................................................... 8
1.1.3 Mikrokontroler PCI ..............................................................................................................12
1.1.4 Mikrokontroler ARM ...........................................................................................................12
Perbedaan mikrokontroler, mikroprosesor dan PLC...................................................................17
1.1.5 Mikrokontroler dengan mikroprosesor...............................................................................17
1.1.6 Mikrokontroler dengan PLC ................................................................................................19
BAB II
ARDUINO .....................................................................................................................................................21
Pengenalan arduino ....................................................................................................................21
Jenis – jenis arduino ....................................................................................................................23
ARDUINO USB
BAB III ..........................................................................................................................................................27
3 ARDUINO UNO ....................................................................................................................................27
Board Arduino Uno......................................................................................................................27
Konfigurasi pin-pin ......................................................................................................................28
BAB IV
SOFTWARE ARDUINO ..................................................................................................................................31
Struktur pemrograman ...............................................................................................................31
4.1.1 Struktur................................................................................................................................31
4.1.2 function ...............................................................................................................................32
4.1.3 { } curly braces .....................................................................................................................33
4.1.4 ; semicolon ..........................................................................................................................33
4.1.5 /*…*/ blok comment ...........................................................................................................33
4.1.6 // line comment ..................................................................................................................33
Variable .......................................................................................................................................33
4.2.1 variable scope......................................................................................................................34
Data Type....................................................................................................................................34
4.3.1 byte......................................................................................................................................34
4.3.2 integer .................................................................................................................................34
4.3.3 long ......................................................................................................................................35
4.3.4 float .....................................................................................................................................35
4.3.5 array ....................................................................................................................................35
Operator aritmetic ......................................................................................................................35
4.4.1 aritmetic ..............................................................................................................................35
4.4.2 compound assignments ......................................................................................................36
4.4.3 comparison ..........................................................................................................................36
4.4.4 logic operator ......................................................................................................................36
konstanta.....................................................................................................................................37
4.5.1 true/false .............................................................................................................................37
4.5.2 high/low ..............................................................................................................................37
4.5.3 input/output........................................................................................................................37
Flow control................................................................................................................................37
4.6.1 if ...........................................................................................................................................37
4.6.2 if… else.................................................................................................................................37
4.6.3 for ........................................................................................................................................38
4.6.4 while ....................................................................................................................................38
4.6.5 do… while ............................................................................................................................38
Digital I/O ...................................................................................................................................38
4.7.1 pinMode(pin, mode) ...........................................................................................................38
4.7.2 digitalRead(pin) ...................................................................................................................39
4.7.3 digitalWrite(pin, value)........................................................................................................39
Analog I/O...................................................................................................................................39
4.8.1 analogRead(pin) ..................................................................................................................39
4.8.2 analogWrite(pin, value) .......................................................................................................39
Time .............................................................................................................................................39
4.9.1 delay(ms) .............................................................................................................................39
4.9.2 millis() ..................................................................................................................................39
Math ............................................................................................................................................40
4.10.1 min(x,y)................................................................................................................................40
4.10.2 max(x,y) ...............................................................................................................................40
Random .......................................................................................................................................40
4.11.1 randomSeed(seed) ..............................................................................................................40
4.11.2 random(min,max)................................................................................................................40
Serial ............................................................................................................................................40
4.12.1 Serial.begin(rate) .................................................................................................................40
4.12.2 Serial.prinln(data) ................................................................................................................40
BAB V
APLIKASI ARUINO ........................................................................................................................................41
Blinking LED .................................................................................................................................41
Control Motor DC ........................................................................................................................42
1 BAB I
PENDAHULUAN
Pengenalan Mikrokontroler
Mikrokontroler adalah komputer mikro dalam satu chip tunggal. Mikrokontroler
memadukan CPU, ROM, RAM, I/O paralel, I/O seri, counter-timer, dan rangkaian clock dalam satu
chip (single chip) seperti terlihat pada Gambar 1.1. Dengan kata lain, mikrokontroler adalah suatu
alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program
yang bisa ditulis dan dihapus dengan cara khusus. Cara kerja mikrokontroler sebenarnya
membaca dan menulis data. Sebagai contoh, bayangkan diri Anda saat mulai belajar membaca
dan menulis. Ketika Anda sudah bisa melakukan hal itu maka Anda bisa membaca tulisan apapun
baik buku, cerpen, artikel, dan sebagainya, dan Andapun bisa menulis hal-hal sebaliknya. Begitu
pula jika Anda sudah mahir membaca dan menulis data maka Anda dapat membuat program
untuk membuat suatu sistem pengaturan otomatis menggunakan mikrokontroler sesuai
keinginan Anda.

Gambar 1.1. Blok Diagram Mikrokontroler


Mikrokontroler adalah piranti yang dirancang untuk kebutuhan umum. Fungsi utama dari
mikrokontroler adalah mengontrol kerja mesin atau sistem menggunakan program yang disimpan
pada sebuah ROM.
Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol
peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiah dapat
disebut sebagai “pengendali kecil” dimana sebuah sistem elektronik yang sebelumnya banyak
memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat
direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini

Sejarah Mikrokontroler
Semenjak kelahiran mikroprosesor, banyak mikroprosesor/mikrokontroler 4, 8, 16, dan
32 bit yang dikembangkan dan bermunculan di pasaran. Intel 4004 adalah 4-bit prosesor pertama
yang muncul pada tahun 1971. Intel 4004 memiliki kapasitas 8-bit instruksi dan 4-bit proses data,
memori eksternal terpisah untuk program (4K) dan data (1K). Ada 46 instruksi yang tereksekusi
dalam satu clock (740 kHz). Lalu selama tahun 1972 intel mengembangkan mikroprosesor 4040
yang merupakan versi advance dari 4004. 4040 memiliki 14 instruksi lebih banyak dengan 8K
memori program dan juga sudah memiliki kemampuan interupsi.

Gambar 1.2 mikroprosesor 4040

Di tahun 1974 Texas Instrument mengenalkan mikrokontroler pertama TMS 1000. TMS
100 memiliki on-chip RAM, ROM dan I/O. Lalu di tahun 1974 Intel memperkenalkan
mikroprosesor 8080 yang merupakan versi advancedari 8008 yang telah diluncurkan sebelumnya
di tahun 1972. Yang paling populer di tahun 1976 Intel mengembangkan 8085. Seri ini dapat
beorperasi pada +5V dan frekuensi 3 MHz. Di tahun yang sama Zilog Z-80 muncul dengan
kemampuan lebih baik dari 8080. Z80 beoperasi pada frekuensi 2,5 MHz dan frekuensi dalam
CMOS (Complementary Metal Oxide Semiconductor) 10 MHz.

Gambar 1.3. Mikroprosesor Intel 8080


Seketika setalah Intel muncul dengan mikroprosesor 8080 di tahun 1975, Motorola
memperkenalkan mikroprosesor 6800, lalu diikuti dengan 6502 dan 6809. Berikutnya tahun 1976
Intel mengembangkan mikroprosesor 8084 yang merupakan keluarga MCS-48. Seri ini sudah
memungkinkan storage data tersimpan on-chip, tetapi code program masih tersimpan pada
memori program eksternal. Tidak lama berselang dari itu MCS-48 tergantikan dengan
mikrokontroler keluarga MCS-51 di tahun 1980. Intel MCS-51 menggunakan 2-byte instruksi yang
lebih fleksibel, tersedia on-chip memori program (RAM/ROM/EPROM) dan memori data yang
sama besar, 128 byte. Dan dapat pula terkoneksikan dengan memori eksternal. Di tahun 1982
Motorola memperkenalkan memperkenalkan mikrokontroler 6805.

Pada tahun 1975 peripheral interface controller (PIC) terbentuk di Universitas Havard.
Keluarga mikrokontroler PIC mulai dikenalkan pada tahun 1985 oleh Microchip. PIC menggunakan
arsitektur Havard dan telah memiliki Reduce Intruction Set. Di tahun 1978 Intel mengmbangkan
8086 yang merupakan prosesor 16-bit. Seiring dengan ini Motorola meluncurkan mikroprosesor
16-bit 68000, sedangkan Zilog meluncurkan 16-bit mikroprosesor Z8000.

Pada juni 1997, mikrokontroler ATMEL 8-bit AVR dikenalkan ke pasar. dan hari ini telah
banyak keluarga dari mikrokontroler yang bermunculan dari berbagai macam sumber dan
berbagai macam versi.

Gambar 1. 4. Mikrokontroler AVR Atmel ATMega

Fungsi Mikrokontroler
Mikrokonktroler digunakan dalam produk dan alat yang dikendalikan secara automatis,
seperti sistem kontrol mesin, remote controls, mesin kantor, peralatan rumah tangga, alat berat,
dan mainan. Dengan mengurangi ukuran, biaya, dan konsumsi tenaga dibandingkan dengan
mendesain menggunakan mikroprosesor memori, dan alat input output yang terpisah, kehadiran
mikrokontroler membuat kontrol elektrik untuk berbagai proses menjadi lebih ekonomis. Dengan
penggunaan mikrokontroler ini maka :
a) Sistem elektronik akan menjadi lebih ringkas
b) Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah
perangkat lunak yang mudah dimodifikasi
c) Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan
CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar menambah
jumlah saluran masukan dan keluaran (I/O). Dengan kata lain, mikrokontroler adalah versi mini
atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung beberapa periferal
yang langsung bisa dimanfaatkan, misalnya port paralel, port serial, komparator, konversi digital
ke analog (DAC), konversi analog ke digital dan sebagainya hanya menggunakan sistem minimum
yang tidak rumit atau kompleks.

Agar sebuah mikrokontroler dapat berfungsi, maka mikrokontroler tersebut memerlukan


komponen eksternal yang kemudian disebut dengan sistem minimum. Untuk membuat sistem
minimal paling tidak dibutuhkan sistem clock dan reset, walaupun pada beberapa mikrokontroler
sudah menyediakan sistem clock internal, sehingga tanpa rangkaian eksternal pun mikrokontroler
sudah beroperasi.

Untuk merancang sebuah sistem berbasis mikrokontroler, kita memerlukan perangkat


keras dan perangkat lunak, yaitu:
a) Sistem minimal mikrokontroler
b) Software pemrograman dan kompiler, serta downloader

Yang dimaksud dengan sistem minimal adalah sebuah rangkaian mikrokontroler yang
sudah dapat digunakan untuk menjalankan sebuah aplikasi. Sebuah IC mikrokontroler tidakakan
berarti bila hanya berdiri sendiri. Pada dasarnya sebuah sistem minimal mikrokontroler AVR
memiliki prinsip yang sama, yang terdiri dari 4 bagian, yaitu :

a) Prosesor, yaitu mikrokontroler itu sendiri


b) Rangkaian reset agar mikrokontroler dapat menjalankan program mulai dari awal
c) Rangkaian clock, yang digunakan untuk memberi detak pada CPU
d) Rangkaian catu daya, yang digunakan untuk memberi sumberdaya

Jenis - jenis Mikrokontroler


Secara teknis hanya ada 2 yaitu RISC dan CISC dan masing-masing mempunyai
keturunan/keluarga sendiri-sendiri.
a) RISC kependekan dari Reduced Instruction Set computing: instruksi terbatas tapi memiliki
fasilitas yang lebih banyak
b) CISC kependekan dari Complex Instruction Set Computing: instruksi bisa dikatakan lebih
lengkap tapi dengan fasilitas secukupnya.
Namun ada beberapa jenis yang sering dipakai dan tersedia banyak di pasaran , yaitu:

1.1.1 Mikrokontroler AVR


Mikrokonktroler Alv and Vegard’s Risc processor atau sering disingkat AVR merupakan
mikrokonktroler RISC 8 bit. Karena RISC inilah sebagian besar kode instruksinya dikemas dalam
satu siklus clock.

Mikrokontroler AVR merupakan salah satu jenis arsitektur mikrokontroler yang menjadi
andalan Atmel. Arsitektur ini dirancang memiliki berbagai kelebihan dan merupakan
penyempurnaan dari arsitektur mikrokontroler-mikrokontroler yang sudah ada.

Berbagai seri mikrokontroler AVR telah diproduksi oleh Atmel dan digunakan di dunia
sebagai mikrokontroler yang bersifat low cost dan high performance. Di Indonesia,
mikrokontroler AVR banyak dipakai karena fiturnya yang cukup lengkap, mudah untuk
didapatkan, dan harganya yang relatif terjangkau.

a. Varian Mikrokontroler AVR

Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun kesemuanya
memiliki arsitektur yang sama, dan juga set instruksi yang relatif tidak berbeda. Tabel 1.1
membandingkan beberapa seri mikrokontroler AVR buatan Atmel.

Seri Flash RAM EEPROM Pin Timer Timer UART PWM ADC SPI ISP
(kbytes) (bytes) (kbytes) I/O 16-bit 8-bit 10-
bit
ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya
ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya
ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya
ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya
ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya
ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya
ATtiny12 1 - 0.0625 6 - 1 - - - - Ya
ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya
ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya
ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya
Keterangan :
 Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil
buatan manusia yang harus dijalankan oleh mikrokontroler
 RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk
penyimpanan data sementara dan pengolahan data ketika program sedang running
 EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk
penyimpanan data secara permanen oleh program yang sedang running
 Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun
masukan bagi program
 Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa
 UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus
secara serial asynchronous
 PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa
 ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog
dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range
tertentu
 SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara
serial synchronous
 ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat
diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang
minimal
b. Arsitektur Mikrokontroler AVR

Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang memisahkan


memori dan bus untuk data dan program, serta sudah menerapkan single level pipelining. Selain
itu mikrokontroler AVR juga mengimplementasikan RISC (Reduced Instruction Set Computing)
sehingga eksekusi instruksi dapat berlangsung sangat cepat dan efisien. Blok sistem
mikrokontroler AVR dapat dilihat dalam Gambar 1.5.
Gambar 1.5. Blok Diagram Mikrokontroler AVR

Salah satu seri mikrokontroler AVR yang banyak menjadi andalan saat ini adalah tipe
ATtiny2313 dan ATmega8535. Seri ATtiny2313 banyak digunakan untuk sistem yang relatif
sederhana dan berukuran kecil. Berikut adalah feature-feature mikrokontroler seri ATtiny2313.

 Kapasitas memori Flash 2 Kbytes untuk program


 Kapasitas memori EEPROM 128 bytes untuk data
 Maksimal 18 pin I/O
 8 interrupt
 8-bit timer
 Analog komparator
 On-chip oscillator
 Fasilitas In System Programming (ISP)

Sedangkan ATmega8535 banyak digunakan untuk sistem yang kompleks, memiliki input
sinyal analog, dan membutuhkan memori yang relatif lebih besar. Berikut adalah feature-feature
mikrokontroler seri ATmega8535.

 Memori Flash 8 Kbytes untuk program


 Memori EEPROM 512 bytes untuk data
 Memori SRAM 512 bytes untuk data
 Maksimal 32 pin I/O
 20 interrupt
 Satu 16-bit timer dan dua 8-bit timer
 8 channel ADC 10 bit
 Komunikasi serial melalui SPI dan USART
 Analog komparator
 4 I/O PWM
 Fasilitas In System Programming (ISP)

1.1.2 Mikrokontroler MCS-51


Mikrokonktroler ini termasuk dalam keluarga mikrokonktroler CISC (Complex Instruction
Set Computer). Sebagian besar instruksinya dieksekusi dalam 12 siklus clock.

Mikrokontroler MCS51 buatan Atmel terdiri dari dua versi, yaitu versi 20 kaki dan versi 40
kaki. Semua mikrokontroler ini dilengkapi dengan Flash PEROM (Programmable Eraseable Read
Only Memory) sebagai media memori-program, dan susunan kaki IC-IC tersebut sama pada tiap
versinya.

Perbedaan dari mikrokontroler-mikrokontroler tersebut terutama terletak pada


kapasitas memori-program, memori-data dan jumlah pewaktu 16-bit. Perbedaan mikrokontroler
Atmel MCS51 tersebut ditunjukan pada Tabel 1.2 berikut.
Tabel 1.2. Perbandingan antar Mikrokontroler MCS51Atmel

Mikrokontroler MCS51 Atmel versi mini (20 pin) dan versi 40 pin secara garis besar
memiliki struktur dasar penyusun arsitektur mikrokontroler yang sama. Bagian-bagian tersebut
secara lebih lengkap (detil) ditunjukan dalam diagram blok berikut.

Gambar 1.6 Diagram blok Mikrokontroler MCS51 Atmel

Mikrokontroler MCS51 Atmel versi 40 kaki mempunyai 32 kaki sebagai port paralel dan 8
pin yang lain untuk konfigurasi kerja mikrokontroler. Satu port paralel terdiri dari 8 kaki, dengan
demikian 32 kaki tersebut membentuk 4 buah port paralel yang masing-masing dikenal sebagai
port 0, port 1, port 2, port 3. Nomor dari masing-masing jalur (kaki) dari port paralel
mikrokontroler MCS51 Atmel mulai dari 0 sampai 7, jalur (kaki) pertama dari port 0 disebut
sebagai P0.0 dan jalur terakhir untuk port 3 adalah P3.7. Mikrokontroler MCS51 Atmel versi mini
mempunyai 20 kaki, 15 kaki diantaranya adalah kaki port 1 dan port 3. 5 kaki yang lain untuk
konfigurasi kerja mikrokontroler. Port 1 terdiri dari 8 jalur yaitu P1.0 sampai P1.7 dan port 3 terdiri
dari 7 jalur yaitu P3.0 sampai P3.5 dan P3.7. Susunan kaki mikrokontroler MCS51 atmel versi 40
kaki dapat dilihat pada Gambar 1.7 berikut.

Gambar 1.7 Susunan kaki Mikrokontroler MCS51 Atmel

Fungsi-Fungsi Kaki (Pin)

 Port 0

Merupakan dual-purpose port (port yang memiliki dua kegunaan). Pada desain
yang minimum (sederhana) digunakan sebagai port I/O (Input/Output). Pada desain lebih
lanjut pada perancangan dengan memori eksternal digunakan sebagai data dan address
yang di-multiplex. Port 0 terdapat pada pin 32-39.

 Port 1

Merupakan port yang hanya berfungsi sebagai port I/O, kecuali pada IC 89S52
yang menggunakan P1.0 dan P1.1 sebagai input eksternal untuk timer ketiga (T3). Port 1
terdapat pada pin 1-8.

 Port 2

Merupakan dual-purpose port. Pada desain minimum digunakan sebagai port


I/O. Pada desain lebih lanjut digunakan sebagai high byte dari address. Port 2 terdapat
pada pin 21-28.

 Port 3
Merupakan dual-purpose port. Selain sebagai port I/O juga mempunyai fungsi
khusus yang ditunjukkan pada tabel berikut.

 VCC
Kaki VCC digunakan untuk masukan suplai tegangan.
 GND
Kaki (pin) GND funsinya sebagai saluran ground atau pentanahan.
 RST
Kaki RST fungsinya sebagai masukan reset. Kondisi “1” selama 2 siklus mesin pada saat
oscillator bekerja akan me-reset mikrokontroler yang bersangkutan.
 ALE/
Kaki ALE digunakan sebagai keluaran ALE atau Adreess Latch Enable yang akan
menghasilkan pulsa-pulsa untuk menahan byte rendah (low byte) alamat selama
mengakses memori eksternal. Kaki ini juga berfungsi sebagai masukan pulsa program (the
program pulse input) atau selama pemrograman flash. Pada operasi normal, ALE akan
berpulsa dengan laju 1/6 dari frekuensi kristal dan dapat digunakan sebagai pewaktuan
(timing) atau pendekatan (clocking) rangkainan eksternal.
 Kaki (Program Store Enable) merupakan sinyal baca untuk memori program eksternal.
Saat mikrokontroler MCS51 menjalankan program dari memori eksternal, akan diaktifkan
dua kali per-siklus mesin, kecuali dua aktivasi dilompati (diabaikan) saat mengakses
memori data eksternal.
 /VPP
Kaki /VPP ( Exkternal Access Enable) fungsinya sebagai kontrol untuk mengakses memori.
harus dihubungkan ke ground, jika mikrokontroler akan mengeksekusi program dari
memori eksrternal. Selain itu harus dihubungkan ke VCC jika akan mengakses program
secara internal. Kaki ini juga berfungsi untuk menerima tegangan 12V (VPP) selama
pemrograman flash, khususnya untuk tipe mikrokontroler 12V volt.
 XTAL1
Kaki XTAL1 merupakan masukan untuk penguat inverting oscillator dan masukan untuk
clock internal pada rangkaian operasi mikrokontroler.
 XTAL2
Kaki XTAL2 merupakan keluaran dari rangkaian penguat inverting oscilator

1.1.3 Mikrokontroler PCI


Pada awalnya, PIC merupakan kependekan dari Programmable Interface Controller. PIC
termasuk keluarga mikrokonktroler berarsitektur Harvard yang dibuat oleh Microchip
Technology. Awalnya dikembangkan oleh Divisi Mikroelektronik General Instruments dengan
nama PIC1640.

PIC memungkinkan Anda untuk mengontrol perangkat output ketika mereka dipicu oleh
sensor dan switch. Program dapat dihasilkan dengan menggunakan diagram alur dalam perangkat
lunak komputer, yang kemudian dapat di-download ke dalam chip PIC. Mereka dapat ditulis ulang
sebanyak yang Anda inginkan. Memori jenis ini disebut memori flash.

Sebuah mikrokontroler PIC adalah sirkuit terpadu tunggal cukup kecil untuk muat di
telapak tangan dan berisi memori pengolahan unit, Jam dan sirkuit Input / Output dalam satu
unit. Sebuah mikrokontroler PIC, oleh karena itu, sering digambarkan sebagai komputer dalam
sirkuit terpadu. Mikrokontroler PIC dapat dibeli kosong dan kemudian diprogram dengan
program kontrol tertentu. Mikrokontroler PIC juga dapat dibeli dengan pra-diprogram
seperangkat perintah yang memungkinkan download langsung dari kabel komputer dan
mengurangi biaya peralatan pemrograman.

1.1.4 Mikrokontroler ARM


ARM adalah prosesor dengan arsitektur set instruksi 32-bit RISC (Reduced Instruction Set
Computer) yang dikembangkan oleh ARM Holdings. ARM merupakan singkatan dari Advanced
RISC Machine (sebelumnya lebih dikenal dengan kepanjangan Acorn RISC Machine). Pada awalnya
ARM prosesor dikembangkan untuk PC (Personal Computer) oleh Acorn Computers, sebelum
dominasi prosesor Intel x86 dan Microsoft di IBM PC kompatibel menyebabkan Acorn Computers
bangkrut.

Melalui izin dari seluruh dunia, arsitektur ARM adalah yang paling umum dilaksanakan
32-bit set instruksi arsitektur. Arsitektur ARM diimplementasikan pada Windows, Unix, dan sistem
operasi mirip Unix, termasuk Apple iOS, Android, BSD, Inferno, Solaris, WebOS, Plan 9 dan GNU /
Linux. Advanced RISC Machine awalnya dikenal sebagai Mesin Acorn RISC
Masing-masing keluarga mikrokontroler tersebut mempunyai turunan sendiri-sendiri.
Sekarang kita akan membahas pembagian jenis-jenis mikrokontroler yang telah umum digunakan.

Mikrokontroler AT89S52

Mikrokontroler 89S52 merupakan versi terbaru dibandingkan mikrokontroler AT89C51


yang telah banyak digunakan saat ini. AT89S52 mmpunyai kelebihan yaitu mempunyai flash
memori sebesar 8K bytei, RAM 256 byte serta 2 buah data pointer 16 bit, Spesifikasinya:
Kompatibel dengan keluarga mikrokontroler MCS51 sebelumnya.

 8 K Bytes In system Programmable (ISP) flash memori dengan kemampuan 1000 kali
baca/tulis
 Tegangan kerja 4-5 V
 Bekerja dengan rentang 0 – 33MHz
 256×8 bit RAM internal
 32 jalur I/O dapat deprogram
 3 buah 16 bit Timer/Counter
 8 sumber interrupt
 saluran full dupleks serial UART
 watchdog timer
 dual data pointer
 Mode pemrograman ISP yang fleksibel (Byte dan Page Mode)

Jenis-jenis Mikrokontroler Atmel lain yang ada di pasaran adalah sebagai berikut:

 Atmel AT91 series (ARM THUMB architecture)


 Atmel AVR32
 AT90, Tiny & Mega series – AVR (Atmel Norway design)
 Atmel AT89 series (Intel 8051/MCS51 architecture)
 MARC4

AMCC

Hingga Mei 2004, mikrokontroler ini masih dikembangkan dan dipasarkan oleh IBM,
hingga kemudian keluarga 4xx dijual ke Applied Micro Circuits Corporation, jenis-jenisnya yaitu:

 403 PowerPC CPU (PPC 403GCX)


 405 PowerPC CPU (PPC 405EP, PPC 405GP/CR, PPC 405GPr, PPC NPe405H/L)
 440 PowerPC Book-E CPU (PPC 440GP, PPC 440GX, PPC 440EP/EPx/GRx, PPC 440SP/SPe)

Cypress MicroSystems

 Jenis dari Cypress MicroSystems yang ada di pasaran adalah CY8C2xxxx (PSoC)

Freescale Semiconductor

Hingga 2004, mikrokontroler ini dikembangkan dan dipasarkan oleh Motorola, yang divisi
semikonduktornya dilepas untuk mempermudah pengembangan Freescale Semiconductor,
adapun jenis-jenisnya yaitu sebagai berikut:

 8-bit (68HC05 (CPU05), 68HC08 (CPU08), 68HC11 (CPU11))


 16-bit (68HC12 (CPU12), 68HC16 (CPU16), Freescale DSP56800 (DSPcontroller))
 32-bit (Freescale 683XX (CPU32), MPC500, MPC 860 (PowerQUICC), MPC 8240/8250
(PowerQUICC II), MPC 8540/8555/8560 (PowerQUICC III))

Fujitsu

Jenis chip mikrokontroler yang dikeluarkan oleh fujitsu diantaranya adalah sebagai berikut:

 F²MC Family (8/16 bit)


 FR Family (32 bit)
 FR-V Family (32 bit RISC)

Holtek

Chip mikrokontroler keluaran holtek adalah jenis HT8.

Intel

Intel adalah salah satu perusahan yang banyak mengeluarkan jenis chip di pasaran, secara
umum intel mengeluarkan dua jenis chip mikrokontroler yaitu:

 8-bit (8XC42, MCS48, MCS51, 8061, 8xC251)


 16-bit (80186/88, MCS96, MXS296, 32-bit, 386EX, i960)

Microchip

Dalam mengeluarkan produknya, microchip membagi produknya kedalam beberapa jenis


yaitu:
 Low End, Mikrokontroler PIC 12-bit
 Mid Range, Mikrokontroler PIC 14-bit (PIC16F84, PIC16F877)
 16-bit instruction PIC
 High End, Mikrokontroler PIC 16-bit

National Semiconductor

Jenis chip mikrokontroler yang dikeluarkan oleh National Semiconductor adalah jenis
COP8 dan CR16.

NEC

NEC mempunyai beberapa jenis chip mikrokontroler yang ada dipasaran yaitu : jenis 17K,
75X, 78K, V850.

Philips Semiconductors

Ada tiga jenis chip mikrokontroler yang dikeluarkan oleh perusahaan ini yaitu : LPC2000,
LPC900, LPC700.

Renesas Tech. Corp.

Renesas adalah perusahan patungan Hitachi dan Mitsubishi. Perusahaan ini


mengeluarkan beberapa jenis mikrokontroler yang ada dipasaran yaitu : H8, SH, M16C, M32R.

ST Microelectronics

STMicroelectronic merupakan salah satu perusahaan yang bergerak juga dalam produksi
chip mikrokontroler, diantaranya produknya adalah : ST 62, ST 7.

Texas Instruments

Dua jenis chip mikrokontroler yang di produksi oleh perusahaan ini adalah : TMS370,
MSP430.

Western Design Center

Perusahaan Wistern Design Center memproduksi dua tipe chip mikrokontroler yang
beredar di pasaran yaitu:

 Tipe 8-bit (W65C02-based µCs)


 Tipe 16-bit (W65816-based µCs)

Ubicom

Ubicom memproduksi beberapa tipe chip mikrokontroler diantaranya adalah:

 SX-28, SX-48, SX-54

Seri Ubicom’s SX series adalah jenis mikrokontroler 8 bit yang, tidak seperti
biasanya, memiliki kecepatan tinggi, memiliki sumber daya memori yang besar, dan
fleksibilitas tinggi. Beberapa pengguna menganjurkan mikrokontroller pemercepat PICs.
Meskipun keragaman jenis mikrokontroler Ubicom’s SX sebenarnya terbatas, kecepatan
dan kelebihan sumber dayanya yang besar membuat programmer bisa membuat
perangkat virtual lain yang dibutuhkan. Referensi bisa ditemukan di Parallax’s Web site,
sebagai penyalur utama.

 IP2022
Ubicom’s IP2022 adalah mikrokontroler 8 bit berkecepatan tinggi (120 MIPs).
Fasilitasnya berupa: 64k FLASH code memory, 16k PRAM (fast code dan packet buffering),
4k data memory, 8-channel A/D, various timers, and on-chip support for Ethernet, USB,
UART, SPI and GPSI interfaces.

Xilinx

Ada dua jenis chip mikrokontroler yang dikeluarkan oleh perusahaan Xilink diataranya
adalah:

 Microblaze softcore 32 bit microcontroller


 Picoblaze softcore 8 bit microcontroller

ZiLOG

Dua jenis chip mikrokontroler dari ZiLOG yang ada di pasaran adalah:

 Z8
 Z86E02

Disamping itu, Ada banyak mikrokontroller yang dirancang oleh produsen sebagai sarana
hobi. Biasanya mikrokontroller seperti ini dimuati interpreter BASIC, dihubungkan ke bagian Dual
Inline Pin bersama power regulator dan beberapa fasilitas lain. PICs sepertinya sangat popular
untuk jenis ini, barangkali karena adanya perlindungan terhadap listrik statis. Diantara produk ini
adalah:

Parallax, Inc

 BASIC Stamp. Nama besar di mikrokontroler BASIC, meskipun sebenarnya lamban dan
harganya tidak sebanding.
 SX-Key. Harga murahnya harus dibayar dengan kualitas yang buruk.

PicAxe

Murah, tidak lebih dari sekedar PIC yang dimuati BASIC. Bagian programmernya ditancapi
dengan 3 resistors. Penawaran BASIC menawarkan fungsionalitas yang besar dengan adanya
fasilitas IF..GOTO secara terbatas.

Perbedaan mikrokontroler, mikroprosesor dan PLC


1.1.5 Mikrokontroler dengan mikroprosesor
Mikroprosesor

Mikroprosesor dalam perkembangan komputer digital disebut sebagai Central Processing


Unit (CPU) yang bekerja sebagai pusat pengolah dan pengendalian pada sistem komputer mikro.
Sebuah mikroprosesor tersusun dari tiga bagian penting yaitu : Arithmetic Logic Unit (ALU),
Register Unit (RU), dan Control Unit (CU) seperti terlihat pada Gambar di bawah ini.

Gambar 1.8. Blok Diagram Mikroprosesor

Untuk membangun fungsi sebagai komputer mikro, sebuah mikroprosesor harus dilengkapi
dengan memori, biasanya memori program yang hanya bisa dibaca (Read Only Memory=ROM)
dan memori yang bisa dibaca dan ditulisi (Read Write Memory=RWM), decoder memori, osilator,
dan sejumlah peralatan input output seperti port data seri dan paralel.
Pokok dari penggunaan mikroprosesor adalah untuk mengambil data, membentuk kalkulasi,
perhitungan atau manipulasi data, dan menyimpan hasil perhitungan pada peralatan penyimpan
atau menampilkan hasilnya pada sebuah monitor atau cetak keras.

Mikrokontroler

Mikrokontroler adalah komputer mikro dalam satu chip tunggal. Mikrokontroler


memadukan CPU, ROM, RWM, I/O paralel, I/O seri, counter-timer, dan rangkaian clock dalam satu
chip tunggal seperti terlihat pada Gambar 1.9. di bawah ini.

Gambar 1.9. Blok Diagram Mikrokontroler

Sama halnya dengan mikroprosesor, mikrokontroler adalah piranti yang dirancang untuk
kebutuhan umum. Penggunaan pokok dari mikrokontroler adalah untuk mengontrol kerja mesin
atau sistem menggunakan program yang disimpan pada sebuah ROM. Untuk melihat perbedaan
konsep diantara mikroprosesor dan mikrokontroler di bawah ini ditunjukan tabel perbandingan
konfigurasi, arsitektur, dan set instruksi diantara mikroprosesor Z-80 CPU dengan mikrokontroler
8051.

Tabel1.3. Perbedaan Mikrokontroler dan Mikroprosesor

Konfigurasi PIN Mikroprosesor Z-80 CPU Mikrokontroler 801


Jumlah Pin 40 40
Jumlah Pin Alamat 16 16
Jumlah Pin Data 8 8
Jumlah Pin Interupt 2 2
Pin I/O - 32
Register 8 bit 20 34
Register 16 bit 4 2
Ukuran Stack 64 K 128 K
ROM Internal - 4 Kbyte
RAM Internal - 128 byte
Memori Eksternal 64 Kbyte 128 Kbyte
Flag 6 4
Timer 0 2
Port Paralel 0 4 x 8 bit
Port Serial 0 1

Perbedaan Mikrokontroler dan Mikroprosesor. Sebagai catatan dari tabel ini, jika
dilakukan perbandingan bukanlah berarti menunjukkan bahwa yang satu lebih baik dari yang
lainnya. Kedua rancangan tersebut memiliki penekanan dan tujuan yang berbeda.

1.1.6 Mikrokontroler dengan PLC


PLC dan mikrokontroler keduanya adalah kontroler berbasis mikroprosesor. Keduanya
memiliki arsitektur yang sama dengan arsitektur komputer, Perbedaanya terletak dalam cara
pemrograman, dimana PLC menggunakan ladder dalam memprogramnya, sedangkan
mikrokontroler memiliki lebih banyak cara pemrograman mulai dari Assembly, Basic, C.
Perbandingan PLC dengan mikrokontroler diuraikan pada tabel 1.4. berikut.

PLC Microcontroller

Merupakan pengembangan dari rangkaian


Merupakan pengembangan dari rangkaian
digital berbasis transistor
digital berbasis relay

Memiliki fungsi dan fasilitas utama dari


Memiliki fungsi dan fasilitas utama dari
mikrokomputer yaitu timer, counter, ALU
mikrokomputer yaitu timer, counter, ALU
(Arithmatic Logic Unit), dll.
(Arithmatic Logic Unit), dll.

Kecepatan eksekusi program relatif rendah


Kecepatan eksekusi program relatif rendah
(jika dibandingkan dengan PLC) karena
(jika dibandingkan dengan mikrokontroler)
switching bersifat elektrik.
karena switching bersifat mekanik.

Input/Output (Slave I/O) relatif sedikit


Input/Output (Slave I/O) relatif banyak

Supply daya ke instrumen yang dikendalikan


Supply daya ke instrumen yang dikendalikan
(output) kecil karena menggunakan level
(output) besar karena menggunakan level
tegangan yang relatif rendah, yaitu level TTL
tegangan yang relatif besar, yaitu berkisar
(Transistor Transistor Logic, 5 volt).
antara 20 sampai 30 volt (biasanya 24 volt).
Sensor dan actuator harus di interface
Sensor dan actuator sudah tersedia dalam
terdahulu oleh engineer jika ingin digunakan.
bentuk modul-modul (dijual terpisah dari
Master PLC).
Noise harus diperhatikan dan diatasi dengan
Jarak antara Master dan Slave dapat
teknik-teknik tertentu jika ingin menerapkan
mencapai ratusan meter tanpa perlu
aplikasi pada jarak puluhan bahkan ratusan
mengkhawatirkan Noise, karena sudah
meter.
tersedia kabel tertentu penghubung Master
Slave yang sudah dirancang untuk tahan
terhadap noise pada aplikasi ratusan meter.
Harganya relatif murah.
Harganya relatif mahal.
BAB II
2 ARDUINO
Pengenalan arduino
Untuk memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa
yang dimaksud dengan physical computing.Physical computingadalah membuat sebuah sistem
atau perangkat fisik dengan menggunakan software dan hardware yang sifatnya interaktif yaitu
dapat menerima rangsangan dari lingkungan dan merespon balik. Physical computing adalah
sebuah konsep untuk memahami hubungan yang manusiawi antara lingkungan yang sifat
alaminya adalah analog dengan dunia digital. Pada prakteknyakonsep ini diaplikasikan dalam
desaindesain alat atau projek-projek yang menggunakan sensor dan microcontrolleruntuk
menerjemahkan input analog ke dalam sistem softwareuntuk mengontrol gerakan alat-alat
elektro-mekanik seperti lampu, motor dan sebagainya.

Pembuatan prototypeatau prototypingadalah kegiatan yang sangat penting di dalam


proses physical computing karena pada tahap inilah seorangperancang melakukan eksperimen
dan uji coba dari berbagai jenis komponen, ukuran, parameter, program komputer dan
sebagainya berulang-ulang kali sampai diperoleh kombinasi yangpaling tepat. Dalam hal ini
perhitungan angka-angka dan rumus yang akurat bukanlah satu-satunya faktor yang menjadi
kunci sukses di dalam mendesain sebuah alat karena ada banyak faktor eksternal yang turut
berperan, sehingga proses mencoba dan menemukan/mengoreksi kesalahan perlu melibatkan
hal-hal yang sifatnya non-eksakta. Prototyping adalah gabungan antara akurasi perhitungan dan
seni.

Proses prototyping bisa menjadi sebuah kegiatan yang menyenangkan atau


menyebalkan, itu tergantung bagaimana kita melakukannya. Misalnya jika untuk mengganti
sebuah komponen, merubah ukurannya atau merombak kerja sebuah prototype dibutuhkan
usaha yang besar dan waktu yang lama, mungkin prototyping akan sangat melelahkan karena
pekerjaan ini dapat dilakukan berulang-ulang sampai puluhan kali – bayangkan betapa frustasinya
perancang yang harus melakukan itu. Idealnya sebuah prototype adalah sebuah sistem yang
fleksibel dimana perancang bisa dengan mudah dan cepat melakukan perubahan-perubahan dan
mencobanya lagi sehingga tenaga dan waktu tidak menjadi kendala berarti. Dengan demikian
harus ada sebuah alat pengembangan yang membuat proses prototyping menjadi mudah.

Pada masa lalu (dan masih terjadi hingga hari ini) bekerja dengan hardware berarti
membuat rangkaian menggunakan berbagai komponen elektronik seperti resistor, kapasitor,
transistor dan sebagainya. Setiap komponen disambungkan secarafisik dengan kabel atau jalur
tembaga yang disebut dengan istilah “hard wired” sehingga untuk merubah rangkaian maka
sambungansambungan itu harus diputuskan dan disambung kembali. Dengan hadirnya teknologi
digital dan microprocessor fungsi yang sebelumnya dilakukan dengan hired wired digantikan
dengan program-program software. Ini adalah sebuah revolusi di dalam proses prototyping.
Software lebih mudah diubah dibandingkan hardware, dengan beberapa penekanan tombol kita
dapat merubah logika alat secara radikal dan mencoba versi ke-dua, ke-tiga dan seterusnya
dengan cepat tanpa harus mengubah pengkabelan dari rangkaian.

Saat ini ada beberapa alat pengembangan prototype berbasis microcontroller yang cukup
populer, misalnya:

 Arduino  http://www.arduino.cc
 I-CubeX  http://www.infusionsystems.com
 Arieh Robotics Project Junior  http://www.arobotineveryhome.com
 Dwengo  http://www.dwengo.org
 EmbeddedLab  http://www.embedded.arch.ethz.ch
 GP3  http://www.awce.com/gp3.htm

Di antara sekian banyak alat pengembangan prototype, Arduino adalah salah satunya
yang paling banyak digunakan. Arduino dikatakan sebagai sebuah platformdari physical
computingyang bersifat open source. Pertama-tama perlu dipahami bahwa kata “platform” di sini
adalah sebuah pilihan kata yang tepat. Arduino tidak hanya sekedar sebuah alat pengembangan,
tetapi ia adalah kombinasi dari hardware, bahasa pemrograman dan Integrated Development
Environment (IDE)yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis
program, meng-compile menjadi kode biner dan meng-uploadke dalam memorymicrocontroller.
Ada banyak projek dan alat-alat dikembangkan oleh akademisi dan profesional dengan
menggunakan Arduino, selain itu juga ada banyak modul-modul pendukung (sensor, tampilan,
penggerak dan sebagainya) yang dibuat oleh pihak lain untuk bisa disambungkandengan Arduino.
Arduino berevolusi menjadi sebuah platform karena ia menjadi pilihan dan acuan bagi banyak
praktisi.

Salah satu yang membuat Arduino memikat hati banyakorang adalah karena sifatnya yang
open source, baik untuk hardware maupun software-nya. Diagram rangkaian elektronik Arduino
digratiskan kepada semua orang. Anda bisa bebas men-download gambarnya, membeli
komponen-komponennya, membuat PCB-nya dan merangkainya sendiri tanpa harus membayar
kepada para pembuat Arduino. Sama halnya dengan IDEArduino yang bisa di-download dan
diinstal pada komputer secara gratis. Kita patut berterima kasih kepada tim Arduino yang sangat
dermawan membagi-bagikan kemewahan hasil kerja keras mereka kepada semua orang. Saya
pribadi betul-betul kagum dengan desain hardware, bahasa pemrograman dan IDE Arduino yang
berkualitas tinggi dan sangat berkelas.

Arduino dikembangkan oleh sebuah tim yang beranggotakan orang-orang dari berbagai
belahan dunia. Anggota inti dari tim ini adalah:

 Massimo Banzi Milano, Italy


 David Cuartielles Malmoe, Swede
 Tom Igoe New York, US
 Gianluca Martino Torino, Italy
 David A. Mellis Boston, MA, USA

Profil mengenai anggota tim tersebut dan kontribusinya bisa diakses pada situs web

http://www.arduino.cc/playground/Main/People.

Secara umum Arduino terdiri dari dua bagian, yaitu:

1. Hardware  papan input/output (I/O)


2. Software  Software Arduino meliputi IDE untuk menulis program, driveruntuk koneksi
dengan komputer, contoh program dan libraryuntuk pengembangan program.

Selanjutnya kita akan mengenal masing-masing bagianini lebih jauh

Jenis – jenis arduino


Saat ini ada bermacam-macam bentuk papan Arduino yang disesuaikan dengan
peruntukannya, seperti diperlihatkan berikut ini:
ARDUINO USB

Gambar 2.1 Board Arduino Uno

Menggunakan USB sebagai antar muka pemrograman ataukomunikasi komputer. Contoh:

 Arduino Uno
 Arduino Duemilanove
 Arduino Diecimila
 Arduino NG Rev. C
 Arduino NG (Nuova Generazione)
 Arduino Extreme dan Arduino Extreme v2
 Arduino USB dan Arduino USB v2.0

ARDUINO SERIAL

Menggunakan RS232 sebagai antar muka pemrograman atau komunikasi komputer.

Gambar 2.2. Board Arduino Serial

Contoh: Arduino Serial dan Arduino Serial v2.0

ARDUINO MEGA
Gambar 2.3. Board Arduino Mega

Papan Arduino dengan spesifikasi yang lebih tinggi,dilengkapi tambahan pin digital, pin analog,

port serial dan sebagainya. Contoh:

 Arduino Mega
 Arduino Mega 2560

ARDUINO FIO

Gambar 2.4. Board Arduino Fio

Ditujukan untuk penggunaan nirkabel.

ARDUINO LILYPAD

Gambar 2.5. Board Arduino lilypad


Papan dengan bentuk yang melingkar. Contoh: LilyPadArduino 00, LilyPad Arduino 01, LilyPad

Arduino 02, LilyPad Arduino 03, LilyPad Arduino 04

ARDUINO BT

Gambar 2.6. Board Arduino BT

Mengandung modul bluetoothuntuk komunikasi nirkabel.

ARDUINO NANO DAN ARDUINO MINI

Gambar 2.7. Arduino Nano

Papan berbentuk kompak dan digunakan bersama breadboard. Contoh:

 Arduino Nano 3.0, Arduino Nano 2.x


 Arduino Mini 04, Arduino Mini 03, Arduino Stamp 02
BAB III
3 ARDUINO UNO
Board Arduino Uno
Komponen utama di dalam papan Arduino adalah sebuah microcontroller 8 bit dengan
merk ATmega yang dibuat oleh perusahaan Atmel Corporation. Berbagai papan Arduino
menggunakan tipe ATmega yang berbeda-beda tergantung dari spesifikasinya, sebagai contoh
Arduino Uno menggunakan ATmega328 sedangkan ArduinoMega 2560 yang lebih canggih
menggunakan ATmega2560.

Untuk memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah
microcontroller, pada gambar 3.1. berikut ini diperlihatkan contoh diagram blok sederhana dari
microcontroller ATmega328 (dipakai pada Arduino Uno).

Gambar 3.1. Block diagram Atmega 328

Blok-blok di atas dijelaskan sebagai berikut:

 Universal Asynchronous Receiver/Transmitter (UART)adalah antar muka yang digunakan


untuk komunikasi serial seperti pada RS-232, RS-422dan RS-485.
 2KB RAM pada memory kerja bersifat volatile(hilang saat daya dimatikan), digunakan oleh
variable-variabel di dalam program.
 32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program
yang dimuat dari komputer. Selain program, flash memory juga menyimpan bootloader.
Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat daya
dihidupkan. Setelah bootloader selesai dijalankan, berikutnya program di dalam RAM
akan dieksekusi.
 1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak boleh
hilang saat daya dimatikan. Tidak digunakan pada papan Arduino.
 Central Processing Unit (CPU), bagian dari microcontroller untuk menjalankan setiap
instruksi dari program.
 Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan
mengeluarkan data (output) digital atau analog.

Setelah mengenal bagian-bagian utama dari microcontroller ATmega sebagai komponen


utama, selanjutnya kita akan mengenal bagian-bagian dari papan Arduino itu sendiri

Gambar 3.2. Board Arduino uno

Konfigurasi pin-pin
Dengan mengambil contoh sebuah papan Arduino tipe USB, bagian-bagiannya dapat
dijelaskan sebagai berikut.

Gambar 3.3. Konfigurasi PIN – PIN Arduino Uno


14 pin input/output digital (0-13)

Berfungsi sebagai input atau output, dapat diatur oleh program. Khusus untuk 6 buah pin
3, 5, 6, 9, 10 dan 11, dapat juga berfungsi sebagai pin analog output dimana tegangan output-nya
dapat diatur. Nilai sebuah pin output analog dapat diprogram antara 0 – 255, dimana hal itu
mewakili nilai tegangan 0 – 5V.

USB Interface

Berfungsi untuk:

 Memuat program dari komputer ke dalam papan


 Komunikasi serial antara papan dan komputer
 Memberi daya listrik kepada papan

Q1 – Kristal (quartz crystal oscillator)

Jika microcontroller dianggap sebagai sebuah otak, maka kristal adalah jantung-nya
karena komponen ini menghasilkan detak-detak yang dikirim kepada microcontroller agar
melakukan sebuah operasi untuk setiap detak-nya. Kristal ini dipilih yang berdetak 16 juta kali per
detik (16MHz).

Tombol Reset S1

Untuk me-reset papan sehingga program akan mulai lagi dari awal. Perhatikan bahwa
tombol reset ini bukan untuk menghapus program atau mengosongkan microcontroller.

In-Circuit Serial Programming (ICSP)

Port ICSP memungkinkan pengguna untuk memprogram microcontroller secara langsung,


tanpa melalui bootloader. Umumnya pengguna Arduino tidak melakukan ini sehingga ICSP tidak
terlalu dipakai walaupun disediakan.

IC 1 – Microcontroller Atmega

Komponen utama dari papan Arduino, di dalamnya terdapat CPU, ROM dan RAM.

X1 – sumber daya eksternal

Jika hendak disuplai dengan sumber daya eksternal, papan Arduino dapat diberikan
tegangan DC antara 9-12V.
6 pin input analog (0-5)

Pin ini sangat berguna untuk membaca tegangan yang dihasilkan oleh sensor analog,
seperti sensor suhu. Program dapat membaca nilai sebuah pininput antara 0 – 1023, dimana hal
itu mewakili nilai tegangan 0 – 5V.
BAB IV
4 SOFTWARE ARDUINO
Sehubungan dengan pembahasan untuk saat ini software Arduino yang akan digunakan
adalah driver dan IDE, walaupun masih ada beberapa software lain yang sangat berguna selama
pengembangan Arduino. IDE Arduino adalah software yang sangat canggih ditulis dengan
menggunakan Java. IDE Arduino terdiri dari:

 Editorprogram, sebuah window yang memungkinkan pengguna menulis dan mengedit


program dalam bahasa Processing.
 Compiler, sebuah modul yang mengubah kode program (bahasa Processing) menjadi
kode biner. Bagaimanapun sebuah microcontroller tidak akan bisa memahami bahasa
Processing. Yang bisa dipahami oleh microcontrolleradalah kode biner. Itulah sebabnya
compiler diperlukan dalam hal ini.
 Uploader, sebuah modul yang memuat kode biner dari Jomputerke dalam memory di
dalam papan Arduino.

Berikut ini adalah contoh tampilan IDE Arduino dengan sebuah sketch yang sedang diedit.

Gambar 4.1. Sketch Arduino

Baiklah kita akan bahas bahasa pemrogramannya, seperti bahasa pemrograman tingkat menegah pada umumnya
arduino pun sama memiliki alur algoritma yang mirip yang beda adalah cara penulisan sintaknya.

Struktur pemrograman
4.1.1 Struktur

Structur dasar dari bahasa pemrograman arduino itu sederhana hanya terdiri dari dua bagian.
void setup( )
{
// Statement;
}

void loop( )
{
// Statement;
}

Dimana setup( ) bagian untuk inisialisasi yang hanya dijalankan sekali di awal program, sedangkan loop()

untuk mengeksekusi bagian program yang akan dijalankan berulang-ulang untuk selamanya.

 setup()

Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk
pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program

walaupun tidak ada statement yang di jalankan.

void setup()
{
pinMode(13,OUTPUT); // mengset ‘pin’ 13 sebagai output
}
 loop

Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan
dan melakukan instruksi-instruksi yang ada dalam fungsi loop().

void loop()
{
digitalWrite(13, HIGH); // nyalakan ‘pin’ 13
delay(1000); // pause selama 1 detik
digitalWrite(13, LOW); // matikan ‘pin’ 13
delay(1000); /// pause selama 1 detik
}
4.1.2 function
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai statement yang
akan di eksekusi ketika function di panggil. Fungsi void setup() dan void loop() telah di bahas di atas dan pembuatan
fungsi yang lain akan di bahas selanjutnya.

Cara pendeklarasian function

type functionName(parameters)
{
// Statement;
}
Contoh:

int delayVal()
{
int v; // membuat variable ‘v’ bertipe integer
v = analogRead(pot); // baca harga potentiometer
v /= 4; // konversi 0-1023 ke 0-255
return v; // return nilai v
}

Pada contoh di atas fungsi tersebut memiliki nilai balik int (integer), karena kalau tidak menghendaki adanya nilai
balik maka type function harus void.

4.1.3 { } curly braces

Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika memprogram dan progremer lupa
memberi curly brace tutup maka ketika di compile akan terdapat laporan error.

4.1.4 ; semicolon

Semicolon harus di berikan pada setiap statement program yang kita buat ini merupakan pembatas setiap
statement program yang di buat.

4.1.5 /*…*/ blok comment

Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak akan di compile sehingga
tidak mempengaruhi besar program yang di buat untuk di masukan dalam board arduino.

4.1.6 // line comment

Sama halnya dengan block comments, line coments pun sama hanya saja yang di jadikan komen adalh perbaris.

Variable

Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam program. Variable dapat di rubah
sesuai dengan instruksi yang kita buat. Ketika mendeklarisikan variable harus di ikut sertakan type variable serta nilai
awal variable.

Type variableName = 0;

Contoh

Int inputVariable = 0; // mendefinisikan sebuah variable bernama


inputVariable dengan nilai awal 0
inputVariable = analogRead(2); // menyimpan nilai yang ada di analog
pin 2 ke inputVariable

4.2.1 variable scope

sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara local di dalam
sebuah function, dan terkadang di dalam sebuah block statement pengulangan.
Sebuah variable global hanya satu dan dapat di gunakan pada semua block function dan statement di dalam
program. Variable global di deklarasikan pada awal program sebelum fungstion setup().
Sebuah variable local di deklarasikan di setiap block function atau di setiap block statement pengulangan dan hanya
dapat di gunakan pada block yang bersangkutan saja.
Contoh penggunaan:

int value; // ‘value’ adalah variable global dan dapat di gunakan


pada semua block funtion
void setup()
{
// no setup needed
}

void loop()
{
for (int i=0; i<20;) // 'i' hanya dapat di gunakan dalam
pengulangan saja
{
i++;
}
float f; // 'f' sebagai variable local
}

Data Type
4.3.1 byte

type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki range 0 – 255.

Byte biteVariable = 180; // mendeklarasikan ‘biteVariable’ sebagai


type byte

4.3.2 integer

Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat tanpa koma. Penyimpanan
integer sebesar 16-bit dengan range 32.767 sampai -32.768.

Int integerVariable = 1600; // mendeklarasikan ‘integerVariable’


sebagai type integer
4.3.3 long

Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan range
2.147.483.647 sampai -2.147.483.648

Long longVariable = 500000; // mendeklarasikan ‘longVariable’ sebagai


type long

4.3.4 float

Float adalah tipe data yang dapat menampung nilai decimal, float merupakan penyimpan yang lebih besar
dari integer dan dapat menyimpan sebesar 32-bit dengan range 3.4028235E+38 sampai -3.4028235E+38

Float floatVariable = 3.14; // mendeklarasikan ‘floatVariable’


sebagai type float

4.3.5 array

Array adalah kumpulan nilai yang dapat di akses dengan index number, nilai yang terdapat dalam array
dapat di panggil dengan cara menuliskan nama array dan index number. Array dengan index 0 merupakan nilai
pertama dari array. Array perlu di deklarasikan dan kalau perlu di beri nilai sebelum di gunakan.

Int arraysName[] = {nilai0, nilai1, nilai2 . . . }

Contoh penggunaan array:

Int arraySaya[] = {2,4,6,8,10}


x = arraySaya[5]; // x sekarang sama dengan 10

Operator aritmetic
4.4.1 aritmetic

operator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan pembagian.

y = y + 3;
x = x - 8;
i = i * 5;
r = r / 9;

dalam menggunakan operan aritmatik harus hati-hati dalam menentukan tipe data yang digunakan jangan sampai
terjadi overflow range data.
4.4.2 compound assignments

Compound assignments merupakan kombinasi dari aritmatic dengan sebuah variable. Ini biasanya
dipakai pada pengulangan.

x ++; // sama seperti x = x + 1 atau menaikan nilai x sebesar 1


x --; // sama seperti x = x - 1 atau mengurangi nilai x sebesar 1
x += y; // sama seperti x = x + y
x -= y; // sama seperti x = x – y
x *= y; // sama seperti x = x * y
x /= y; // sama seperti x = x / y

4.4.3 comparison

Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true. Statement ini
banyak digunakan dalam operator bersyarat.

x == y; // x sama dengan y
x != y; // x tidak sama dengan y
x < y; // x leboh kecil dari y
x > y; // x lebih besar dari y
x <= y; // x lebih kecil dari sama dengan y
x >= y; // x lebih besar dari sama dengan y

4.4.4 logic operator

Operator logical digunakan untuk membandingkan 2 expresi dan mengembalikan nilai balik benar atau
salah tergantung dari operator yang di gunakan. Terdapat 3 operator logical AND,OR, dan NOT, yang biasanya di
gunakan pada if statement.
Contoh penggunaan:

Logical AND

If ( x > 0 && x < 5) // bernilai benar apabila kedua operator


pembanding terpenuhi

Logical OR

If ( x > 0 || y > 0) // bernilai benar apabila salah satu dari


operator pembanding terpenuhi

Logical NOT

If ( !x > 0 ) // benilai benar apabila ekspresi operator


salah
konstanta

Arduino mempunyai beberapa variable yang sudah di kenal yang kita sebut konstanta. Ini membuat
memprogram lebih mudah untuk di baca. Konstanta di kelasifikasi berdasarkan group.

4.5.1 true/false

Merupakan konstanta Boolean yang mendifinisikan logic level. False mendifinisikan 0 dan True mendifinisikan 1.

If ( b == TRUE );
{
//doSomething
}

4.5.2 high/low

Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan di gunakan ketika membaca dan menulis ke
digital pin. HIGH di definisikan sebagai 1 sedangkan LOW sebagai 0.

digitalWrite( 13, HIGH );

4.5.3 input/output

Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital, sebagai input
atau output

pinMode( 13, OUTPUT );

Flow control
4.6.1 if

If Operator if mengtest sebuah kondisi seperti nilai analog sudah berada di bawah nilai yang kita kehendaki
atau belum, apabila terpenuhi maka akan mengeksekusi baris program yang ada dalam brackets kalau tidak
terpenuhi maka akan mengabaikan baris program yang ada dalam brackets.

If ( someVariable ?? value )
{
//DoSomething;
}

4.6.2 if… else

Operator if…else mengtest sebuah kondisi apabila tidak sesuai dengan kondisi yang pertama maka akan
mengeksekusi baris program yang ada di else.

If ( inputPin == HIGH )
{
//Laksanakan rencana A;
}
Else
{
//Laksanakan rencana B;
}

4.6.3 for

Operator for digunakan dalam blok pengulangan tertutup.

For ( initialization; condition; expression )


{
//doSomethig;
}

4.6.4 while

Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai ekspresi sebagai
kondisi pengulangan benilai salah

While ( someVariable ?? value )


{
//doSomething;
}

4.6.5 do… while

Sama halnya dengan while() hanya saja pada operator Do…while tidak melakukan pengecekan pada awal
tapi di akhir, sehingga otomatis akan melakukan satu kali baris perintah walaupun pada awalnya sudah terpenuhi.

Do
{
//doSomething;
}
While ( someVariable ?? value );

Digital I/O

Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 – 13, ada saat tertentu I/O 0
dan 1 tidak bisa di gunakan karena di pakai untuk komunikasi serial, sehingga harus hati-hati dalam pengalokasian
I/O.

4.7.1 pinMode(pin, mode)

Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input atau Output. Arduino
digital pins secara default di konfigurasi sebagai input sehingga untuk merubahnya harus menggunakan operator
pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output
digitalWrite(pin, HIGH); // pin sebagai source voltage

4.7.2 digitalRead(pin)

Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.

Value = digitalRead(pin); // mengset ‘value’ sama dengan pin

4.7.3 digitalWrite(pin, value)

Digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 ( 0 – 13 ).

digitalWrite ( pin, HIGH ); // set pin to HIGH

Analog I/O

Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0 – 5

4.8.1 analogRead(pin)

Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin (0-
5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023.

Value = analogRead(pin); // mengset ‘value’ sama dengan nilai


analog pin

4.8.2 analogWrite(pin, value)

Mengirimkan nilai analog pada pin analog.

analogWrite(pin, value); // menulis ke pin analog

Time
4.9.1 delay(ms)

Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam millisecond.

Delay(1000); // menunggu selama satu detik


4.9.2 millis()

Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer.

Value = millis(); // set ‘value’ equal to millis()


Math
4.10.1 min(x,y)

Membadingkan 2 variable dan akan mengembalikan nilai yang paling kecil.

value = min(value, 100); // set ‘value’ sebagai nilai yang


paling kecil dari kedua nilai

4.10.2 max(x,y)

Max merupakan kebalikan dari min.

value = max(value, 100); //set ‘value’ sebagai nilai yang paling


besar dari kedua nilai

Random
4.11.1 randomSeed(seed)
4.11.2 random(min,max)
Serial
4.12.1 Serial.begin(rate)

Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate.

void setup()
{
Serial.begin(9600); //open serial port and set baudrate
9600 bps
}

4.12.2 Serial.prinln(data)

Mengirimkan data ke serial port.

Serial.println(100); // mengirimkan 100


BAB V
5 APLIKASI ARUINO
Blinking LED
Langkah-langkah untuk membuat Blinking LED :

Pemasangan LED harus diperhatikan polaritasnya. Kaki yang panjang mengarah ke kutup
Positif (+), sedangkan kaki yang pendek atau kaki pada permukaan LED yg datar, mengarah ke
kutub negative (-) atau Ground (Gnd)

Gambar 5.1. Layout LED pada Arduino

Pemasangan komponen pada breadboard agar disesuaikan skema.

Gambar 5.2. Layout LED breadboard dan Arduino ino


Sketch:

int led 1 = 13; // lampu LED intenal pada pin 13 Arduino

void setup()

pinMode(led1, OUTPUT); // pin 13 sebagai output

void loop()

digitalWrite(led1, HIGH); // led On

delay(1000); // tunggu 1 detik

digitalWrite(led1, LOW); // led Off

delay(1000); // tunggu 1 detik

Control Motor DC
Motor DC, misalnya motor Tamiya, tidak dapat langsung dihubungkan dengan output
Mikrokontroler, karena arusnya terlalu kecil. Untuk itu diperlukan rangkaian H-bridge sebagai
penguat arus sekaligus pengendali kecepatan motor dan arah putaran motor DC.
 Rangkai modul H-Bridge, bodi Robot mobil (dengan 2 DC motor Tamiya) dan sumber tenaganya
 Dengan bantuan sensor, misalnya sensor jarak, kita dapat membuat Robot Line tracer, Obstacle
Avoider, light sensing, dll.
 Program berikut ini adalah untuk menggerakkan Robot maju full speed dan mundur half speed.
Gambar 5.3. H-Bridge driver
Sketch:
int transistorPin = 9; // dari digital pin 9 ke pin signal PWM kiri (menggerkkan motor)
int transistorPin2 = 11; // dari digital pin 11 ke pin signal PWM kanan (menggerkkan motor)
int relayPin = 7; // dari digital pin 7 ke pin signal relay kiri (membalik putaran motor)
int relayPin2 = 5; // dari digital pin 5 ke pin signal relay kanan (membalik putaran motor)
void setup() {
// set the transistor pin as an output
pinMode(transistorPin, OUTPUT);
pinMode(transistorPin2, OUTPUT);
// set the relay pin as an output
pinMode(relayPin, OUTPUT);
pinMode(relayPin2, OUTPUT);
}
void loop()
{
digitalWrite(7, LOW); // relay1 off - MAJU
digitalWrite(5, LOW); // relay2 off - MAJU
analogWrite(9, 255); // motor 1 on, full speed - (nilai 0-255)
analogWrite(11, 255); // motor 2 on, full speed - (nilai 0-255)
delay(3000);
analogWrite(9, 0); // motor 1 off
analogWrite(11, 0); // motor 2 off
delay(3000);
digitalWrite(7, HIGH); // relay1 on - MUNDUR
digitalWrite(5, HIGH); // relay2 on - MUNDUR
analogWrite(9, 125); // motor 1 on, half speed - (nilai 0-255)
analogWrite(11, 125); // motor 2 on, half speed - (nilai 0-255)
delay(3000);
analogWrite(9, 0); // motor 1 off
analogWrite(11, 0); // motor 2 off
delay(3000);
}
DAFTAR PUSTAKA
1. Http://www.immersa-lab.com/pengenalan-mikrokontroler.htm
2. http://www.immersa-lab.com/sejarah-mikrokontroler.htm
3. http://www.immersa-lab.com/jenis-jenis-mikrokontroler.htm
4. https://sintasintya.wordpress.com/2014/11/04/3-macam-dan-jenis-mikrokontroler-populer/
5. http://ndoware.com/sejarah-mikrokontroler-dan-mikroprosesor.html
6. http://www.immersa-lab.com/perbedaan-mikrokontroler-dan-mikroprosesor.htm
7. http://saung.igoscenter.org/kupas_tuntas_arduino#min.28x.2cy.29
8. Http://robomania.tokobagus.com

Anda mungkin juga menyukai