BAB II LANDASAN TEORI

advertisement
BAB II
LANDASAN TEORI
2.1.
MEKATRONIKA
Gambar 2.1 Diagram euler pembentukan ilmu mekatronika.
Istilah mekatronika muncul pada tahun 1969 di perusahaan Jepang
Yaskawa Electric Cooperation. Mekatronika saat itu terdiri dari ilmu
mekanika dan eletronika yang dikembangkan untuk aspek pada kecepatan,
dan ketelitian pada produksi jam, alat optik, dan sebagainya. Sekarang
mekatronika sudah menjadi disiplin ilmu baru yang menggabungkan tiga
ilmu yaitu ilmu Mekanika, ilmu Elektronika dan Informatika. Mekatronika
modern sudah mengembangkan empat ilmu rekayasa yaitu rekayasa
Mekanika, Elektronika, Komputer, dan Kontrol.
10
Mekatronika mengnyinpergikan kesatuan sistem dari sensor-sensor,
aktuator, pengkondisian sinyal, sumber tenaga, keputusan logika, dan
kontrol algoritma dalam pengolahan yang komplek diatas sistem komputer
perangkat keras dan perangkat lunak. Evolusi mekatronika akan terus
dipengaruhi oleh tiga faktor revolusi utama yaitu revolusi industri, revolusi
semikonduktor, dan revolusi informasi.
Revolusi industri cenderung dalam suatu perancangan sistem produksi
dan proses dengan aspek efisiensi tinggi terhadap konversi energi dengan
hasil semaksimal mungkin. Rekayasa mekanik akan meminimalkan faktor
kerugian konversi energi sehubungan dengan mekanika seperti toleransi,
inersia, dan gesekan.
Gambar 2.2 Varian mekanika dasar gir, rantai, dan tuas ungkit.
Revolusi semikondutor sudah semakin canggih sejak ditemukan
teknologi IC (integrated circuit) pada tahun 1949.
11
Gambar 2.3 Mikrokontroler ATMega328.
Sekarang IC sudah memiliki kemampuan yang terus meningkat dari sisi
kecepatan proses, ukuran semakin kecil, konsumsi daya semakin kecil, dan
biaya produksi lebih ekonomis. Teknologi Very Large Scale Integration
(VSLI) merubah IC menjadi generasi IC baru dan bermuculan istilah chip,
mikroprosesor, mikrokomputer, dan mikrocontroler. Tiga gambar IC diatas
sudah berteknologi VSLI dengan milyaran transistor tertanam dalam
sebuah chip. Perangkat keras tersebut sudah bisa diprogram kembali sesuai
keinginan pemakai melalui antarmuka berupa perangkat lunak.
Rpevolusi informasi sangat berkaitan dengan IC itu sendiri. IC sebagai
perangkat keras sedangkan informasi sebagai perangkat lunat. Keduanya
tidak bisa dipisahkan karena perangkat lunat sendiri sebagai antar muka
antara manusia dengan IC itu sendiri. Antar muka berfungsi untuk
membangun, mengatur, dan mengontrol IC sesuai dengan keinginan.
Mikrokontroler yang bisa diprogram kembali menawarkan kemampuan
serba guna dan fleksibel untuk aplikasi yang butuh kecepatan waktu dan
akurasi tinggi.
12
Gambar 2.4 Elemen-elemen kunci mekatronika.
Gambar elemen-elemen
mekatronika diatas menunjukkan bagaimana
hubungan atau integrasi antar elemen sistem informasi, sistem mekanika,
sistem elektrika, dan sistem komputer/elektronika menjadi disiplin ilmu
baru yaitu mekatronika. Perangkat keras ditunjukkan dalam blok garis
putus-putus dan sistem perangkat lunak terdiri dari simulasi dan
pemodelan, kontrol automatis, dan optimasi.
Mekatronika sangat berperan penting dalam kehidupan sehari-hari,
mulai dari
militer,
kedokteran,
pendidikan,
transportasi,
industri
pembuatan produk masal, alat rumah tangga pintar, rumah automatis dan
sebagainya.
2.2.
ROBOTIKA
Robotika merupakan bagian aplikasi dari ilmu mekatronika. Robotika
lebih menitik beratkan aspek kecerdasan buatan pada elemen sistem
informasi.
Robotika
memiliki kemampuan nalar
lebih kompleks
dibandingkan dengan program konvensional. Robotika mengumpulkan
data informasi dengan proses heuristis atau menganalistis dengan
perkiraan yang paling tepat dan mengecek ulang sebelum memberi
13
keputusan akhir. Sedangkan program konvensional berorientasi kepada
algoritme.
Robotika berhubungan dengan ilmu elektronika, rekayasa teknik, dan
perangkat lunak. Kata robot dikenalkan oleh penulis cekoslovakia yaitu
Karel Capek dalam proyek R.U.R (Rossum’s Universal Robots) pada
tahun 1920. Sekarang robotika sudah lebih dari 60 cabang dan lebih dari
20 jenis robot yang memberi kontribusi di berbagai bidang seperti
aerospace, biologi, ilmu komputer, rekayasa, fiksi, militer, psikologi,
filosofi, dan fisika.
Dari banyaknya tipe robot semua memiliki tiga persamaan dasar dari
aspek konstruksi yaitu robot mempunyai sistem mekanis, kelistrikan, dan
program komputer. Pertama, robot memiliki sistem mekanis yang fokus
pada mekanis dalam memecahkan solusinya. Misalnya robot harus
melintasi medan yang berlumpur, berbatu, licin, menanjak dan sebagainya
maka aspek rekayasa mekanis penting sekali. Aspek mekanis biasanya
berhubungan dengan aplikasi dunia nyata seperti angkat, bergerak,
membawa, terbang, berenang, berlari, berjalan, dan sebagainya. Kedua,
robot memiliki sistem kelistrikan hadir dalam bentuk sirkuit, pengawatan,
sensor-sensor, baterai dan sebagainya. Seperti memecahkan solusi untuk
melintasi medan berat diatas harus memiliki tenaga listrik untuk
menggerakkan sistem mekanisnya. Tenaga listrik bisa dari sumber tenaga
baterai. Meskipun bahan bakar adalah sumber tenaga dari mesin tetapi
masih memerlukan arus listrik untuk memproses sistem mesinnya seperti
pada mobil yang memiliki baterai. Kelistrikan digunakan kebanyakan
14
untuk kendali motor dalam pergerakan untuk kendali posisi, putaran dan
sebagainya. Ketiga, robot mengandung kode-kode program komputer.
Sebuah program menentukan kapan dan bagaimana melakukan sesuatu.
Seperti robot dalam contoh diatas akan melintas di medan sulit tetapi
aspek listrik dan mekanis saja tidak bisa menggerakan robot. Bahkan ada
remote
untuk menjalankan robot tidak akan berfungsi jika belum
diprogram. Program adalah otak robot. Sebaik apapun konstruksi mekanis
dan kelistrikan sistem robot jika program buruk maka kinerja robot ikut
buruk. Ada 3 jenis program robotika yaitu RC (Remote Control), AI
(Artificial Intelligence), dan hybird. Robot RC digerakan oleh perintah
dari media remote control untuk melakukan sesuatu. Sumber kendali
dilakukan oleh manusia melalui media remote control untuk memberi
perintah-perintah kepada robot. Robot AI berdasarkan program kecerdasan
buatan yang bisa berinteraksi sendiri terhadap lingkungan sekitarnya tanpa
campur tangan manusia dalam memecahkan masalah. Robot hybird
memiliki bentuk program gabungan dari program AI dan RC.
Robot diciptakan untuk tujuan tertentu dengan mengadopsi tindakan
manusia. Otak diperankan oleh mikrokontroler, energi tubuh diganti oleh
baterai, otot-otot tubuh diganti oleh actuator, pancaindra diganti oleh
sensor-sensor dan sebagainya. Kecerdasan buatan membuat perilaku robot
menjadi cerdas dan bahkan bisa lebih baik dari manusia pada aspek-aspek
tertentu.
15
Tabel 2.1 Perbedaan robot cerdas dengan manusia.
Kecerdasan Buatan
Manusia
 Bersifat permanen
 Lebih mudah diduplikasi dan
disebarkan
 Lebih murah
 Konsisten
 Dapat didokumentasi
 Lebih cepat
 Bertindak lebih baik
 Cepat mengalami perubahan
 Proses transfer dari manusia satu
ke lainnya butuh waktu lama
 Lebih mahal
 Sering berubah-ubah sifat
 Sulit direproduksi
 Lambat
 Kurang teliti
Gambar 2.5 Robot bermain catur dengan manusia.
Menurut John McCarthy, 1956, untuk mengetahui dan memodelkan
proses-proses berpikir manusia agar dapat meniru perilaku manusia.
Seperti manusia cerdas yang otaknya memiliki ilmu pengetahuan,
pengalaman, daya nalar, moral yang baik dan sebagainya. Robot cerdas
memiliki program seperti otak manusia cerdas. Program beperan penting
16
pada perilaku robot. Robot cerdas memiliki program kecerdasan buatan
yang berbeda dengan program konvensional yang melakukan tugas
tertentu. Tabel berikut menunjukkan perbedaan program kecerdasan
buatan dengan program konvensional.
Perbedaan
yang
mendasar
dari
kecerdasan
buatan
memiliki
pengolahan secara simbolik, penyelidikan berdasarkan prosedur analitis
yang diawali dari perkiraan yang tepat dan mengecek ulang sebelum
memberi keputusan dan struktur
sistem kontrol dengan sistem
pengetahuannya terpisah. Sedangkan program konvensional menggunakan
metode algoritme yang langkah-langkah terbatas.
Tabel 2.2 Perbedaan program kercedasan buatan dengan konvensional.
Dimensi
Kecerdasan Buatan
Program Konvensional
 Pengolahan
 Simbolik
 Algoritme
 Masukan
 Tidak harus lengkap
 Harus lengkap
 Penyelidikan
 Heuristis
 Algoritme
 Penjelasan
 Tersedia
 Tidak tersedia major
 Ketertarikan
 Pengetahuan
 Data dan informasi
 Struktur
 Terpisah antara kontrol  Kontrol terintegrasi
dan pengetahuan
dengan data
 Keluaran
 Tidak harus lengkap
 Harus tepat
 Perawatan dan
 Mudah karena sistem
 Umumnya susah
pembaruan
modul-modul
dilakukan
 perangkat keras
 Komputer
 Semua tipe
 Kemampuan
 Terbatas tetapi bisa
 Tidak ada
berpikir
ditingkatkan
17
Kecerdasan buatan lebih kompleks daripada konvensional, seperti
manusia cerdas membutuhkan proses belajar dan memakan waktu lama
untuk menjadi cerdas. Proses belajar ini bisa dikatakan pemrograman otak
manusia untuk bisa menjadi cerdas. Tetapi kecerdasan buatan bisa
diduplikasi dengan mudah sehingga setelah proses pemrograman yang
kompleks dan memakan waktu lama dan selanjutnya akan mudah untuk
diduplikasi. Kalaupun ada modifikasi, tidak perlu dari awal lagi tetapi
cukup direvisi, ditambah, dan diperbaiki guna meningkatkan kinerja yang
lebih baik.
2.3.
ROBOT PEMADAM API
Robot acuan untuk pengembangan robot pemadam api di dalam tugas
akhir ini adalah robot pelacak api yang sudah ada sebelumnya.
Gambar 2.6 Robot pelacak api.
18
Sistem kontruksi robot pelacak api seperti gambar diatas akan
dikembangkan lagi menjadi robot pemadam api. Pada bagian papan dasar
(badan) robot ini akan diganti yang lebih ringan tetapi tetap kuat. Kakikaki robot tetap memakai 3 roda. 1 roda roler bar untuk bagian depan dan
2 roda hidup. Pada bagian kaki roda hidup (dikople motor) robot ini masih
tidak sebaris antara sumbu roda kanan dengan kiri sehingga dampaknya
pada saat bergerak maju maka robot cenderung tidak lurus.
Kontruksi sensor tabrak pada robot ini masih kurang kokoh sehingga
sering
bergeser.
Dampak
dari
pergerseran
sensor
tabrak
akan
mempengaruhi sudut cakupan tabrak.
Kontruksi dan mekanik pada bagian sensor api dan servo motor masih
harus di tata ulang lagi karena pada bagian depan badan robot nanti akan
diletakkan rangka untuk motor kipas sebagai pemadam api.
Sistem kelistrikan robot ini nanti tidak banyak perubahan dari sisi
tegangan dan pengkabelan tetapi perubahan yang signifikan pada kapasitas
daya baterai dirubah ke daya yang lebih kecil yaitu baterai AA (nonrechargeable). Secara penyerapan daya dan beban total robot lebih kecil
karena beban baterai AA lebih kecil dari baterai robot ini.
Program pada robot ini masih perlu direvisi dan ditambah. Robot ini
hanya melacak api saja dan tidak bisa memadamkan api jadi untuk
mengembangkan menjadi robot pemadam api harus ditambah program
pemadam api. Penambahan program fungsi pemadam api untuk
melakukan kinerja proses pemadaman api dengan mekanik motor kipas
angin.
19
2.4.
MIKROKONTROLER
Mikrokontroler (disingkat MCU atau µC) adalah sebuah komputer
kecil yang dikemas dalam sebuah chip berisi inti prosesor, memori, dan
perangkat input/output yang bisa diprogam. Mikrokontroler dibuat untuk
aplikasi khusus atau disebut sistem benam (embedded). Contoh sistem
benam adalah mesin ATM, Telpon genggam, kamera digital, mesin foto
copy, mesin fax, remote control, kalkulator, mesin cuci, robot dll. Dalam
dunia robot, mikrokontroler seperti fungsi otak dalam tubuh manusia, jadi
robot tanpa mikrokontroler hanya seperangkat perangkat keras yang mati.
Sebuah mikrokontroler umumnya terdiri dari fitur-fitur berikut:

Central Processing Unit (CPU) rentang prosesor 8 bit hingga 64 bit.

Memori volatile (RAM) untuk simpan data.

ROM, EPROM, EEPROM, atau flash memory untuk program dan
sistem operasi parameter penyimpanan.

Diskrit input/output.

Analog input/output.

Serial input/output seperti serial port (UART).

Antarmuka serial komunikasi untuk interkoneksi sistem.

Timer, Counter, PWM, dan watchdog.

Clock (oscilator atau resonator).

Analog to Digital Converter (ADC) dan Digital to Analog Converter
(DAC).

Sirkuit pemrograman dan mendukung debug.
20
Gambar 2.7 Arsitektur umum mikrokontroler.
CPU berperan sebagai otak mikrokontroler. CPU bertugas memproses
data sesuai intruksi-intruksi program pemakai seperti algorime logika
termasuk operasi aritmetika penambahan, pengurangan, perkalian,
pembagian dan sebagainya.
Memori (ROM) digunakan untuk menyimpan instruksi atau kode
program. Jenis memori ini adalah non-volatile yang data akan tetap ada
meskipun sumber daya hilang. EPROM (Erasable Programmable Read
Only Memory) adalah jenis memori yang bisa dihapus dan diprogram
kembali. Untuk menghapus isi data memori EPROM menggunakan sinar
ultraviolet (UV). EPROM masih kategori mahal dalam proses program
kembali memori. EEPROM (Electricaly Erasable Programmable Read
Only Memory) adalah jenis memori yang dihapus secara elektrik. Kerugian
EEPROM adalah membutuhkan waktu lama untuk memprogram kembali
memori. FLASH adalah memori EEPROM tetapi lebih cepat dihapus.
21
Memori (RAM) digunakan hanya sepanjang eksekusi program. Jenis
memori ini volatile yaitu isi data memori akan hilang jika sumber daya
listrik hilang.
Input/Output port digunakan untuk menerima data (input) dan
mengirim data (output) ke peralatan luar seperti saklar, sensor, LED, motor
dan sebagainya. I/O port dibagi dua tipe yaitu digital dan analog. Port
digital digunakan untuk menerima dan mengirim data digital atau diskrit
data yaitu 0 volt (OFF) atau 5 volt (ON). Port analog digunakan untuk
menerima dan mengirim data analog yaitu rentan nilai tegangan dari 0 volt
– 5 volt.
Timer digunakan untuk ukuran waktu dalam intruksi program dan
pengukur interval dalam pemakaian intruksi atau kode program seperti
penggunaan intruksi
time on delay, time off delay, counter dan
sebagainya.
ADC (Analog to Digital Converter) dan DAC (Digital to Analog
Converter) digunakan untuk mengubah data analog menjadi data digital
(basis bit) atau sebaliknya. Sensor analog seperti detektor lidah api (flame
sensor) akan mengirim data analog 0 volt – 5 volt ke ADC kemudian
dirubah menjadi data digital dengan rentan resolusi 10 bit atau 102 (1024)
dengan kata lain nilai analog 0 volt – 5 volt sama dengan nilai resolusi 01023.
Serial port digunakan untuk komunikasi data serial dengan sistem
perangkat luar seperti modem, wifi, LAN, USB dan sebagainya. Yang
paling utama adalah digunakan sebagai koneksi antarmuka pengguna
22
untuk mengisi program mikrokontroler itu sendiri. Komputer Desktop atau
Laptop bisa dihubungkan dengan serial port ini untuk melakukan
antarmuka
pemrograman
mikrokontroler.
Beberapa
pabrikan
mikrokontroller sudah menawarkan kemudahan dalam antarmuka yang
langsung dihubungkan ke komputer. Tetapi ada yang masih membutuhkan
perangkat keras boatloader dan perangkat lunak untuk melakukan
antarmuka dengan mikrokontroler.
Perangkat
lunak
digunakan
sebagai
alat
antarmuka
dengan
mikrokontroler. Dengan alat antarmuka ini dapat melakukan pemrograman
sesuai keinginan pengguna. Pabrikan mikrokontroler umumnya sudah
memberi gratis perangkat lunak antarmuka ini untuk alat pemrograman.
Umumnya
mikrokontroler
sudah
berbasis
open
source
dengan
menggunakan bahasa C dengan kata lain semakin memberi fitur untuk
kemudahan kepada para penggunanya. Sekarang sudah lebih dari 30
pabrikan mikrokontroler untuk merebut pasar teknologi IC.
Bahasa pemrograman berfungsi sebagai kode-kode intruksi atau
perintah dari pengguna agar mikrokontroler bisa melakukan apa yang
diinginkan. Dulu, pemrograman menggunakan bahasa assembly yang sulit
dipahami, memakan waktu lama, dan membosankan. Tetapi sekarang
bahasa pemrograman sudah mudah dipahami oleh manusia atau disebut
bahasa tingkat tinggi. Bahasa tingkat tinggi yang populer untuk
mikrokontroler adalah bahasa C.
Banyak aplikasi yang berbasis dengan mikrokontroler. Mikrokontroler
adalah komputer sangat kecil yang lengkap sehingga memberi kemudahan
23
untuk membangun sebuah aplikasi. Kelebihan utama sistem berbasis
mikrokontroler adalah murah dan kemudahan perancangan prototipe.
2.5.
ARDUINO UNO R3
Gambar 2.8 Single board Arduino UNO.
Arduino adalah sebuah perangkat keras single board mikrokontroler
open source dengan kata lain sistem bebas dimodifikasi. Sebuah single
board komputer kecil dengan sistem minimum, berdiri sendiri, bisa
komunikasi dengan perangkat lain, dan mudah diprogram. Standar
Arduino sudah termasuk bootloader sehingga hanya dikoneksi dengan
komputer lewat kabel USB langsung bisa diprogram dengan tool software
kecil dan gratis. Secara keseluruhan, kelebihan Arduino dibandingkan
dengan mikrokontroler yang lain adalah lebih murah, lebih mudah, lebih
cepat, dan bebas dimodifikasi (open source).
24
Arduino
telah
mengeluarkan
banyak
model
single
board
mikrokontroler. Tugas akhir ini menggunakan Arduino UNO R3 dengan
mikrokontroler AVR ATMega328 buatan Atmel. ATMega328 sudah
mengusung arsitektur RISC (Reduce Instruction Set Computer) yang lebih
cepat dalam proses eksekusi instruksi-instruksi program dibandingkan
dengan arsitektur CISC (Completed Instruction Set Computer).
Gambar 2.9 Arsitektur mikrokontroler AVR ATMega328.
Arsitektur memori mengadopsi arsitektur Harvard yang memisahkan
memori kode program dengan memori data sehingga unjuk kerja parales
25
lebih optimal. Instruksi - instruksi dalam memori program dieksekusi
dalam satu alir tunggal, dimana pada saat satu instruksi dikerjakan
instruksi berikutnya sudah diambil dari memori program. Konsep inilah
yang memungkinkan instruksi-instruksi dapat dieksekusi dalam setiap satu
siklus clock.
ATMega328 memiliki 32 x 8-bit register serba guna untuk
mendukung operasi pada ALU (Arithmatic Logic unit) dalam satu siklus. 6
dari register serbaguna ini dapat digunakan sebagai 3 buah register pointer
16-bit pada mode pengalamatan tidak langsung untuk mengambil data
pada ruang memori data.
Ketiga register pointer 16-bit ini disebut dengan register X (gabungan
R26 dan R27), register Y (gabungan R28 dan R29), dan register Z
(gabungan R30 dan R31). Hampir semua instruksi AVR memiliki format
16-bit. Setiap alamat memori program terdiri dari instruksi 16-bit atau 32bit.
Selain register serba guna di atas, juga terdapat register lain dengan
teknik memory mapped I/O selebar 64 byte. Beberapa register ini
digunakan untuk fungsi khusus antara lain sebagai register kendali Timer /
Counter, Interupsi, ADC, USART, SPI, EEPROM, dan fungsi I/O lainnya.
Register - register ini menempati memori pada alamat 0x20h – 0x5Fh.
2.5.1 Spesifikasi ATMega328:

130 macam instruksi yang hampir semuanya dieksekusi dalam satu
siklus clock.
26

32 x 8-bit register serba guna.

Kecepatan mencapai 16 MIPS dengan clock 16 MHz.

32 KB Flash memory dan pada arduino memiliki bootloader yang
menggunakan 2 KB dari flash memori sebagai bootloader.

Memiliki EEPROM (Electrically Erasable Programmable Read
Only Memory) sebesar 1KB sebagai tempat penyimpanan data
semi permanent karena EEPROM tetap dapat menyimpan data
meskipun catu daya dimatikan.

Memiliki SRAM (Static Random Access Memory) sebesar 2KB.

Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM
(Pulse Width Modulation) output.

Master / Slave SPI Serial interface.
Gambar 2.10 Pemetaan pin ATMega328.
27
Ringkasan spesifikasi single board Arduino UNO R3 sebagai berikut:
Mikrokontroller
: ATMega328
Kecepatan clock
: 16 MHz
Flash memory
: 32 KB (0.5 KB alokasi bootloader)
SRAM
: 2 KB
EEPROM
: 1 KB
Kanal digital input/output
: 14 kanal (dipilih secara program)
Kanal analog input
: 6 kanal
Kanal analog PWM
: 6 kanal 8-bit (490Hz dan 980 Hz)
Arus digital input/output
: 40 mA per kanal
Arus pin 3.3V DC
: 50 mA per kanal
Tegangan kerja
: 5V DC
Catu daya
: 7-12V DC
Mikrokontroler ATMega328 ditanam dalam single board Arduino
UNO R3 sebagai pengendali utama sehingga spesifikasi utama dari
ATMega328 tidak banyak berubah hanya penambahan fitur yaitu konektor
serial, konektor catu daya, LED indikator, bootloader, dan tombol reset.
Mikrokontroler ATMega328 sebagai otak single board Arduino UNO
R3. Single board Arduino UNO R3 ini memberi kemudahan dalam
rekayasa automatisasi berbasis ATMega328. Selain memiliki fitur - fitur
ATMega328 diatas, single board ini sudah dilengkapi bootloader,
28
konektor USB, konektor power supply 5 volt, kepala ICSP, dan tombol
reset.
Gambar 2.11 Single board Arduino UNO R3.
1.
Konektor USB tipe B.
2.
Konektor DC power supply 5.5 x 2.1 mm
3.
Mikrokontroler ATMega328
4.
Chip komunikasi ATmega16U2
5.
Kristal 16 MHz
6.
Tombol reset
7.
LED indikator power ON
8.
LED indikator proses komunikasi TX/RX
9.
LED indikator proses uploading program
10. Pin-pin catu daya 3.3 V, 5 V, Vin, dan grounding
11. Pin-ping Analog Input
12. Pin-pin komunikasi serial TX dan RX
29
13. Pin-pin Digital Inputs/Output. Simbol "~" depan nomor pin untuk
PWM output.
14. Pin nilai rentang analog input AREF dan Ground.
15. ICSP untuk Atmega328
16. ICSP untuk antarmuka USB
Konektor USB (1) Arduino UNO R3 berfungsi untuk koneksi serial
komunikasi antarmuka ke perangkat luar. Hal ini bisa digunakan sebagai
antarmuka ke komputer selama proses pemrograman. USB ini akan
memberi catu daya 5 volt DC yang cukup untuk menghidupkan sistem
single board Arduino dengan aplikasi output beban kecil. Berbeda dengan
mikrokontroler lain yang masih membutuhkan bootloader supaya bisa
melakukan pemrograman. Konektor USB ini juga bisa digunakan untuk
fungsi komunikasi serial seperti modem, printer, dan sebagainya.
2.5.2. Catu daya
Arduino UNO R3 menyediakan tiga sistem koneksi catu daya yang
automatis memilih sendiri yaitu konektor USB (1), konektor DC power
supply (2), dan pin-pin power Vin/3.3V/5V (10). Sistem akan memilih
secara automatis dari tiga koneksi catu daya.
Konektor USB bisa memberi tegangan standar 5V DC dari sumber
daya perangkat luar seperti komputer. Catu daya dari USB cocok untuk
aplikasi dengan beban kecil seperti LED, LCD dan sebagainya. Tetapi
tidak untuk aplikasi dengan beban besar seperti motor, servo, stepper dan
30
sebagainya karena putaran motor terlalu pelan dengan arus terbatas dari
catu daya USB.
Gambar 2.12 Konektor DC sistem Arduino.
Konektor DC power supply (2) adalah standar konektor DC 5.5 x 2.1
mm (female) yang langsung dihubungkan dengan konektor DC (male)
dari baterai atau adaptor dengan rentang tegangan kerja 6-20 volt.
Rekomendasi tegangan kerja ada di rentang 7-12 volt karena jika kurang
dari 7 volt maka sistem tidak stabil dan lebih dari 12 volt maka regulator
menjadi panas. Jika kondisi panas ini berlangsung lama akan
menyebabkan kerusakan pada regulator itu sendiri dan komponen single
board yang lain.
Pin Vin adalah jenis pin pilihan dari konektor jenis jack power supply
diatas. Arduino memberi dua pilihan jenis konektor untuk memberi
kemudahan dalam koneksi catu daya dari luar. Rentang tegangan yang
diperbolehkan sama yaitu 7-12 volt.
Pin 3.3 V adalah tegangan yang didapat dari chip FTDI. Arus
maksimum adalah 50 mA.
31
Pin 5 V adalah tegangan kerja untuk sistem Arduino termasuk
mikrokontroler, sensor serta perangkat luar yang interkoneksi langsung
dengan kanal-kanal input / output.
Pin Grounding sebagai koneksi pentanahan atau kutub negatif (-) catu
daya.
2.5.3.
Kanal Input dan Output
Arduino UNO R3 menyediakan 14 pin kanal digital I/O (13) yang
masing-masing bisa dipakai untuk kanal input atau output. Pemilihan
fungsi input atau output diatur (setup) atau dideklarasi dalam penulisan
program yang nanti akan diulas pada bagian pemrograman. Struktur dalam
bahasa C untuk mendeklarasi fungsi sebuh pin terdiri dari kode syntax,
nomor pin, dan fungsi input/output. Semua kanal ini bekerja pada tegangan
5V DC dan maksimum arus 40 mA.
Pin serial (12) adalah pin 0 (RX) dan pin 1 (TX). Digunakan untuk
menerima (RX) dan mengirim (TX) TTL data serial. Pin ini terhubung
dengan pin-pin chip ATMega16U2 yang berfungsi sebagai pemroses data
serial komunikasi USB ke TTL.
Pin INT0 & INT1 interupsi eksternal (13) adalah pin 2 dan pin 3. Pin
ini dapat dikonfigurasikan untuk trigger sebuah interupsi low value, rising
atau falling edge atau perubahan nilai.
Pin PWM (13) adalah pin-pin ~3, ~5, ~6, ~9, ~10, dan ~11.
Mendukung 8-bit output PWM.
32
Pin Serial Peripheral Interface (SPI) (13) adalah pin-pin 10 (SS), 11
(MOSI), 12 (MISO), 13 (SCK). Pin ini mendukung komunikasi SPI
dengan menggunakan fungsi SPI library.
Pin LED (13) adalah pin 13. Ada LED (9) terpasang pada board
dibuat untuk indikator status pin 13. Ketika pin 13 bernilai HIGH, LED
hidup, ketika pin LOW, LED mati.
Pin analog input (11) adalah pin-pin A0, A1, A2, A3, A4, dan A5.
Masing-masing kanal mempunyai resolusi 10 bit (1024). Rentang
tegangan input yang diperbolehkan adalah 0 volt sampai 5 volt. Untuk
rentang yang spesifik bisa menggunakan pin AREF (14) dengan
menggunakan syntax fungsi analog reference.
Pin AREF (14) adalah referensi tegangan pin analog input dengan
menggunakan syntax fungsi analog reference. AREF (Analog Read
Reference) akan diberlakukan sebagai tegangan referensi akurat.
Pin TWI/I2C (11) adalah pin-pin A4 (SDA) dan A5 (SCL). Pin SDA
(data line) dan SCL (clock line) berfungsi untuk komunikasi serial ke
komponen TWI / I2C dengan didukung fungsi Wire library.
Pin reset membiarkan tombol reset pada shield aktif.
2.5.4. Komunikasi serial
Arduino UNO R3 memiliki beberapa varian untuk komunikasi serial
dengan komputer, Arduino lain, mikrokontroler lain, dan sebagainya.
ATMega328 sudah diintegrasi komunikasi serial UART TTL (5V) pada
pin 0 (RX) dan pin 1 (TX).
33
Arduino sudah ditanam chip ATMega16U2 untuk proses komunikasi
serial melalui konektor USB. Saat dikoneksi dengan komputer maka
Arduino akan dikenal sebagai COM port virtual oleh sistem operasi
Windows. 16U2 Firmware memakai standar drive COM yang sudah
dibawa oleh OS Windows. Tetapi untuk file .inf masih diperlukan. Aplikasi
arduino membawa sebuah monitor serial yang bisa memberi informasi
secara tekstual proses komunikasi data yang dikirim dari dan diterima ke
Arduino. LED indikator akan berkedip ketika data sedang dikirim melalui
USB ke 16U2. Indikasi ini tidak berlaku untuk proses komunikasi serial
melalui koneksi pin 0 dan 1.
Perangkat lunak serial library mendukung komunikasi serial melalui
koneksi pin digital untuk semua keluarga Arduino. ATMega328
mendukung komunikasi serial I2C/TWI dan SPI.
2.5.5. Shield
Shield adalah papan sirkuit untuk menambah kemampuan Arduino.
Shield mengadopsi sistem modular sehingga mudah dipasang dengan
hanya menancapkan diatas arduino tanpa solder atau pengawatan
tambahan.
Shield berfungsi untuk menambah fitur baru pada single board
Arduino UNO R3 yang tidak bisa disediakan oleh sistem minimum seperti
GSM, GPS, LCD, TFT, WiFi, RFID, ethernet, drive motor, stepper, servo,
proto, MP3, data logging, dll.
34
Gambar 2.13 Shield modular.
Gambar 2.14 Varian shield motor drive dan WiFi.
Shield ini tidak hanya dikeluarkan oleh Arduino sendiri tetapi bisa
diproduksi oleh pihak ketiga. Inilah kelebihan sistem open source
sehingga Arduino menjadi fleksibel dan power full. Setiap shield
dilengkapi perangkat lunak library yang bisa didownload secara gratis di
situs-situs yang mengeluarkan perangkat keras shield.
35
2.6.
PERANGKAT-PERANGKAT INPUT / OUTPUT (TRANSDUCER)
Perangkat-perangkat input atau sensor adalah perangkat keras yang
merubah nilai perubahan fisik atau metafisik menjadi nilai elektris seperti
saklar batas, sensor cahaya dan sebagainya. Nilai elektris dibagi menjadi
dua kategori yaitu digital dan analog. Nilai elektris masukan dari sensorsensor ini dikenal dengan istilah sinyal digital input dan analog input.
Sinyal digital (diskrit) hanya mengenal variabel nyala atau hidup
(ON/OFF atau HIGH/LOW). Sinyal analog adalah perubahan variabel
secara halus.
Gambar 2.15 Sinyal digital.
Gambar 2.16 Sinyal analog.
36
Sinyal digital input dapat dihasilkan dari saklar, tombol, fotoelektris,
enkoder dan sebagainya. Sinyal analog input dapat dihasilkan dari
potensiometer, fototransistor, termotransistor, kopling termik, termistor,
pengukur regangan, dan sebagainya.
Perangkat-perangkat output adalah perangkat keras yang merubah
nilai elektris menjadi nilai perubahan fisik atau metafisik. Nilai elektris
dibagi menjadi dua kategori yaitu digital dan analog. Nilai elektris
keluaran ini dikenal dengan istilah sinyal digital output dan discrete.
Sinyal digital (diskrit) hanya mengenal variabel nyala atau hidup
(ON/OFF atau HIGH/LOW). Sinyal analog adalah perubahan variabel
secara halus. Sinyal digital output dapat dikirim ke perangkat-perangkat
output seperti LED, lampu, bel, relay, kontaktor, servo, motor dan
sebagainya.
Tugas akhir ini akan menggunakan perangkat-perangkat input/output
sebagai berikut:
2.6.1.
Shield Motor L293
Shield motor memiliki dua kanal output PWM untuk menggerakan
dua motor DC. Shield motor menggunakan chip L293 yang memberi arus
keluaran maksimal 1 ampere tiap kanal. Kendali kecepatan dikontrol oleh
PWM output arduino. Fungsi enable/disable untuk mengaktifkan shield
motor ini ditentukan oleh sinyal digital output dari arduino. Dua kendali
motor ini masing-masing menggunakan PWM output pin 6 dan 9, dan
digital output pin 7 dan 8.
37
Gambar 2.17 Shield motor L293.
Shield motor disebut Roboduino Motor Shield yang dikeluarkan oleh
DFrobot. Arduino sendiri juga mengeluarkan Arduino Motor Shield yang
menggunakan chip L298 dan perbedaan alokasi pin-pin kendali motor
PWM output dan digital.
Jika shield motor dihubungkan dengan motor maka disarankan
menggunakan sumber catu daya eksternal dari konektor DC dengan arus
cukup besar. Karena sumber daya dari konektor USB tidak mampu
menggerakkan putaran motor secara aktual.
Shield motor L293 adalah sebuah drive motor DC yang dapat
mengatur kecepatan dan arah putaran motor DC. Kecepatan motor diatur
oleh PWM analog ouput Arduino UNO R3 melalui pin masukan L293 6
dan 9. Arah putaran motor dikontrol oleh L293 dengan mengadopsi prinsip
kerja H-Bridge. Prinsip kerja H-Bridge adalah rangkaian yang terdiri dari
4 saklar dan 1 motor DC. Prinsip dasar pembalik putaran motor DC adalah
merubah kutub-kutub polaritas tegangan masukan atau arah arus yang
38
menuju kumparan magnet motor. Pembalik arah arus DC dapat dilakukan
dengan 4 saklar yang dirangkai membentuk seperti jembatan huruf H.
Gambar 2.18 Prinsip kerja H-Bridge.
Empat saklar rangkaian konvensional diatas telah diganti dengan TTL
(Transitor-Transitor Logic) kemudian dikemas menjadi IC drive motor
L293. Gambar dibawah menunjukkan pengawatan kaki-kaki IC L293
secara diagram. Grup motor 1 memakai kaki 1, 2, 3, 4, 5, 6, 7, dan 8. Grup
motor 2 memakai kaki 9, 10, 11, 12, 13, 14, 15, dan 16.
Gambar 2.19 Diagram pengawatan kaki-kaki IC L293.
39
Tabel 2.3 Alokasi pin shield motor L293.
Pin
Fungsi
Digital 4
Kendali arah Motor 2
Digital 5
Kendali PWM Motor 2
Digital 6
Kendali PWM Motor 1
Digital 7
Kendali arah Motor 1
Kaki 1 untuk masukan sinyal PWM output pin 6 dari Arduino. Sinyal
PWM ini juga sebagai pemicu enable TTL 1 dan TTL 2 agar bisa operasi.
Sinyal PWM berfungsi sebagai pengendali kecepatan motor. Sebelumnya
program sudah mendeklarasi untuk pin 6 sebagai kanal PWM output dan
diberi variable nilai kecepatan. Sejauh ini sinyal PWM sudah masuk dan
mengaktifkan (enable) TTL 1 dan TTL 2 tetapi motor M1 belum berputar
karena sinyal DIR pada kaki 2 dan 7 belum masuk. Jika dalam program
ditulis TRUE untuk kaki 2 dan secara automatis kaki 7 menjadi FALSE
melalui gerbang NOT maka motor M1 berputar ke kanan. Sebaliknya jika
program ditulis FALSE untuk kaki 2 dan automatis kaki 7 menjadi TRUE
via gerbang NOT maka motor M1 berputar ke kiri.
Shield motor juga ditanam IC 74CH00 kuartet gerbang NAND yang
berfungsi untuk merubah logika sinyal digital output sebagai saklar arah
putaran dari Arduino menjadi 2 sinyal berlawanan agar tidak banyak
memakai kanal digital output dan mencegah variable yang sama dalam
pengaktifan 2 TTL.
40
Gambar 2.20 Pengawatan internal IC 74CH00 kuartet gerbang NAND.
Shield motor memiliki 4 LED yang 2 LED berwarna hijau dan merah
untuk indikasi arah putar pada tiap motor. Jika motor berputar arah kanan
maka lampu LED hijau menyala. Jika motor berputar ke kiri maka lampu
LED merah menyala. Hal ini berlaku sama pada LED-LED motor M1 dan
M2. Untuk lebih detail rangkaian pengawatan shield motor L392 ini bisa
melihat sirkuit diagram di bagian lampiran.
2.6.2. Flame Sensor
Flame sensor berfungsi untuk mendeteksi api atau sumber cahaya
dengan panjang gelombang cahaya 760 nm ~ 1100 nm. Sensor api sangat
penting pada robot pemadam kebakaran karena sensor api ini akan menjadi
mata robot untuk melihat api besar maupun kecil dengan sudut pandang
60⁰. Sensor api bisa bekerja normal pada suhu -25 ⁰ celcius sampai 85 ⁰
celcius.
41
Flame sensor menggunakan phototransistor YG1006 berkecepatan
tinggi dan sensitif tinggi. Jenis transistor NPN. Material dasar memakai
silicon yang dikemas standar 5 mm menyerupai bentuk LED.
Gambar 2.21 Flame sensor dan kabel sinyal analog.
Prinsi kerja sensor api adalah sebuah transistor yang peka terhadap
cahaya. Besar kecil cahaya akan mempengaruhi arus yang mengalir di
kaki-kaki sensor api. Perubahan arus akan menjadi sinyal analog lalu
dikirim ke kanal analog input (pin 0, 1, 2, 3, 4, 5). Transistor peka cahaya
ini disebut phototransistor.
Gambar 2.22 Simbol phototransistor.
42
Gambar diatas menunjukkan prinsip kerja sebuah phototransistor.
Kaki basis terbuat dari material silicon yang peka terhadap gelombang
cahaya infrared dari 760 nm ~1100 nm. Seperti transistor pada umumnya
jika cahaya datang mengenai silicon (basis) maka terjadi perubahan nilai
arus yang mengalir dari kolektor ke emitor. Cahaya terang menghasilkan
arus besar sedangkan cahaya redup menghasilkan arus kecil.
Sensor api ini dirancang untuk pemakaian dalam gedung yang tidak
ada sinar matahari dan lampu halogen. Tutup pintu dan jendela supaya
cahaya matahari tidak langsung mengenai sensor api. Lampu halogen
diarahkan ke langit-langit atau dimatikan. Hal ini untuk mencegah sensor
kebanjiran cahaya infrared dari cahaya matahari dan lampu halogen.
Spesifikasi flame sensor buatan DFrobot :
VCC
: 3.3V ~ 5V
Cakupan deteksi
: 20 cm (4.8V) ~ 100 cm (1V)
Cakupan bandwidth
: 760 nm ~ 1100 nm
Waktu respon
: 15 µs
Interface
: Analog
Pengawatan sensor api mudah sekali dan sudah disertakan kabel
dalam paket pembelian. Warna kabel biru untuk dihubungkan dengan pin
salah satu 0~5 dari kanal analog input. Kabel warna merah dihubungkan
ke pin power 5V. Kabel warna hitam dihubungkan ke pin grounding GND.
Spesifikasi dan sifat phototransistor YG1006 bisa dilihat di bagian
lampiran.
43
Untuk membaca nilai dari sensor harus mendeklarasikan pin yang
dipakai. Penulisan deklarasi adalah tipe data-nama register = analogRead
(A0). Tipe data yang dipakai adalah integer (0-255). Nama register adalah
nama identitas untuk register sensor. = analogRead (A0) adalah struktur
perintah bahasa C untuk membaca nilai analog di pin A0 lalu simpan
(=).Pembahasan lebih lanjut tentang penulisan bahasa C akan dibahas pada
bagian pemrograman.
2.6.3. Micro Servo
Micro servo berfungsi untuk memutar flame sensor sesuai dengan
posisi sudut yang dinginkan. Micro servo yang dipilih adalah SG90 jenis
mikro yang cukup untuk memutar flame sensor yang bebannya ringan.
Servo SG90 bisa berputar 180⁰.
Gambar 2.23 Micro servo.
Servo SG90 termasuk jenis servo sederhana yang berguna untuk
aplikasi ringan seperti prototipe robot, radio kontrol mobil, perahu, kapal
dll.
44
Spesifikasi servo motor SG90 sebagai berikut:

Kecepatan (no load)
: 0.12 seconds / 60⁰ (4.8V)

Torsi
: 1.6 kg / cm (4.8V)

Suhu operasi
: -30⁰ C ~ +60⁰ C

Dead Set
: 7 microseconds

Tegangan kerja
: 4.8V-6V

Arus kerja
: < 500mA

Panjang kabel
: 180 mm

Ukuran
: 22mm x 12.5mm x 29.5mm

Berat
: 9 gram
Komponen utama motor servo terdiri dari drive gear, motor,
potensiometer, dan control circuit.
Gambar 2.24 Komponen-komponen motor servo.
Drive gear berfungsi untuk mengurangi kecepatan motor. Aplikasi
motor servo khusus untuk menentukan posisi sehingga kecepatan motor
45
dan berputar terus-menerus tidak perlu. Motor berfungsi sebagai
penggerak sistem servo. Jenis motor DC yang sering dipakai untuk sistem
motor servo karena mudah dikendalikan. Potensiometer sebagai sensor
keluaran putaran drive gear. Perubahan resistansi sebagai konversi putaran
menjadi sinyal feedback ke control circuit. Sirkuit kontrol sebagai
pengendali motor untuk berputar pada posisi yang diinginkan.
Prinsip kerja motor servo berbasis sistem kontrol close loop. Empat
komponen utama yang dijelaskan masing-masing fungsinya diatas jika
dirangkai maka membentuk sistem kontrol close loop seperti gambar
dibawah. Sirkuit kontrol disimbolkan sebagai penguat deteksi eror AMP-A
yang menerima 2 sinyal referensi yaitu REF-OUT dan REF-IN. Jika AMPA mendeteksi 2 sinyal dari REF-OUT dan REF-IN ada perbedaan maka
AMP-A mengoperasikan motor.
Gambar 2.25 Konfigurasi prinsip kerja motor servo.
46
Motor akan memutarkan gir-gir dan automatis potensiometer ikut
berputar. Jika potensiometer berputar akan terjadi perubahan sinyal REFOUT karena perubahan resistansi. AMP-A kembali mendeteksi perubahan
sinyal REF-OUT dibandingkan dengan sinyal REF-IN. Jika kedua sinyal
ini dideteksi sama maka AMP-A memberhentikan motor. Dengan kondisi
ini, AMP-A menunggu sinyal REF-IN selanjutnya. Jika sinyal REF-IN
diberi sinyal dengan nilai yang berbeda maka AMP-A kembali mendeteksi
2 sinyal yang berdeda sehingga AMP-A mengoperasikan motor kembali
sampai AMP-A kembali mendeteksi 2 sinyal menjadi sama.
Sinyal REF-IN dihubungkan dengan pin kanal PWM output dari
Arduino. Kanal PWM output akan membangkikan sinyal diskrit dengan
variasi lebar pulsa (duty cycle) yang nanti dipakai sebagai sinyal referensi
(REF-IN) oleh sirkuit kontrol untuk menentukan posisi sudut motor servo.
Gambar 2.26 Variasi lebar pulsa (duty cycle) penentu sudut motor servo.
47
Sirkuit kontrol akan memeriksa sinyal diskrit REF-IN dari kanal
PWM output lalu mengendalikan motor berdasarkan sinyal itu. Perhatikan
gambar diatas, jika sinyal memiliki duty cycle selama 1,5 ms maka servo
berputar ke posisi 90⁰. Jika waktu duty cycle selama 2 ms maka servo
berputar ke posisi 180⁰. Jika waktu duty cycle selama 1 ms maka servo
berputar ke posisi 0⁰. Pada contoh ini menjelaskan lebar pulsa antara 1 ms
sampai 2 ms berbanding lurus dengan sudut antara 0⁰ sampai 180⁰.
Sehingga untuk menentukan sudut yang lebih spesifik dengan cara
menentukan lebar pulsa yang sesuai.
Gambar 2.27 Lebar pulsa sinyal diskrit dan formula lebar pulsa.
Arduino telah menyediakan servo library untuk kendali motor servo
agar pengguna lebih mudah dalam menulis programnya. Jika akan
menentukan sudut 90⁰ sudut yang diinginkan, maka pada penulisan
48
program menulis angka 90 pada kode syntax. Pembahasan syntax motor
servo lebih detail akan dibahas pada bagian pemrograman.
2.6.4. Crash Sensor
Crash sensor atau sensor tabrak digunakan untuk memberhentikan
motor jika sensor menabrak penghalang seperti tembok dll. Sensor tabrak
adalah sebuah tombol batas dengan kontak terbuka (OPEN). Prinsip kerja
sensor tabrak seperti tombol pada umumnya dirangkai dengan tuas
mekanis. Jika pada bagian tuas menyentuh benda maka secara otomatis
tuas menekan tombol dan kontak berubah pada kondisi tertutup (CLOSE).
Gambar 2.28 Konstruksi tombol batas atau sensor tabrak.
Sensor tabrak diletakkan pada posisi yang berpotensi terjadi benturan
pada
badan
robot
disaat
bergerak.
Robot
prototipe
sederhana
membutuhkan minimal 2 sensor tabrak yang diletakkan di posisi yang
paling sering terjadi tabrakan. Robot pemadam kebakaran dalam tugas
akhir ini mempunyai 2 sensor tabrak yang diletakkan pada bagian depan
sudut kiri dan kanan.
49
Gambar 2.29 Sensor tabrak (crash sensor).
Tiap sensor tabrak mengambil 1 kanal digital input. Kedua sensor
tabrak tidak bisa dirangkai paralel menjadi satu kanal masukan karena tiap
sensor tabrak mempunyai algoritme program yang berbeda. Jika sensor
kiri menabrak benda maka algoritme program mengarahkan robot maju
arah kanan, sebaliknya jika sensor kanan menabrak maka algoritme
program mengarahkan robot maju ke arah kiri.
Semakin banyak menggunakan sensor tabrak akan menambah
kepekaan robot terhadap benturan pada sisi-sisi badan robot tetapi perlu
diperhatikan juga alokasi pemakaian kanal digital input akan ikut
bertambah.
2.6.5. Fan Motor
Fan Motor atau motor kipas angin ini digunakan untuk memadamkan
api. Motor kipas angin ini menggunakan motor DC dengan magnet
permanen sehingga torsi yang dihasilkan motor relatif kecil. Magnet
permanen juga tidak menimbulkan rugi-rugi panas.
50
Gambar 2.30 Konstruksi motor DC magnet permanen.
Prinsip kerja motor DC adalah jika sepotong kawat dialiri arus listrik
terletak di antara kutub magnet berlawanan, maka sepotong kawat tersebut
akan bergerak. Hal ini disebabkan oleh adanya gaya Lorentz di antara
kutub tersebut. Arah gerak kawat, arah arus, dan arah gaya ditentukan oleh
kaidah tangan kiri. Jika jari jempol membentuk sudut 90º dengan empat
jari yang lain maka arah tunjuk jempol adalah arah gerak kawat, arah
empat jari adalah arah arus listrik, dan arah masuk ke telapak tangan
adalah arah garis gaya. Arah medan magnet adalah dari kutub utara ke
arah kutub selatan. Dengan fenomena kaidah arah tangan kiri ini bisa
menghasilkan konversi daya listrik menjadi daya mekanik atau dikenal
dengan motor DC.
51
Gambar 2.31 Prinsip kerja putaran motor DC.
Gambar 2.32 Kipas angin (Fan).
Kipas angin ini diletakkan pada bagian depan robot. Pengendalian
kipas angin ini akan menyala jika badan robot sudah dekat dengan api
dengan jarak tertentu yang aman.
52
2.7.
PERANGKAT LUNAK PENGEMBANG (ARDUINO IDE)
Arduino adalah platform komputer open-source berbasis pada single
board mikrokontroler sederhana dan lingkungan pengembangan penulisan
program
untuk
board
mikrokontroler.
Integrated
Development
Environment (IDE) adalah perangkat lunak sebagai alat atau fasilitas untuk
mengembangkan dan membangun suatu program. Arduino IDE adalah
open source dan dapat diunduh dengan gratis di situs Arduino. Saat
menulis tugas akhir ini, IDE versi terakhir adalah versi 1.0.5 dan bisa
dijalankan di OS Windows, Mac OS X, dan Linux.
Gambar 2.33 Jendela Arduino IDE versi 1.0.5.
53
Arduino menawarkan banyak kelebihan dibandingkan sistem lain
seperti banyak varian, murah, komplit, berjalan di 3 OS, mudah dalam
pemrograman, fleksible, program mudah dikembangkan dalam lingkungan
bahasa C dan perangkat keras yang mudah dikembangkan menjadi modul
versi sendiri sesuai keinginan.
Arduino IDE adalah lingkungan pengembangan yang terdiri dari
editor teks untuk menulis kode program, area pesan, teks antarmuka,
toolbar, dan menu. IDE mudah dikoneksi dengan board arduino melalui
kabel USB yang banyak dipasaran dan langsung terdeteksi serial port
COM pada OS.
Kode-kode algoritme yang ditulis menggunakan teks editor arduino
disebut sketches. Sketches mudah untuk edit copy, paste, searching, dan
replacing. Bagian area paling bawah jendela IDE adalah area pesan unuk
memberikan informasi tanggapan ketika saving, exporting, compiling, dan
pesan eror. Bagian sudut bawah tangan kanan ditunjukkan informasi nama
board arduino dengan serial port yang dipakai.
Verify : untuk memeriksa syntax kode program dari eror.
Upload : untuk kompilasi (compile) kode program dan dikirim ke
board arduino.
New : untuk membuat sketch baru.
Open : untuk membuka daftar kumpulan sketch yang pernah dibuat
sebelumnya
pada
sketchbook
diinginkan.
54
atau
membuka
folder
yang
Save : untuk menyimpan sketch.
Serial Monitor : untuk membuka jendela serial monitor.
Menu bar terdiri dari File, Edit, Sketch, Tools,dan Help. Berikut
beberapa menu yang sering dipakai:
File :
-
Sketchbook : daftar kumpulan sketch yang pernah dibuat sebelumnya.
-
Examples : daftar kumpulan sketch dan library yang disediakan oleh
arduino sebagai contoh dasar atau referensi untuk membuat struktur
penulisan program (sketch).
Edit :
-
Copy for Forum : untuk menyalin kode program berserta format
struktur dan warna syntax untuk keperluan berbagi dan diskusi di
forum.
-
Copy as HTML : untuk menyalin kode program sebagai HTML sesuai
untuk embedding dalam web.
Sketch :
-
Verify/Compile : untuk memeriksa kode syntax dari eror.
-
Show Sketch Folder : untuk membuka folder sketch yang sedang
dipakai.
-
Add File : untuk menambah sketch dari sumber file luar. File sumber
akan dibuka di tab baru.
-
Import Library : untuk menambah library pada sketch dengan
memasukkan #include statement pada awal kode program. Versi dari
55
1.0.5 harus import library dari file .zip atau sumber lain. Library
adalah program bawaan perangkat lunak agar bisa bekerja baik dengan
arduino. Biasanya perangkat keras tambahan seperti shield motor
menyediakan library dan dalam manual pemrograman sudah
dijelaskan pemakaian library baik dari arduino, pihak ketiga, maupun
membuat sendiri. Untuk lebih lanjut dalam membuat library sendiri,
bisa mengunjungi http://arduino.cc/en/hacking/librarytutorial.
Tools :
-
Auto Format : untuk menata struktur secara benar kode syntax seperti
kurung buka/tutup, percabangan, dsb., sehingga mudah dan cepat
dipahami oleh logika manusia.
-
Archive Sketch : untuk menyimpan arsip sketch dalam format .zip di
folder sketch yang sama.
-
Board : untuk memilih board yang sedang digunakan sebagai
informasi seperti CPU speed dan baud rate pada bootloader ketika
proses compile dan upload sketch.
-
Serial Port : daftar serial port (real dan virtual) yang dipilih oleh OS
komputer untuk board. Pada OS Windows biasanya COM1 / COM2
untuk serial board dan yang lebih tinggi untuk USB board. Untuk
memastikan COM yang benar, periksalah serial port di windows device
manager. Perintah upload akan berjalan normal jika serial port sudah
dipilih dengan benar.
-
Programmer : untuk memilih perangkat keras pemrogram lain seperti
AVR ISP, Paralel Programmer dsb., ketika memprogram chip dan
56
tidak menggunakan USB onboard arduino. Fasilitas ini digunakan
ketika akan burn bootloader pada sebuah mikrokontroller baru.
-
Burn Bootloader : untuk memerintahkan proses burn bootloader pada
mikrokontroler baru yang tidak membawa bootloader. Umumnya
setiap membeli mikrokontroler / chip baru ATMega tidak dilengkapi
bootloader.
Serial Monitor adalah jendela monitor sebagai antarmuka manusia
dengan mesin yang sangat penting untuk mengetahui suatu variabel yang
sedang diproses oleh mikrokontroler. Misalnya ingin menampilkan data
serial yang sedang dikirim dari board arduino melalui USB atau serial
board. Untuk mengirim data ke board arduino, masukkan teks dan klik
tombol “send” atau tekan enter keyboard. Untuk menggunakan serial
monitor harus menyetel serial port COM yang benar dan menulis perintah
“Serial.begin” dan baud rate yang sesuai.
Gambar 2.34 Jendela serial monitor.
57
Serial monitor dalam tugas akhir ini akan digunakan untuk memonitor
nilai hasil tanggapan dari sensor api. Dengan cara ini dapat memudahkan
proses analisis dan modifikasi program deteksi sensor api terhadap sudut
arah servo lebih lanjut pada nilainya yang bisa digunakan untuk
menentukan arah robot menuju sumber api.
2.7.1 Pemrograman (sketch)
Program arduino (sketch) ditulis dalam bahasa C/C++. Bahasa C
paling populer sebagai bahasa pemrograman di dunia mikrokontroler.
Standar bahasa C cukup menyulitkan bagi pemula tetapi tim arduino telah
mengembangkan bersama library arduino yang menyediakan fungsi dan
struktur syntax semudah yang diinginkan pengguna.
Bahasa C adalah bahasa pemrograman struktur top-down, dengan kata
lain kode-kode program akan dieksekusi dari atas hingga perintah pada
baris kode bagian akhir.
Program arduino C dapat dibagi 3 bagian utama yaitu struktur, nilai,
dan fungsi. Struktur sebagai pemroses fungsi dan nilai. Fungsi sebagai
identitas dan fungsi antarmuka dan I/O antara program dengan board.
Nilai sebagai nilai operasi atau kontrol dalam struktur dan fungsi. Jika
ditinjau dari cara menjalankan program, struktur utama dibagi 2 bagian
yaitu;
58
void setup()
{
kode program dalam kurung disini akan dijalankan sekali setelah
power ON atau tombol reset ditekan.
}
void loop()
{
kode program dalam kurung disini akan dijalankan berulang-ulang
dan berhenti jika power OFF atau sesaat ketika tombol reset ditekan.
}
Setup() berisi kode program yang memiliki variabel tetap seperti
menentukan pin digital sebagai input atau output, baud rate serial, dll.
Loop() berisi kode program yang memiliki variabel berubah-ubah agar
perubahan nilai langsung dijalankan ketika masuk waktu siklus loop.
Contoh program dengan variabel berubah-ubah seperti membaca nilai pin
digital / analog input, menulis nilai pin digital / analog output, dll.
Tabel 2.4 Syntax program arduino C.
STRUKTUR
FUNGSI
void setup()
Digital I/O
void loop()
pinMode(pin, mode)
Variable Declaration
digitalWrite(pin, value)
59
int digitalRead(pin)
Function Declaration
void
Analog I/O
Control Structures
int analogRead(pin)
if
analogWrite(pin, value) - PWM
if...else
for
Advanced I/O
switch case
shiftOut(dataPin, clockPin, bitOrder,
while
value)
do... while
unsigned long pulseIn(pin, value)
break
continue
Time
return
unsigned long millis()
delay(ms)
delayMicroseconds(us)
Further Syntax
; (semicolon)
{} (curly braces)
Math
// (single line comment)
min(x, y)
/* */ (multi-line comment)
max(x, y)
abs(x)
Arithmetic Operators
constrain(x, a, b)
+ (addition)
map(value,
- (subtraction)
toLow, toHigh)
* (multiplication)
pow(base, exponent)
/ (division)
sqrt(x)
fromLow,
% (modulo)
Trigonometry
Comparison Operators
sin(rad)
== (equal to)
cos(rad)
!= (not equal to)
tan(rad)
< (less than)
> (greater than)
Random Numbers
60
fromHigh,
<= (less than or equal to)
randomSeed(seed)
>= (greater than or equal to)
long random(max)
long random(min, max)
Boolean Operators
&& (and)
Serial Communication
|| (or)
Serial.begin(speed)
! (not)
int Serial.available()
int Serial.read()
Compound Operators
Serial.flush()
++ (increment)
Serial.print(data)
-- (decrement)
Serial.println(data)
+= (compound addition)
-= (compound subtraction)
*= (compound multiplication)
/= (compound division)
NILAI
Constants
HIGH | LOW
INPUT | OUTPUT
true | false
integer constants
floating point constants
Data Types
void keyword
boolean
char
unsigned char
61
byte
int
unsigned int
long
unsigned long
float
double
string
array
Variable Scope & Qualifiers
static
volatile
const
PROGMEM
Utilities
cast (cast operator)
sizeof() (sizeof operator)
Reference
keywords
ASCII chart
Atmega168 pin mapping
Bahasan teori pemrograman dalam tugas akhir hanya berkaitan
dengan perangkat keras yang digunakan seperti saklar batas, sensor api,
servo motor, dan shield drive motor. Untuk lebih detail tentang
pemrograman diluar pembahasan teori tugas akhir ini disarankan
62
mempelajari referensi di situs http://arduino.cc/en/Reference atau sumber
lain di internet dari komunitas pemakai arduino yang tersebar di seluruh
dunia.
Berdasarkan perangkat keras yang digunakan, bahasan teori program
dibatasi pada struktur, nilai, dan fungsi yang berkaitan dengan serial
monitor, digital input, digital output, analog input, library servo, arah
putar motor, dan kecepatan motor.
2.7.1.1.
void setup()
Kata kunci setup akan menjalankan program yang didalam {} hanya
sekali. Setup() berfungsi untuk menjalankan program-program yang
mempunyai nilai variabel tetap seperti mengidentifikasi variabel,
mode pin, start library, dll. Setup() harus diletakkan pada bagian atas
atau sebelum loop() karena kalau setelah loop() maka setup() tidak
pernah dijalankan.
Contoh:
void setup()
{
myservo.attach(9);
Serial.begin(9600);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
Semua program dalam
{} ini dijalankan sekali
setelah power ON atau
tombol reset ditekan.
Gambar 2.35 Sketch void setup.
63
2.7.1.2.
void loop()
Kata kunci loop akan menjalankan program yang didalam {}
berulang-ulang. Untuk itu perintah loop() diletakkan paling bawah
karena bila ada program setelah void loop () {} maka program itu
tidak pernah dijalankan. Karena sifatnya yang menjalankan program
secara berulang-ulang maka perintah loop() digunakan untuk program
yang mempunyai nilai variabel yang berubah-berubah sehingga
perubahan nilai itu akan langsung dijalankan atau direspon oleh
perintah yang lain.
Contoh:
void loop()
{
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
Program lampu kedipkedip pada pin 2 dengan
perintah ON 1 detik dan
OFF 1 detik dijalankan
secara berulang-ulang
oleh fungsi loop().
Gambar 2.36 Sketch void loop.
2.7.1.3.
void
Void digunakan hanya pada deklarasi fungsi seperti loop, setup, nama
fungsi dll. Void + “fungsi” tidak mengembalikan suatu nilai keluaran
yang didapat dari hasil proses fungsi tersebut.
64
Syntax : void “nama fungsi” (“data type”, “parameter untuk fungsi”);
Contoh:
void mundur(int pwm)
{
rightMotor(pwm, true);
leftMotor(pwm, true);
}
void loop()
{
mundur(60);
delay(1000);
}
fungsi mundur diawali
kata kunci “void” yang
tidak menghasilkan nilai
keluaran.
fungsi mundur akan dijalankan dan
menghasilkan nilai keluaran jika
diletakkan di dalam fungsi loop() dan
diberi nilai (60).
Gambar 2.37 Sketch fungsi void mundur.
2.7.1.4.
#define
#define digunakan untuk mendefinisi nilai konstanta dengan nama
pendek yang mudah untuk diingat atau presentasi dari nilai konstanta
tersebut.
Syntax : #define “nama konstanta” “nilai”
Contoh:
#define
#define
#define
#define
rightMotor_Dir 4
rightMotor_Vel 5
leftMotor_Dir 7
leftMotor_Vel 6
rightMotor _Dir nama
definisi pin 4, artinya
pin 4 dipakai untuk
menggerakkan arah
putar motor bagian kiri.
Gambar 2.38 Sketch mendefinisi nama suatu pin.
65
2.7.1.5.
#include
#include digunakan untuk memasukkan library kedalam program.
Seperti library motor servo yang akan digunakan pada rangkaian
robot, sebelum bisa dikendalikan oleh program nanti harus memasang
library servo <Servo.h>.
Contoh:
library servo dimasukkan
dalam program.
#include <Servo.h>
void setup()
{
Servo.attach(9);
}
library servo menentukan
pin 9 PWM output untuk
motor servo.
void loop()
{
Servo.write(90);
delay(1000);
}
library servo mengirim
sinyal PWM output posisi
90 derajat ke motor servo.
Gambar 2.39 Sketch memasukkan library motor servo.
2.7.1.6.
Serial
Serial digunakan untuk proses komunikasi antara Arduino dengan
komputer atau perangkat lain melalui serial port USB, pin 0 (RX) dan
pin 1 (TX). Kata kunci Serial disini akan difungsikan untuk
mengambil data dari mikrokontroler lalu ditampilkan ke jendela serial
monitor.
66
Contoh:
void setup()
{
Serial.begin(9600);
}
Fungsi Serial dipasang
dengan baud rate 9600.
Sinyal analog input pin A0 mengirim
nilai ke register sensorValue.
void loop()
{
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
}
Serial menampilkan nilai sensorValue
ke jendela serial monitor.
Gambar 2.40 Sketch menampilkan dalam jendela serial monitor.
2.7.1.7.
pinMode()
Kata kunci pinMode() berfungsi untuk konfigurasi pin-pin digital I/O.
Syntax : pinMode( “nomer pin”, “fungsi pin”);
Contoh:
void setup()
{
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
pinMode memasang
Pin 2 sebagai digital INPUT,
Pin 3 sebagai digital INPUT,
Pin 4 sebagai digital OUTPUT,
Pin 5 sebagai digital OUTPUT.
Gambar 2.41 Sketch deklarasi suatu pin.
67
2.7.1.8.
digitalWrite()
Kata kunci digitalWrite() berfungsi memberi status HIGH atau LOW
pada pin-pin digital output saja. Status HIGH adalah pin bersangkutan
mengandung tegangan (5 V) dan status LOW adalah pin bersangkutan
tidak bertegangan (0 V).
Syntax : digitalWrite( “nomer pin”, “HIGH atau LOW”);
Contoh:
void loop()
{
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
}
digitalWrite memberi
tegangan pada pin 4.
digitalWrite tidak memberi
tegangan pada pin 5.
Gambar 2.42 Sketch memberi nilai pada suatu pin digital output.
Sebelumnya pin 4 dan pin 5 sudah di pinMode() sebagai digital output
didalam fungsi void setup(). DigitalWrite hanya untuk kanal digital
output.
68
2.7.1.9.
digitalRead()
Kata kunci digitalRead() berfungsi mengambil atau membaca status
pin-pin digital input saja. Setelah status pin dibaca nilainya kemudian
disimpan dalam sebuah variabel.
Syntax : “nama variabel” = digitalRead(“nomer pin”)
Contoh:
void loop()
{
nilai = digitalRead(2);
digitalWrite(5,nilai);
}
digitalRead membaca
status pada pin 2 digital
input. Lalu disimpan dalam
variabel “nilai”.
digitalWrite memberi
status variabel “nilai” pada
pin 5.
Gambar 2.43 Sketch mengambil nilai suatu pin digital input.
Sebelumnya pin 2 sudah di pinMode() sebagai digital input didalam
fungsi void setup(). DigitalRead hanya untuk kanal digital input.
2.7.1.10. analogWrite()
Kata
kunci
analogWrite()
berfungsi
memberi
nilai
kontinu
(gelombang PWM) pada pin-pin PWM output saja. AnalogWrite()
bisa menyalakan LED secara bervariasi tingkat kecerahannya atau
menggerakkan motor drive dengan bervariasi kecepatan. Pin
bersangkutan akan membangkitkan gelombang segi empat secara
69
tetap sampai nilai baru berikutnya. Frekuensi PWM ouput adalah 490
Hz dan 980 Hz untuk pin 5 dan 6 saja. AnalogWrite() tidak perlu
konfigurasi pinMode() pada setup(). AnalogWrite hanya berlaku
untuk kanal PWM output saja.
Syntax : analogWrite(“nomer pin”, “nilai 0-255”)
Contoh:
void loop()
{
analogWrite(9,128);
analogWrite(9,255);
}
analogWrite memberi
tegangan 50% pada pin 9.
analogWrite memberi
tegangan 100% atau HIGH
pada pin 9.
Gambar 2.44 Sketch memberi variabel pada suatu pin analog ouput.
2.7.1.11. analogRead()
Kata kunci analogRead() berfungsi mengambil atau membaca nilai
pin-pin analog input saja (A0, A1, A2, A3, A4, dan A5). Resolusi
ADC adalah 10 bit. Tegangan input dari 0 V – 5 V akan dikonversi
menjadi 10 bit atau 0 sampai 1023. Range resolusi bisa diganti
menggunakan kata kunci analogReference().
Syntax : “nama variabel” = analogRead(“nomer pin”)
70
Contoh:
void loop()
{
nilai = analogRead(A0);
Serial.println(nilai);
}
analogRead membaca nilai
pada pin A0 analog input.
Lalu disimpan dalam
variabel “nilai”.
Serial mengirim nilai
variabel “nilai” pada serial
monitor.
Gambar 2.45 Sketch mengambil variabel suatu pin analog input.
2.7.1.12. delay()
Kata kunci delay() berfungsi memberi waktu tertentu kepada perintah
sebelumnya sebelum masuk perintah berikutnya. Misalnya perintah
LED hidup selama 1 detik kemudian LED mati selama 2 detik maka
perintah delay() memberi jeda waktu selama 1 detik untuk perintah
digitalWrite() nyala LED.
Syntax : delay(“waktu dalam mili detik”)
Contoh:
void loop()
{
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
delay(2000);
}
delay(1000) memberi
waktu pada pin 4
bermuatan 5V selama 1
detik (1000 ms).
delay(2000) memberi
waktu pada pin 4
bermuatan 0V selama 2
detik (2000 ms).
Gambar 2.46 Sketch memberi waktu delay.
71
Perhatikan pada program diatas adalah lampu kedip-kedip untuk 1
detik nyala dan 2 detik mati pada pin 4 digital output yang dijalankan
berulang-ulang dalam fungsi loop().
2.7.1.13. max( )
Kata kunci max() berfungsi menentukan nilai yang paling maksimum
dari 2 nilai.
Syntax : max(“nilai pertama”, “nilai kedua”)
Contoh:
void loop()
{
nilaiMax = max(nilA, nilB);
}
max() akan menentukan yang terbesar
dari nilA atau nilB. Lalu nilai terbesar
akan disimpan dalam register nilaiMax.
Gambar 2.47 Sketch mencari nilai terbesar (max).
2.7.1.14. if…else
Kata kunci if...else berfungsi memberi pilihan jika syarat tertentu
dipenuhi. Jika syarat dipenuhi atau benar maka meng-eksekusi
72
program sebelum else, tetapi jika salah maka meng-eksekusi program
setelah else.
Syntax :
if (“syarat A”)
{
“lakukan A jika syarat A dipenuhi”
}
else
{
“lakukan B jika syarat A tidak dipenuhi”
}
Contoh:
void loop()
if (A0 == 255)
{
digitalWrite(4, HIGH);
}
else
{
digitalWrite(4, LOW);
}
Jika pin analog input
A0 nilainya = 255 maka
pin 4 bermuatan 5V.
Jika nilainya selain 255
maka pin 4 bermuatan
0V.
Gambar 2.48 Sketch kontrol struktur if..else.
Kata kunci if..else ini masuk dalam kategori kendali dan sering
dipakai dalam pemrograman karena dalam proses eksekusi sering
73
menemukan logika memilih dan membandingkan nilai. Selain kata kunci
if..else juga beberapa kata kunci kendali yang sering dipakai seperti while
(…){….}, do(…) while{…}, for(..;..;…){…} dsb.
2.7.1.15. //
Tanda // berfungsi untuk menulis komentar dalam satu baris. Apapun
yang ditulis setelah tanda // tidak akan eksekusi atau di-compiling oleh
program.
Contoh:
//fungsi untuk melacak api
void lacak()
{
nilaiMax = max(nilA, nilB); //cari terbesar
}
Gambar 2.49 Sketch komentar satu baris.
2.7.1.16. /*…..*/
Tanda /**/ berfungsi untuk menulis komentar untuk banyak baris.
Apapun yang ditulis dalam tanda /*….*/ tidak akan dieksekusi oleh
CPU.
Hal ini bisa difungsikan sebagai pembeku sebagian baris
program daripada menghapusnya.
Contoh:
/* komentar baris pertama
Komentar baris kedua
Komentar baris ketiga
Dan seterusnya
*/
74
void lacak()
{
nilaiMax = max(nilA, nilB); //cari terbesar
}
/* dari baris ini kebawah tidak dieksekusi
{
if (digitalRead(lsL) ==HIGH)
{
.
. sketch diloncati
.
}
}
Dari baris ini keatas tidak dieksekusi
*/
Void loop()
Gambar 2.50 Sketch komentar multi baris.
Bahasan sytax pemrograman diatas dibatasi pada perangkat keras
yang digunakan dalam tugas akhir ini, seperti saklar batas, sensor api,
servo motor, dan shield drive motor. Untuk lebih detail tentang syntax
pemrograman
dapat
mempelajari
referensi
di
situs
http://arduino.cc/en/Reference atau sumber lain di internet dari komunitas
pemakai arduino yang tersebar di seluruh dunia. Arduino adalah sigle
board mikrokontroler open source yang populer sehingga referensi manual
pemrograman dari berbagai sumber mudah didapat dan gratis. Bahkan
banyak komunikasi praktisi arduino membuat fasilitas forum secara online
untuk memecahkan permasalahan perangkat lunak maupun perangkat
keras.
75
Download