Laju transfer data pada komunikasi serial dinyatakan dalam bps (bit

advertisement
1
BAB I
PENDAHULUAN
1.1
Latar Belakang
Perkembangan teknologi disemua bidang dari waktu kewaktu saat ini
terus berkembang semakin canggih dan semakin membuat kemudahankemudahan dalam membantu segala aktivitas kehidupan manusia. Hal ini
tidak
terlepas
dari
perusahaan-perusahaan
yang
menciptakan
dan
memberikan keleluasaan bagi para pengembang ponsel (vendor) untuk terus
bebas bereksperiment dalam membuat dan mengolah aplikasi-aplikasi
secara terbuka (open source), salah satunya adalah sistem operasi mobile
Android (OS Android).
Android menyediakan platform terbuka bagi para pengembang untuk
menciptakan aplikasi yang dapat dijalankan diberbagai macam piranti
mobile seperti Smartphone, Tablet dan lain-lain. Sifat ini dengan cepat
menumbuhkan komunitas pengembang program aplikasi untuk Android.
Dengan jumlahnya yang semakin meningkat dan penggunaannya yang luas,
gadget tersebut bisa menjadi sebuah bahan ajar (tools education) bagi para
kreativator IT baik itu pelajar, mahasiswa, guru, dosen atau siapapun itu
yang akan membawa dan memotivasi menuju gerbang pendidikan
teknologi.
Salah satu cabang ilmu yang dapat menggunakan teknologi android
adalah dibidang elektro. Teknologi komunikasi dengan android bisa
1
2
digunakan dengan perangkat mikrokontroler sebagai salah satu sistem
kendali. Hal ini menjadikan ide perancangan dan pembuatan suatu kendali
rangkaian elektronika seperti halnya pengendalian led dan motor servo
dengan smartphone android melalui komunikasi bluetooth. Perangkat ini
dapat mengendalikan switching on/off led atau putar motor servo dari jarak
jauh tanpa kabel (wireless).
Ide yang sebagaimana telah digambarkan di paragraf atas, menjadikan
suatu pemikiran dibuatnya Tugas akhir ini.
1.2
Rumusan Masalah
Akan dirancang perangkat keras (hardware) rangkaian led dan motor
servo dengan Board Arduino UNO sebagai sistem minimum, dibuat juga
program untuk mikrokontroler Arduino sebagai pengolah perintah dari input
output serta juga akan dibuat perangkat lunak (software) aplikasi yang
berbasis Android dimana fungsi utamanya adalah sebagai tombol/switch
pengendali on/off led dan putar motor servo menggunakan komunikasi
Bluetooth melalui smartphone Android.
1.3
Tujuan
Tujuan dari perancangan dan pembuatan alat pada Tugas Akhir ini
adalah untuk membuat suatu teknologi kendali alat melalui komunikasi
nirkabel Bluetooth menggunakan aplikasi kendali pada smartphone yang
berbasis Operating System Mobile Android.
3
1.4
Batasan Masalah
Mengingat luasnya ruang lingkup permasalahan, maka dalam Tugas
Akhir ini dilakukan beberapa pembatasan, sebagai berikut.
1.
Perangkat keras dirancang menggunakan modul Arduino UNO,
rangkaian led dan motor servo.
2.
Program mikrokontroler Arduino dibuat dengan bahasa pemrograman C
Arduino dan aplikasi Android dibuat dengan software tool visual App
Inventor.
3.
Komunikasi
antara
perangkat
keras
dan
smartphone
Android
menggunakan modul Bluetooth serial.
4.
Aplikasi kendali android hanya mengirim (transitter) data dan alat
hanya sebagai penerima (receiver) data dari aplikasi kendali android.
1.5
Hasil Akhir
Hasil akhir dari tugas akhir ini adalah berupa :
1.6
1.
Rangkaian perangkat keras (hardware).
2.
Pemrograman mikrokontroler Arduino.
3.
Aplikasi kendali Android (application control).
4.
Laporan.
Manfaat dan Kontribusi
Sebagaimana telah dikemukakan di atas, perancangan alat kendali
yang akan dibuat dalam Tugas Akhir ini baru sebatas mengendalikan led dan
4
motor servo. Manfaat utama yang diharapkan dari perancangan alat dan
aplikasi ini adalah merupakan suatu langkah awal pembelajaran dari
teknologi kendali berbasis android khususnya untuk dapat diterapkan pada
ilmu robotika dan ilmu kendali instrumen elektronika lainnya di jurusan
Teknik Elektro Universitas Muhammadiyah Yogyakarta.
1.7
Sistematika Penulisan
Sistematika penulisan laporan ini adalah sebagai berikut.
BAB I PENDAHULUAN.
Memuat penjelasan mengenai latar belakang masalah, rumusan
masalah, batasan masalah, hasil akhir, manfaat yang diperoleh, dan
sistematika penulisan laporan.
BAB II LANDASAN TEORI.
Berisi tinjauan pustaka berupa paparan mengenai hal-hal mendasar
yang berkaitan dengan Arduino dan Android.
BAB III METODE PERANCANGAN.
Berisi paparan mengenai perancangan rangkaian alat, pemrograman
mikrokontroler dan pembuatan aplikasi kendalinya di Android.
BAB IV HASIL DAN ANALISA.
Berisi pembahasan mengenai hasil dari implementasi dan analisa alat
dan program aplikasi yang telah dibuat.
BAB V PENUTUP.
Berisi kesimpulan dan saran.
5
BAB II
LANDASAN TEORI
2.1
Tinjauan Pustaka
Berbagai penelitian sejenis yang dilakukan oleh peneliti terdahulu,
hasil penelitian yang dikemukakan menunjukkan berbagai cara untuk
mengendalikan komponen elektonik menggunakan media wireless dan
aplikasi kendali berbasis Android. Berikut karya sejenis yang berkaitan
dengan pembuatan tugas akhir ini :
1. Sistem simulasi kendali wireless lampu dan pagar dengan media
Bluetooth oleh Ramdhany Dwi Nugroho (2008) merancang sistem
kendali untuk penelitian maupun untuk diterapkan pada penggunaan di
kehidupan sehari-hari. Sesuai konsepnya, sistem ini dibuat untuk
memanfaatkan perangkat yang portable seperti handphone sebagai
antarmuka pengguna untuk mengendalikan lampu dan pagar secara
wireless dengan media Bluetooth.
2. Prototype sistem otomasi pengendalian dan penggawasan rumah via
Android berbasis web service oleh Purnomo Putro Subiyanto (2012)
otomasi rumah dapat dijadikan alternatif yang terdiri dari control,
monitoring dan otomatisasi beberapa perangkat atau peralatan rumah
yang saling berinteraksi dan dapat diakses melalui web service dengan
menggunakan smartphone. Pada sistem kontrol, Android dapat
5
6
memberikan perintah langsung untuk mengatur barang elektronik
didalam rumah.
3. Perancangan dan implementasi sistem kendali home appliance dengan
memanfaatkan teknologi Bluetooth oleh Leni Oktaviani (2007) Ini
didesign dan realisasi menggunakan teknologi Bluetooth sebagai switch,
akan diterapkan untuk kendali perangkat elektronik rumah. Semua
perangkat elektronik di rumah dapat dikontrol menggunakan handphone
dengan bluetooth dan PC server.
4. Rancang bangun aplikasi berpindah pengendali robot berbasis Android
menggunakan koneksi Bluetooth oleh Fitranda Arys Pradana (2011)
merancang
pengendalian
robot
NXT
menggunakan
komunikasi
Bluetooth pada operating system canggih Android yang mendukung
kerja sensor accelerometer sebagai pengganti tombol kendali.
5. Android controlled wireless lamp oleh BitArtist.org (2010) yang
menyajikan kendali on/off lampu menggunakan konektivitas Bluetooth
dan Android phone.
6. Using the Android Platform to control Robots oleh Stephan G¨obel,
Ruben Jubeh, Simon-Lennert Raesch and Albert Z¨undorf menjelaskan
Ponsel platform Android oleh Google menjadi lebih dan lebih populer di
kalangan pengembang perangkat lunak, karena kemampuan yang
powerfull dan arsitektur terbuka. Merupakan platform besar untuk sistem
kontrol robot, karena menyediakan banyak sumber daya dan sudah
mengintegrasikan banyak sensor.
7
Jika
pada
penelitian
sebelumnya
melakukan
penelitian
dan
perancangan aplikasi kendali untuk mengendalikan robot, perangkat
elektronika atau alat listrik menggunakan komunikasi Bluetooth dan sistem
kontrol dengan PC atau aplikasi Android yang dirancang dengan
pemrograman java dan pemrograman mikrokontroler untuk jenis yang
berbeda, maka disini penulis memfokuskan pada penelitian dan perancangan
aplikasi Android dan pemrograman Arduino untuk mengendalikan
komponen elektronika yaitu Led dan motor servo dengan media komunikasi
Bluetooth.
2.2
Dasar Teori
2.2.1 Sistem Operasi Android
Android adalah sistem operasi yang berbasis Linux untuk telepon
seluler seperti telepon pintar (smartphone) dan komputer tablet. Android
menyediakan platform terbuka bagi para pengembang untuk menciptakan
aplikasi mereka sendiri untuk digunakan oleh bermacam peranti bergerak.
Awalnya, Google Inc. membeli Android Inc., pendatang baru yang membuat
peranti lunak untuk ponsel. Kemudian untuk mengembangkan Android,
dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti
keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel,
Motorola, Qualcomm, T-Mobile, dan Nvidia.
Di dunia ini terdapat dua jenis distributor sistem operasi Android.
Pertama yang mendapat dukungan penuh dari Google atau Google Mail
8
Services (GMS) dan kedua adalah yang benar–benar bebas distribusinya
tanpa dukungan langsung Google atau dikenal sebagai Open Handset
Distribution (OHD).
Versi sistem operasi android didasarkan pada nama-nama kue dan
makan penutup (dessert) secara urutan abjad, dimana semakin tinggi
versinya maka fasilitas/fitur yang ditawarkan akan semakin lengkap. Versi
android itu dimulai dari :
-
Android versi 1.1
-
Android versi 1.5 (Cupcake)
-
Android versi 1.6 (Donut)
-
Android versi 2.0/2.1 (Éclair)
-
Android versi 2.2 (Froyo : Frozen Yoghurt)
-
Android versi 2.3 (Gingerbread)
-
Android versi 3.0/3.1 (Honeycomb)
-
Android versi 4.0 (ICS : Ice Cream Sandwich)
-
Android versi 4.1 (Jelly Bean)
a. Arsitektur Sistem Operasi Android
Sistem operasi Android memiliki 4 lapisan (layer) yang merupakan
komponen sistem Android. Gambar berikut merupakan lapisan arsitektur
sistem operasi Android:
9
Gambar 2.1 Arsitektur Android
(Sumber: http://commons.wikimedia.org/wiki/File:Android-SystemArchitecture.svg)
Google mengibaratkan Android sebagai sebuah tumpukan software.
Setiap lapisan dari tumpukan ini menghimpun beberapa program yang
mendukung fungsi-fungsi spesifik dari sistem operasi. Berikut ini
susunan dari lapisan-lapisan tersebut jika di lihat dari lapisan dasar
hingga lapisan teratas.
b. Linux Kernel
Tumpukan paling bawah pada arsitektur Android ini adalah kernel.
Google menggunakan kernel Linux versi 2.6 untuk membangun sistem
Android yang mencakup memory management, security setting, power
management, dan beberapa driver hardware. Kernel berperan sebaagai
abstraction layer antara hardware dan keseluruhan software. Sebagai
10
contoh, HTC GI dilengkapi dengan kamera. Kernel Android terdapat
driver kamera yang memungkinkan pengguna mengirimkan perintah
kepada hardware kamera.
Android dibangun di atas kernel Linux 2.6. Namun secara
keseluruhan android bukanlah linux, karena dalam android tidak terdapat
paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem
operasi terbuka yang handal dalam manajemen memori dan proses. Oleh
karenanya pada android hanya terdapat beberapa servis yang diperlukan
seperti keamanan, manajemen memori, manajemen proses, jaringan dan
driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi,
Flash Memory, audio, dan IPC (Interprocess Communication) untuk
mengatur aplikasi dan lubang keamanan.
c. Android Run Time
Lapisan setelah Kernel Linux adalah Android Runtime. Android
Runtime ini berisi Core Libraries dan Dalvik Virtual Machine.
Core Libraries mencakup serangkaian inti library Java, artinya
Android menyertakan satu set library-library dasar yang menyediakan
sebagian besar fungsi-fungsi yang ada pada library-library dasar bahasa
pemrograman Java. Dalvik adalah virtual mesin (Vitual Machine) pada
sistem operasi Google Android. Ini adalah perangkat lunak yang
menjalankan aplikasi pada perangkat Android. Dalvik VM ini di
optimalkan untuk telepon seluler.
11
Setiap aplikasi yang berjalan pada Android berjalan pada prosesnya
sendiri, dengan instance dari Dalvik Virtual Machine. Dalvik telah dibuat
sehingga sebuah piranti yang memakainya dapat menjalankan multi
Virtual Machine dengan efisien. Dalvik VM dapat mengeksekusi file
dengan format Dalvik Executable (.dex) yang telah dioptimasi untuk
menggunakan minimal memory footprint. Virtual Machine ini registerbased, dan menjalankan class-class yang dicompile menggunakan
compiler Java yang kemudian ditransformasi menjadi format .dex
menggunakan “dx” tool yang telah disertakan. Dalvik Virtual Machine
(VM) menggunakan kernel Linux untuk menjalankan fungsi-fungsi
seperti threading dan low-level memory management.
d. Libraries
Bertempat di level yang sama dengan Android Runtime adalah
Libraries. Android menyertakan satu set library-library dalam bahasa
C/C++ yang digunakan oleh berbagai komponen yang ada pada sistem
Android. Kemampuan ini dapat diakses oleh programer melewati
Android application framework. Sebagai contoh Android mendukung
pemutaran format audio, video, dan gambar. Berikut ini beberapa core
library tersebut :

System C library, diturunkan dari implementasi standard C system
library (libc) milik BSD, dioptimasi untuk piranti embedded
berbasis Linux.
12

Media Libraries, berdasarkan PacketVideo’s OpenCORE; librarylibrary ini mendukung playback dan recording dari berbadai
format audio and video populer, meliputi MPEG4, H.264, MP3,
AAC, AMR, JPG, and PNG.

Surface Manager, mengatur akses pada display dan lapisan
composites 2D and 3D graphic dari berbagai aplikasi.

LibWebCore, web browser engine modern yang mensupport
Android browser maupun embeddable web view.

SGL, the underlying 2D graphics engine.

3D libraries, implementasi berdasarkan OpenGL ES 1.0 APIs;
library ini menggunakan hardware 3D acceleration dan highly
optimized 3D software rasterizer.

FreeType, bitmap dan vector font rendering.

SQLite, relational database engine yang powerful dan ringan
tersedia untuk semua aplikasi.
Librari-librari tersebut bukanlah aplikasi yang berjalan sendiri,
namun hanya dapat digunakan oleh program yang berada di level
atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan
menggunakan pustaka sendiri menggunakan Native Development Toolkit
(NDK).
e. Applications Framework
Lapisan selanjutnya adalah application framework, yang mencakup
program untuk mengatur fungsi-fungsi dasar smartphone. Application
13
Framework merupakan serangkaian tool dasar seperti alokasi resource
smartphone, aplikasi telepon, pergantian antar – proses atau program,
dan pelacakan lokasi fisik telepon. Para pengembang aplikasi memiliki
aplikasi penuh kepada tool-tool dasar tersebut, dan memanfaatkannya
untuk menciptakan aplikasi yang lebih kompleks.
Programmer mendapatkan akses penuh untuk memanfaatkan APIAPI (Android Protocol Interface) yang juga digunakan core applications.
Arsitektur aplikasi didesain untuk menyederhanakan pemakaian kembali
komponen-komponen,
setiap
aplikasi
dapat
menunjukkan
kemampuannya dan aplikasi lain dapat memakai kemampuan tersebut.
Mekanisme yang sama memungkinkan pengguna mengganti komponenkomponen yang dikehendaki. Di dalam semua aplikasi terdapat servis
dan sistem yang meliputi :

Satu set Views yang dapat digunakan untuk membangun aplikasi
meliputi lists, grids, text boxes, buttons, dan embeddable web
browser.

Content Providers yang memungkinkan aplikasi untuk mengakses
data dari aplikasi lain (misalnya Contacts), atau untuk membagi data
yang dimilikinya.

Resource Manager, menyediakan akses ke non-code resources
misalnya localized strings, graphics, dan layout files.

Notification Manager yang memungkinkan semua aplikasi untuk
menampilkan custom alerts pada status bar.
14

Activity Manager yang memanage life cycle of dari aplikasi dan
menyediakan common navigation backstack.
f. Applications
Di lapisan teratas bercokol aplikasi itu sendiri. Di lapisan inilah
anda menemukan fungsi-fungsi dasar smartphone seperti menelepon dan
mengirim pesan singkat, menjalankan web browser, mengakses daftar
kontak, dan lain-lain. Bagi rata-rata pengguna, lapisan inilah yang paling
sering mereka akses. Mereka mengakses fungsi-fungsi dasar tersebut
melalui user interface.
2.2.2 Android App Inventor
App Inventor adalah sebuah tool untuk membuat aplikasi android
yang berbasis visual block programming menggunakan webbased Graphical
User Interface (GUI) builder . App Inventor disediakan oleh Google dan
sekarang dikelola oleh Massachusetts Institute of Technology (MIT). MIT
Media Lab merilis Android App Inventor untuk membangun aplikasi
Android tanpa coding, karena tools ini berbasis visual block programming
yang open source.
Membuat suatu aplikasi android dengan App Inventor tidak perlu
menjadi seorang pengembang profesional (professional developer),hal ini
dapat dirancang dengan semudah mungkin bagi siapapun baik programmer
maupun non-programmer, karena secara visual dapat langsung merancang
15
aplikasi menggunakan blok-blok program yang sudah memiliki program
dan fungsi-fungsi tertentu yang berbentuk potongan-potongan puzzel.
App Inventor menggunakan Kawa Language Framework dan Kawa’s
dialek yang di develop oleh Per Bothner dan didistribusikan sebagai bagian
dari GNU Operating System oleh Free Software Foundation sebagai
Compiler
yang
mentranslate
visual
block
programming
untuk
diimplementasikan pada platform android. Kawa adalah sebuah framework
yang ditulis di Java untuk menerapkan bahasa tingkat tinggi dan dinamis,
kompilasi mereka ke dalam bytecode Java. Framework visual programming
ini terkait dengan bahasa pemrograman Scracth dari MIT, yang secara
spesifik merupakan implementasi dari Open Block yang didistribusikan oleh
MIT (Scheller Teacher Education Program) yang diambil dari riset yang
dilakukan oleh Ricarose Roque.
Source dari aplikasi App Inventor dapat didownload berupa file arsip
Zip yang terdiri dari 3 folder yaitu Folder assets berisi file gambar atau
sound, Folder src berisi file source screen1 dimana file dengan ekstensi .scm
berisi JSON source yang merupakan informasi dari tampilan layout aplikasi
dan file dengan ekstensi .blk berisi XML source merupakan skema yang
dihasilkan dari Block Editor. Folder youngandroidproject merupakan file
properties.
Android App Inventor dijalankan pada browser yang terkoneksi
dengan
jaringan
internet
di
http://beta.appinventor.mit.edu/.
Dalam
membangun (developing) suatu aplikasi android bagian yang diperlukan
16
diantaranya App Inventor Designer, App Inventor Block Editor dan Android
Emulator atau Android Phone.
Gambar 2.2 Simulasi perancangan aplikasi android
(Sumber: http://beta.appinventor.mit.edu)
App Inventor Designer digunakan untuk melakukan desain atau
mengatur tata letak komponen dari tampilan aplikasi yang ingin dibuat, App
Inventor Block Editor digunakan untuk melakukan pemrograman terhadap
komponen-komponen sesuai fungsi masing-masing yang diinginkan
sedangkan Android Emulator atau Android Phone digunakan untuk
melakukan simulasi terhadap aplikasi yang telah dibuat bisa menggunakan
emulator atau bisa langsung menggunakan Android phone. Hasil dari
perancangan aplikasi kemudian dapat didownload setelah di compile
menjadi file aplikasi Android Package yang berekstensi .apk.
17
Persiapan untuk menggunakan App Inventor antara lain :
1.
Memiliki account email Gmail, http://www.gmail.com
2.
Download dan Instal Java terbaru dari http://www.java.com
3.
Buka Browser dan masuk ke http://beta.appinventor.mit.edu/
4.
Download dan Instal appinventor_setup_installer_v_1_2.exe
5.
Instal driver dan Setting smartphone android apabila ada.
Setup handset android dilakukan apabila ingin langsung mencoba
hasil develop ke handset android. Tahapan yang dilakukan diantaranya
hubungkan kabel data USB dari handset android ke komputer dan pastikan
jika memiliki memory SD Card telah terpasang, kemudian lakukan setting
pada handset android dengan cara masuk ke home screen – pilih setting –
Applications – ceklist Unknow sources. Kemudian pilih Development –
ceklist USB debugging dan Stay awake.
Pada lingkungan kerja App Inventor terdapat bagian yang harus
diketahui yang terdiri dari :
a.
Komponen Desainer (Componen Designer) yang berjalan pada
browser, digunakan untuk memilih komponen dan mengatur properties.
Komponen desainer terdiri dari :
 Viewer : untuk menempatkan komponen dan mengaturnya sesuai
tampilan yang diinginkan.
 Pallete : merupakan list dari komponen yang bisa dipakai.
 Component list : merupakan tempat list komponen dari project
yang kita pakai.
18
 Media : mengambil media audio dan gambar untuk project.
 Properties : untuk mengatur properties dari masing-masing
komponen.
b.
Blok Editor (Block Editor) akan berjalan diluar browser, dimana
digunakan untuk membuat dan mengatur behavior dari komponen yang
dipilih pada komponen desaier.
c.
Emulator, digunakan untuk menjalankan dan melihat aplikasi yang
telah dibuat.
Ketiga lingkungan kerja diatas, layout masing-masing akan tampil
secara terpisah dan bisa dilihat secara bersamaan.
2.2.3 Modul Arduino
Arduino merupakan board mikrokontroler berbasis mikrokontroler
lengkap dengan software IDE Arduino yang open source yang relatif mudah
dan cepat dipelajari. Dalam Arduino terdapat sebuah komponen utama yaitu
sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel dan di
dalam board arduino sudah terdapat bootloader USB sehingga tidak perlu
lagi membuat chip programmer dengan LPT-port, USB-ASP atau RS232
untuk mendownload program, cukup dengan bawan USB dari board arduino
tersebut.
Arduino Uno adalah salah satu board mikrokontroler Arduino berbasis
ATmega328, memiliki 14 pin input output digital dimana 6 pin tersebut
dapat digunakan sebagai output PWM, terdapat juga 6 pin input analog, 16
19
MHz osilator kristal, koneksi USB, jack power, ICSP header, dan tombol
reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup hanya
menghubungkan Board Arduino Uno ke komputer dengan menggunakan
kabel USB atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk
menjalankannya.
Arduino Uno berbeda dengan semua board sebelumnya dalam hal
koneksi USB-to-serial yaitu menggunakan fitur Atmega8U2 yang diprogram
sebagai konverter USB-to-serial berbeda dengan board sebelumnya yang
menggunakan chip FTDI driver USB-to-serial.
Berikut adalah beberapa kelebihan dari Arduino :

Hardware dan Software-nya Open Source
Dari sini kita bisa membuat tiruan board yang kompatibel dengan board
Arduino tanpa harus membeli board asli buatan Italia dan kita juga tidak
akan dianggap membajak selama kita tidak menggunakan trade
mark “Arduino”.

Fasilitas chip yang cukup lengkap
Arduino menggunakan chip AVR ATmega 168/328 yang memiliki
fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C.
Dengan fasilitas chip yang demikian, Arduino bisa digabungkan dengan
modul atau alat lain walaupun protokol yang digunakan berbeda-beda.

Proses Upload tidak memerlukan chip programmer
Chip pada Arduino sudah dilengkapi dengan bootloader yang akan
menangani proses upload dari komputer. Dengan begitu kita tidak
20
memerlukan chip programmer kecuali untuk menanamkan bootloader
pada chip yang masih blank. Bootloader adalah sekumpulan perintah
(program) untuk melakukan inisialisasi berbagai fasilitas dalam
mikrokontroler yang akan digunakan dan menyampaikannya ke peta
pengalamatan pada mikrokontroler. Biasanya bootloader berukuran kecil
yang pertama kali dieksekusi saat mikrokontroler dinyalakan atau direset yang akan memanggil program utama, yaitu program yang kita
upload kedalam mikrokontroler.

Ukuran board kecil
Ukuran board Arduino yang kecil ini mudah di bawah kemana-mana
atau dimasukan ke dalam saku atau tas yang kecil.

Koneksi menggunakan Port USB
Ini akan memudahkan kita jika menghubungkan Arduino ke PC atau
laptop yang tidak memiliki port serial/paralel.

Bahasa pemrograman yang mudah
Bahasa pemrograman Arduino adalah bahasa C yang sudah dipermudah
menggunakan fungsi-fungsi yang sederhana sehingga dapat dipelajari
dengan mudah.

Library gratis
Library-library ini dapat di download gratis di website Arduino.
 Pengembangan aplikasi lebih mudah
Pengembangan aplikasi ini menjadi lebih mudah karena didukung oleh
bahasa yang mudah dipelajari serta adanya library dasar yang lengkap.
21
 Tersedianya modul tambahan (shield)
Memiliki modul siap pakai (shield) yang bisa ditancapkan pada board
Arduino. Misalnya shield GPS, Ethernet, SD Card, dll.

Komunitas open source yang saling mendukung
Pengembangan hardware dan software Arduino didukung oleh
komunitas pencinta elektronika dan pemrograman di seluruh dunia.
Gambar 2.3 Board Arduino UNO
(Sumber: http://www.adafruit.com/blog/2012/05/25/handy-arduinor3-pinout-diagram/)
a. Spesifikasi Arduino UNO
Arduino UNO merupakan board penerus Arduino Duemilanove.
Memiliki spesifikasi antara lain :

Mikrokontroler : ATMEGA328P

Tegangan Operasi : 5V

Tegangan Input (recommended) : 7 - 12 V

Tegangan Input (limit) : 6-20 V

Pin digital I/O : 14 (6 diantaranya pin PWM)
22

Pin Analog input : 6

Arus DC per pin I/O : 40 mA

Arus DC untuk pin 3.3 V : 150 mA

Flash Memory : 32 KB dengan 0.5KB digunakan untuk bootloader

SRAM : 2 KB

EEPROM : 1 KB

Kecepatan Pewaktuan : 16 Mhz
Gambar 2.4 ATmega328-Arduino Pin Mapping
(Sumber: http://arduino.cc/)
b. Daya Modul Arduino
Arduino Uno dapat diaktifkan melalui koneksi USB atau dengan
catu daya eksternal (non-USB) yaitu catu daya yang dapat berasal dari
sumber tegangan DC adaptor atau baterai. Adaptor ini dapat
dihubungkan dengan menancapkan plug jack konektor power pada
modul arduino.
Kisaran kebutuhan daya yang disarankan untuk board Uno adalah
7 volt – 12 volt, jika diberi daya kurang dari 7 volt kemungkinan pin 5 v
23
Uno dapat beroperasi tetapi tidak stabil, kemudian jika diberi daya lebih
dari 12V, regulator tegangan bisa panas dan dapat merusak board Uno.
Berikut penjelasan pin sumber tegangan modul Arduino adalah:
 VIN. Tegangan masukan kepada board Arduino ketika itu
menggunakan sumber daya eksternal (sebagai pengganti dari 5
volt koneksi USB atau sumber daya lainnya).
 5V. Catu daya digunakan untuk daya mikrokontroler dan komponen
lainnya.
 3v3. Sebuah pasokan 3,3 volt dihasilkan oleh regulator on-board.
 GND. Ground pin.
c. Memori
Arduino UNO rev.3 terpasang IC mikrokontroler ATmega328 yang
memiliki
memori
32
KB
(dengan
0,5
KB
digunakan
untuk
bootloader), 2 KB dari SRAM dan 1 KB EEPROM (yang dapat dibaca
dan ditulis dengan EEPROM liberary).
d. Input dan Output
Masing-masing dari 14 pin digital di Uno dapat digunakan sebagai
input atau output, dengan menggunakan fungsi pinMode ( ), digitalWrite
( ), dan digitalRead ( ), beroperasi dengan daya 5 volt. Setiap pin dapat
memberikan atau menerima maksimum 40 mA dan memiliki internal
pull-up resistor (secara default terputus) dari 20-50 kOhms. Selain itu,
beberapa pin memiliki fungsi khusus:
24
 Serial: 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan
mengirimkan (TX) TTL data serial. Pin ini dihubungkan ke pin yang
berkaitan dengan chip Serial ATmega8U2 USB-to-TTL.
 Eksternal menyela: 2 dan 3. Pin ini dapat dikonfigurasi untuk memicu
interrupt pada nilai yang rendah, dengan batasan tepi naik atau turun,
atau perubahan nilai.
 PWM: 3, 5, 6, 9, 10, dan 11. Menyediakan output PWM 8-bit dengan
fungsi analogWrite ().
 SPI: 10 (SS), 11 (Mosi), 12 (MISO), 13 (SCK). Pin ini mendukung
komunikasi SPI menggunakan SPI library.
 LED: 13. Ada built-in LED terhubung ke pin digital 13. Ketika pin
bernilai nilai HIGH, LED on, ketika pin bernilai LOW, LED off.
Uno memiliki 6 masukan analog, berlabel A0 sampai dengan A5,
yang masing-masing menyediakan 10 bit dengan resolusi (yaitu 1024
nilai yang berbeda). Selain itu, beberapa pin memiliki fungsi khusus:
 I2C: A4 (SDA) dan A5 (SCL). Dukungan I2C (TWI) komunikasi
menggunakan perpustakaan Wire.
 Aref. Tegangan referensi (0 sampai 5V saja) untuk input analog.
Digunakan dengan fungsi analogReference ().
 Reset. Bawa baris ini LOW untuk me-reset mikrokontroler.
e. Komunikasi
Arduino Uno memiliki sejumlah fasilitas untuk berkomunikasi
dengan
komputer,
Arduino
lain,
atau
mikrokontroler
lainnya.
25
ATmega328 menyediakan UART TTL (5V) untuk komunikasi serial,
yang tersedia di pin digital 0 (RX) dan 1 (TX). Sebuah ATmega8U2
sebagai saluran komunikasi serial melalui USB dan sebagai port virtual
com
untuk perangkat lunak pada komputer. Firmware ’8 U2
menggunakan driver USB standar COM, dan tidak ada driver eksternal
yang diperlukan namun, pada Windows diperlukan, sebuah file inf.
Perangkat
lunak
Arduino
terdapat
monitor
serial
yang
memungkinkan digunakan memonitor data tekstual sederhana yang akan
dikirim ke atau dari board Arduino. LED RX dan TX di modul Arduino
akan berkedip ketika data sedang dikirim melalui chip USB-to-serial
dengan koneksi USB ke komputer (tetapi tidak untuk komunikasi serial
pada pin 0 dan 1).
Sebuah
SoftwareSerial
library
memungkinkan
untuk
berkomunikasi secara serial pada salah satu pin digital pada board
Arduino Uno. ATmega328 juga mendukung I2C (TWI) dan komunikasi
SPI.
Perangkat
lunak
Arduino
termasuk
wire
library
untuk
menyederhanakan penggunaan bus I2C, untuk komunikasi SPI,
menggunakan perpustakaan SPI.
f. Bahasa Pemrograman Arduino dan Software IDE Arduino
Pemrograman Arduino mempunyai bahasa pemrograman sendiri
yaitu bahasa pemrograman C/C++ yang telah disederhanakan, sehingga
pemula pun bisa mempelajarinya dengan cukup mudah. Untuk membuat
program Arduino
dan
mengupload
ke
dalam
board
Arduino,
26
membutuhkan
software
Enviroment)
yang
Arduino
dapat
IDE
(Integrated
didownload
secara
Development
gratis
di
http://arduino.cc/en/Main/Software.
2.2.4 Bluetooth
Bluetooth adalah spesifikasi industri untuk jaringan kawasan pribadi
(personal area networks atau PAN) tanpa kabel. Bluetooth menghubungkan
dan dapat dipakai untuk melakukan tukar menukar informasi diantara
peralatan-peralatan. Spesifiksi dari peralatan Bluetooth ini dikembangkan
dan didistribusikan oleh kelompok Bluetooth Special Interest Group.
Bluetooth beroperasi dalam pita frekuensi 2,4 Ghz dengan menggunakan
sebuah frequency hopping traceiver yang mampu menyediakan layanan
komunikasi data dan suara secara real time antara host-host bluetooth
dengan jarak terbatas. Kelemahan teknologi ini adalah jangkauannya yang
pendek dan kemampuan transfer data yang rendah.
Range yang dapat dijangkau oleh Bluetooth adalah 10 meter atau 30
feet. Sistem Bluetooth juga menyediakan layanan komunikasi point to point
maupun komunikasi point to multipoint. Produk bluetooth dapat berupa PC
card atau USB adapter yang dimasukkan ke dalam perangkat. Sedangkan
perangkat yang dapat dikombinasikan dengan Bluetooth diantaranya:
handphone, kamera, personal computer (PC), printer, headset, Personal
Digital Assistant (PDA), dan lainnya. Aplikasi-aplikasi yang dapat
disediakan oleh layanan bluetooth ini antara lain : PC to PC file transfer,
27
PC to PC file synch (notebook to desktop), PC to mobile phone, PC to PDA,
wireless headset, LAN connection via ethernet access point dan sebagainya.
Salah satu perangkat bluetooth eksternal yang dirancang untuk
keperluan transfer data dan kendali dengan mikrokontroler ialah modul
bluetooth serial. Jenis modul bluetooth JY-MCU yang memiliki 4 pin yaitu:
- Pin VCC sebagai tegangan sumber modul Bluetooth +5Vdc.
- Pin GND sebagai ground modul Bluetooth.
- Pin TXD sebagai Transmit data yang dihubungkan ke pin RX Arduino.
- Pin RXD sebagai Receive data yang dihubungkan ke pin TX Arduino.
Gambar 2.5 Module Bluetooth JY-MCU Wireless Serial Port
Secara default konfigurasi modul Bluetooth JY-MCU ini memiliki
nama “Linvor” dengan kode pairing “1234” dan baudrate 9600bps. Berikut
spesifikasi Modul Bluetooth serial, yaitu:
- Bluetooth protocal : Bluetooth Specification v2.0+EDR
- Frequency : 2.4GHz ISM band
- Modulation : GFSK(Gaussian Frequency Shift Keying)
- Emission power : <=4dBm, Class 2
- Sensitivity : <=-84dBm at 0.1% BER
- Speed: Asynchronous: 2.1Mbps (Max) / 160kbps, Synchronous:
1Mbps/1Mbps
- Security : Authentication and encryption
28
- Profiles : Bluetooth serial port CSR
- chip : Bluetooth v2.0
- Wave band : 2.4GHz-2.8GHz, ISM Band
- Protocol : Bluetooth V2.0
- Power Class : (+6dbm)
- Reception sensitivity: -85dBm
- Voltage : 5 (3.6V-6V)
- Current : Paring - 35mA, Connected - 8mA
- Temperature : -40~ +105 Degrees Celsius
- User defined Baud rate : 4800, 9600, 19200, 38400, 57600, 115200,
230400,460800,921600 ,1382400.
- Dimension : 26.9mm*13mm*2.2mm
Komunikasi menggunakan Bluetooth memiliki kelebihan
dan
kekurangan, berikut penjelasan yang diantaranya.
 Kelebihan yang dimiliki oleh sistem Bluetooth adalah:
- Bluetooth dapat menembus dinding, kotak, dan berbagai rintangan
lain walaupun jarak transmisinya hanya sekitar 30 kaki atau 10 meter.
- Bluetooth tidak memerlukan kabel ataupun kawat.
- Bluetooth dapat mensinkronisasi basis data dari telepon genggam ke
komputer.
- Dapat digunakan sebagai perantara modem.
29
 Kekurangan dari sistem Bluetooth adalah:
- Sistem ini menggunakan frekuensi yang sama dengan gelombang
LAN standar.
- Apabila dalam suatu ruangan terlalu banyak koneksi Bluetooth yang
digunakan, akan menyulitkan pengguna untuk menemukan penerima
yang diharapkan.
- Banyak mekanisme keamanan Bluetooth yang harus diperhatikan
untuk mencegah kegagalan pengiriman atau penerimaan informasi.
- Di Indonesia, sudah banyak beredar virus-virus yang disebarkan
melalui bluetooth dari handphone.
2.2.5 Komunikasi Serial USART
Komunikasi serial ialah suatu sistem pengiriman dan penerimaan data
secara serial (data dikirim satu persatu secara berurutan), sehingga
komunikasi serial jauh lebih lambat dari pada komunikasi paralel. Agar
dapat melakukan hubungan antara perangkat satu dengan perangkat lainnya
maka dapat menggunakan mode komunikasi antar perangkat yang salah
satunya adalah dengan menggunakan mode komunikasi serial USART
(Universal
Synchronous
and
Asynchronous
serial
Receiver
and
Transmitter).
USART
adalah
piranti
komunikasi
serial
yang
kefleksibelan yang tinggi dan mempunyai fitur sebagai berikut:
mempunyai
30
- Operasi Full Duplex
- Mode Asinkron dan sinkron
- Baudrate generator resolusi tinggi
- Mode komunikasi multiprocessor
- Mode komunikasi asinkron kecepatan ganda.
Laju transfer data pada komunikasi serial dinyatakan dalam bps (bit
per second) atau dikenal dengan istilah baud rate. Agar komunikasi serial
dapat berjalan dengan baik maka harus dipastikan kecepatan transfer data
dari kedua perangkat yang dihubungkan memiliki baud rate yang sama.
Baud rate yang standar digunakan antara lain 2400, 4800, 9600, 19200 dan
lain-lain.
Pada komunikasi serial Arduino dengan modul bluetooth digunakan
mode komunikasi serial USART. Proses inisialisasi komunikasi USART ada
beberapa bagian yang harus dilakukan yaitu:
1. Menghitung nilai Baud Rate yang akan digunakan.
2. Mengaktifkan jalur komunikasi Receiver (RX) dan Trasmitter (TX).
3. Melakukan setting format frame data.
Dalam proses inisialisasi komunikasi serial USART ada beberapa
register yang perlu ditentukan nilainya, yaitu:
1. UBRR (USART Baud Rate Register)
UBRR merupakan register 16 bit yang digunakan untuk menentukan
kecepatan transmisi data yang digunakan pada saat komunikasi. UBRR
31
terbagi menjadi UBRR0L bit 0 – bit 7 untuk menyimpan nilai low dan
UBRR0H bit 8 – bit 15 untuk menyimpan nilai high dari baud rate.
Gambar 2.6 USART Baud Rate Register (UBRR)
(Sumber: Datasheet Atmega328)
Nilai UBRR dihitung dengan Asynchronous Normal Mode, jika nilai
frekuensi kristal (Fosc) 16MHz dan Baud rate 9600bps, maka:
𝑈𝐵𝑅𝑅 =
𝑈𝐵𝑅𝑅 =
𝐹𝑜𝑠𝑐
16×𝐵𝑎𝑢𝑑 𝑟𝑎𝑡𝑒
16.000.000
16×9600
− 1 ................................................ (2-1)
− 1 = 103,17 ≈ 103 ≈ 67ℎ𝑒𝑥
2. UCSR0A (USART Control and Status Register A)
UCSR0A merupakan register 8 bit yang digunakan untuk mengendalikan
mode komunikasi USART dan untuk membaca status yang sedang terjadi
pada USART.
Gambar 2.7 USART Control and Status Register A (UCSRA)
(Sumber: Datasheet Atmega328)
3. UCSR0B (USART Control and Status Register B)
UCSR0B merupakan register 8 bit yang digunakan untuk mengatur
aktivasi penerimaan (receiver) dan pengiriman (transmitter) pada
USART.
32
Gambar 2.8 USART Control and Status Register B (UCSRB)
(Sumber: Datasheet Atmega328)
Pada bagian ini yang akan diaktifkan hanya receiver, sehingga untuk
mengaktifkan jalur komunikasi data receiver (penerima) maka flag pada
RXEN diset 1.
4. UCSR0C (USART Control and Status Register C)
UCSR0C merupakan register 8 bit yang digunakan untuk menentukan
format frame data USART. Pada intinya komunikasi standar memiliki
format frame yaitu 8 bit data, 1 stop bit, no parity, Asinkron.
Gambar 2.9 USART Control and Status Register C (UCSRC)
(Sumber: Datasheet Atmega328)
Untuk mendapatkan format frame yang sesuai, maka flag pada register
UCSR0C diset dengan:
- Flag UMSEL01 dan UMSEL00 diset 0 untuk mode Asinkron.
- Flag UPM01 dan UPM00 diset 0 untuk no parity (disabled).
- Flag USBS0 diset 0 untuk 1 stop bit.
- Flag UCSZ01 dan UCSZ00 diset 1 untuk ukuran karakter 8 bit.
5. UDR (USART Data Register)
Register UDR digunakan untuk menyimpan data yang akan dikirim
maupun data yang diterima. Register UDR memiliki 2 alamat I/O yang
33
sama yaitu RXB sebagai buffer untuk menyimpan data yang akan
diterima dan TXB sebagai buffer untuk menyimpan data yang akan
dikirim.
Gambar 2.10 USART Data Register (UDR)
(Sumber: Datasheet Atmega328)
6. Proses penerimaan data (Receive data)
Proses penerimaan data serial deilakukan dengan mengecek nilai
bit RXC0 (USART Receive Complete) pada register UCSR0A. RXC0
akan bernilai 1 ketika ada data masuk yang belum dibaca dalam buffer
penerima, dan akan bernilai 0 jika tidak ada data dalam buffer penerima.
while(!(UCSR0A & (1<<RXC0)));
c=UDR0;
UCSR0A=(1<<RXC0);
2.2.6 Sistem Bilangan
Sistem Digital adalah suatu sistem yang berfungsi untuk mengukur
suatu nilai atau besaran yang bersifat tetap atau tidak teratur dalam bentuk
diskrit berupa digit digit atau angka angka. Pada komponen-komponen
komputer digital yang merupakan sistem digital bersifat saklar (switch),
sistem bilangan yang paling sesuai untuk komputer digital adalah sistem
bilangan biner (binary).
34
Keserdehanaan pengubahan bilangan biner ke bilangan oktal atau
heksadesimal dan sebaliknya, membuat bilangan oktal dan heksadesimal
juga banyak dipakai dalam dunia komputer, terutama dalam hubungan
pengkodean. Konversi bilangan adalah mengubah suatu sistem bilangan
menjadi sistem bilangan lain. Sistem bilangan ada 4 jenis, yaitu:
- Bilangan biner, adalah bilangan basis 2 yaitu 0 dan 1.
- Bilangan oktal, adalah bilangan basis 8 yaitu 0,1,2,3,4,5,6,7.
- Bilangan desimal, adalah bilangan basis 10 yaitu 0,1,2,3,4,5,6,7,8,9.
- Bilangan
heksadesimal,
adalah
bilangan
basis
16
yaitu
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (A=10, B=11, C=12, D=13, E=14,
F=15).
Berikut beberapa cara konversi sistem bilangan, disini hanya akan
dibahas sistem konversi bilangan biner, desimal dan hexadesimal.
 Konversi bilangan desimal ke biner dan dari biner ke desimal.
Untuk konversi bilangan desimal menjadi bilangan biner, maka
bilangan desimal dibagi dengan 2 hingga nilai desimal memperoleh nilai
terkecil 1 atau 0. Setiap nilai yang habis dibagi dengan 2 maka itu akan
menjadi nilai biner 0 dan jika menyisakan 1 maka itu akan menjadi nilai
biner 1. Hasil atau nilai sisa dari pembagian dibaca dari bawah (MSD) ke
atas (LSD) dan ditulis dari kiri ke kanan.
35
- Contoh bilangan desimal 576, maka bilangan biner-nya adalah:
2
2
2
2
2
2
2
2
2
567
288
144
72
36
18
9
4
2
1
sisa
0
0
0
0
0
1
0
0
Maka, 576 desimal = 10 0100 0000 biner.
Untuk konversi bilangan biner ke bilangan desimal, maka setiap bit
dikalikan dengan 2n, dimana n adalah posisi bit. Posisi bit paling kiri
adalah dengan pangkat paling besar (MSD) dan posisi bit paling kanan
adalah dengan pangkat paling kecil (LSD), kemudian hasilnya
dijumlahkan.
- Contoh konversi bilangan biner 11 1100 1001, maka bilangan
desimal-nya adalah:
11 1100 1001 = (1×29)+ (1×28)+ (1×27)+ (1×26)+ (0×25)+ (0×24)+
(1×23)+ (0×22)+ (0×21)+ (1×20)
= 512+256+128+64+0+0+8+0+0+1
= 969 desimal
Maka, 11 1100 1001 biner = 969 desimal
 Konversi nilai heksadesimal ke biner dan dari biner ke heksadesimal.
Untuk konversi bilangan heksadesimal menjadi bilangan biner
dengan cara menuliskan setiap digit heksadesimal menjadi 4 bit.
36
- Contoh konversi bilangan heksadesimal 26 dan 8A7, maka bilangan
biner-nya adalah :
26 hexa = 0010 0110 biner
2 = 0010
6 = 0110
8A7 hexa = 1000 1010 0111 biner
8 = 1000
A = 1010
7 = 0111
- Contoh konversi bilangan biner 0001 0011 dan 1100 1000 0111 1111,
maka bilangan heksadesimal-nya adalah:
0001 0011 biner = 13 hexa
0001 = 1
0011 = 3
1100 1000 0111 1111 biner = C87F hexa
1100 = C
1000 = 8
0111 = 7
1111 = F
 Konversi bilangan desimal ke heksadesimal dan dari heksadesimal ke
desimal.
Untuk konversi bilangan desimal menjadi bilangan heksadesimal
yaitu dengan cara membagi bilangan desimal dengan 16.
37
- Contoh konversi bilangan desimal 876, maka bilangan heksadesimalnya adalah:
16
876
16
54
3
sisa
12 atau C
6
Maka, 876 desimal = 36C hexa .
Untuk konversi dari bilangan heksadesimal menjadi bilangan
desimal yaitu dengan cara mengalikan setiap bit bilangan heksa dengan
16n, dimana n adalah posisi bit. Posis bit paling kiri adalah dengan
pangkat paling besar (MSD) dan posisi bit paling kanan adalah dengan
pangkat paling kecil (LSD), kemudian hasilnya dijumlahkan.
- Contoh konversi bilangan heksadesimal 2B8, pada bilangan
heksadesimal B adalah angka 11, sehingga bilangan desimal-nya
adalah:
2B8 hexa = (2×162)+(B×161)+(8×160)
= (2×162)+(11×161)+(8×160)
= 512+176+8
= 696 desimal
Maka, 2B8 heksadesimal = 696 desimal.
Kode Standar Amerika untuk Pertukaran Informasi atau ASCII
(American Standard Code for Information Interchange) merupakan suatu
standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode
tetapi ASCII lebih bersifat universal. Ia selalu digunakan oleh komputer dan
alat komunikasi lain untuk menunjukkan teks. Kode ASCII sebenarnya
38
memiliki komposisi bilangan biner sebanyak 7 bit. Namun, ASCII disimpan
sebagai sandi 8 bit dengan menambakan satu angka 0 sebagai bit significant
paling tinggi. Bit tambahan ini sering digunakan untuk uji prioritas.
Karakter control pada ASCII dibedakan menjadi 5 kelompok sesuai
dengan penggunaan yaitu berturut-turut meliputi logical communication,
Device control, Information separator, Code extention, dan physical
communication. Code ASCII ini banyak dijumpai pada papan ketik
(keyboard) computer atau instrument-instrument digital.
Jumlah kode ASCII adalah 255 kode. Kode ASCII 0..127 merupakan
kode ASCII untuk manipulasi teks, sedangkan kode ASCII 128..255
merupakan kode ASCII untuk manipulasi grafik.
Sistem komputer hanya mengerti bilangan biner saja, dalam program
yang pada dasarnya sebuah penerapan komputer, memakai karakter-karakter
yang terdapat dalam ASCII. Karakter ASCII sebenarnya dilambangkan
sebagai tipe data character/ huruf dalam bahasa pemrograman. Sebut saja
tipe char pada pemrograman C, sebenarnya juga karakter itu adalah angka.
Pada komunikasi serial, data yang dikirim berupa data karakter yang
dikirim dari aplikasi kendali pada smartphone android ke sistem alat melalui
komunikasi serial bluetooth. Misal untuk menghidupkan led, maka tombol
(button) ON pada aplikasi jika diklik akan mengirimkan data berupa
karakter ‘a’ ke sistem alat melalui jaringan bluetooth. Data yang diterima
berupa karakter ‘a’ pada dasarnya dikirim dalam bentuk kode biner,
berdasarkan tabel ASCII karakter ‘a’ memiliki kode biner 01100001.
39
Tabel 2.1 ASCII (American Standard Code for Information Interchange)
Sumber: http://www.commfront.com/ascii-chart-table.htm
2.2.7 Motor Servo
Motor servo termasuk salah satu jenis – jenis dari motor DC. Servo
adalah motor pengendali sempurna yang dapat diperintahkan untuk berotasi
pada posisi tertentu. Jenis motor servo ada 2 yaitu jenis motor servo
Continuous dan motor servo Standart. Kedua motor servo ini tidak jauh
berbeda hanya saja pada putarannya. Berikut ini adalah penjelasan kedua
jenis motor servo :
40

Motor Servo Standart. Motor servo jenis ini hanya mampu bergerak dua
arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai
90° sehingga total defleksi sudut dari kanan – tengah – kiri adalah 180°.

Motor Servo Continuous. Motor servo jenis ini mampu bergerak dua
arah (CW dan CCW) tanpa batasan defleksi sudut putar (dapat berputar
secara kontinyu).
Servo di dalamnya terdapat gearbox yang berguna untuk membuat
gerakan yang lebih bertenaga dan rangkaian elektronik untuk memudahkan.
Motor servo memiliki tiga kabel terhubung, 2 untuk power supply dengan
besar tegangan berkisar 5 sampai 7 volt. Kabel ketiga merupakan kabel
pengendali yang dapat langsung dihubungkan ke microcontroller.
Posisi perputaran motor dapat dikendalikan dengan menggunakan
gelombang pulsa yang dikirimkam ke motor servo. Untuk mengontrol
pergerakan motor digunakan metoda PWM (Pulsa Width Modulation).
PWM adalah merupakan suatu metoda untuk mengatur pergerakan motor
dengan cara mengatur prosentase lebar pulsa high terhadap perioda dari
suatu sinyal persegi dalam bentuk tegangan periodik yang diberikan ke
motor.
Motor servo akan dapat menerima pulsa setiap 20 ms. Panjang dari
pulsa akan berpengaruh terhadap perputaran dari motor, sebagai contoh jika
panjang pulsa 1,5 ms akan membuat motor berputar sebanyak 90 derajat,
jika lebar pulsa lebih besar dari 1.5 ms motor akan berputar mendekati 180
41
derajat sedangkan jika lebih kecil dari 1,5 ms maka motor akan berputar
mendekati 0 derajat.
<--pulsa high 1,5-->
<-----pulsa low 18,5------>
<---------panjang pulsa PWM 20ms---------->
Gambar 2.11 Panjang pulsa PWM servo (periode)
Gambar 2.12 Lebar pulsa mempengaruhi posisi motor servo
(Sumber: http://robomark.wordpress.com/tag/robotics-servo-dspic/)
Gambar 2.13 Towerpro SG90 Mini Servo
(Sumber: http://www.targethobby.com/towerpro-mini-9g-servo-p4161613.html)
42
Berikut spesifikasi Mini Servo TowerPro SG90:
- Dimensi: 22 X 11,5 X 22mm
- Kecepatan Operasi (4.8V tidak ada beban): 0.12sec/60 derajat
- Stall Torque (4.8V): 17.5oz/in (1 kg / cm)
- Range Suhu: -30 sampai +60 ˚C
- Derajat Lebar Band CDead: 7µsec
- Tegangan Operasi: 3,0 - 7,2 Volt
- Motor tanpa inti (coreless).
- Semua Gears Nylon
2.2.8 Timer/Counter PWM
Timer/Counter merupakan peripheral yang sangat serbaguna, dapat
digunakan untuk mengatur waktu, PWM, frekuensi, kecepatan atau
menyediakan sinyal output. Mikrokontroler memiliki 3 Timer/Counter yaitu
Timer0 (8-bit), Timer1 (16-bit) dan Timer2 (8-bit). Pada bahasan ini akan
digunakan Timer1 untuk mengendalikan PWM sebagai kendali gerak motor
servo.
Timer1 memiliki sebuah register 16-bit penangkap input dan dua buah
register pembanding output. Register penangkap input ICR1 (input capture
register 1) merupakan register 16-bit yang digunakan untuk mengukur
ketebalan detak pulsa (pulse width) atau waktu penangkapan (capturing
time). Regiater pembanding output OCR1 (Output Compare Register 1)
merupakan register 16-bit yang digunakan untuk menghasilkan frekuensi
43
atau detak dari timer/counter ke sebuah pin output di mikrokontroler. OCR
digunakan untuk mengendalikan gerak motor servo.
Gambar 2.14 Input capture register 1 (ICR1)
(Sumber: Datasheet Atmega328)
Gambar 2.15 Output capture register 1 (OCR1)
(Sumber: Datasheet Atmega328)
Untuk membangkitkan sinyal PWM, register yang digunakan untuk
mengendalikan pada Timer1 yaitu Timer/Counter Control Register TCCR1A
dan TCCR1B.
Gambar 2.16 Timer/Counter Control Register (TCCR)
(Sumber: Datasheet Atmega328)
44
Tabel 2.2 Deskripsi bit Compare Output Mode (COM)
Sumber: Datasheet Atmega328
Tabel 2.3 Deskripsi bit Clock select bit (CS)
Sumber: Datasheet Atmega328
45
Tabel 2.4 Deskripsi bit Waveform Generation Mode (WGM)
Sumber: Datasheet Atmega328
Dari inisialisasi register diatas diterangkan set bit:
- COM menggunakan mode non-inverting.
- WGM menggunakan Timer/Counter mode operasi PWM Phase and
Frequency Correct ICR1.
- CS menggunakan prescale 8.
Berikut inisialisasi register TCCR1A dan TCCR1B:
TCCR1A =(1<<COM1A1)|(0<<COM1A0)|(0<<COM1B1)|(0<<COM1B0)
|(0<<WGM11)|(0<<WGM10);
TCCR1B = (0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(0<<WGM12)
|(0<<CS12)|(1<<CS11)|(0<<CS10);
46
2.2.9 Led (Light Emitting Diode)
LED (Light Emitting Diode) adalah suatu diode semikonduktor yang
memancarkan cahaya monokromatik yang tidak koheren ketika diberi
tegangan maju. Gejala ini termasuk bentuk elektroluminesensi. Warna yang
dihasilkan bergantung pada bahan semikonduktor yang dipakai, dan bisa
juga ultraviolet dekat atau inframerah dekat.
Gambar 2.17 Konfigurasi Led
(Sumber: http://www.societyofrobots.com/electronics_led_tutorial.shtml)
Sebuah diode normal, biasanya terbuat dari silikon atau germanium.
Karakteristik chip LED pada umumnya adalah sama dengan karakteristik
diode yang hanya memerlukan tegangan tertentu untuk dapat beroperasi.
Namun bila diberikan tegangan yang terlalu besar, LED akan rusak
walaupun tegangan yang diberikan adalah tegangan maju.
Led membutuhkan arus listrik untuk menyala yang mengalir dari
anoda ke katoda. Led memiliki karakteristik berbeda-beda menurut warna
yang dihasilkan. Semakin besar arus yang mengalir pada led maka semakin
terang cahaya led yang dihasilkan, namun perlu diperhatikan bahwa
besarnya arus yang diperbolehkan antara 10mA – 20mA dan pada tegangan
1,6V – 3,5V tergantung dari warna yang dihasilkan. Apabila arus yang
mengalir lebih dari 20mA maka led akan putus/mati. Untuk menjaga agar
led tidak mati, perlu digunakan resistor sebagai penghambat arus.
47
Tegangan kerja pada sebuah led berdasarkan warna yang dihasilkan
adalah sebagai berikut:
Tabel 2.5 Tegangan Kerja Led
Led
Tegangan Led (Vled)
Arus Led (I)
Infra Merah
1,7 volt
50mA
Merah Standar
1,7 volt
10mA
Merah Super Bright
2,2 volt
20mA
Orange Standar
2,1 volt
10mA
Kuning Standar
2,1volt
10mA
Hijau Standar
2,2 volt
10mA
High Intensity White (Biru)
3,0 – 3,5 volt
20mA
High Intensity White (putih)
3,0 – 3,6 volt
20mA
Ultraviolet
3,5 volt
-
Sumber: https://play.google.com/store/apps/electrodroid
Mengacu pada data tabel led diatas maka nilai resistor untuk led dapat
dihitung dengan menggunakan persamaan:
𝑅=
𝑉𝑠𝑢𝑚𝑏𝑒𝑟 −𝑉𝑙𝑒𝑑
𝐼
..................................................................... (2-2)
dimana, Vsumber merupakan tegangan sumber, Vled merupakan tegangan kerja led
dan I adalah arus led. Dengan demikian arus total yang mengalir dan daya yang
dibutuhkan resistor dapat diperoleh dengan persamaan:
Arus total:
𝐼=
𝑉𝑠𝑢𝑚𝑏𝑒𝑟 −𝑉𝑙𝑒𝑑
𝑅
.................................................................... (2-3)
Daya resistor:
𝑃 = 𝐼 2 × 𝑅 ................................................................................ (2-4)
48
2.2.10 LDR (Light Dependent Resistor)
LDR singkatan dari Light Dependent Resistor adalah resistor yang
nilai resistansinya berubah-ubah karena adanya intensitas cahaya yang
diserap. LDR juga merupakan resistor yang mempunyai koefisien
temperature negatif, dimana resistansinya dipengaruhi oleh intrensitas
cahaya. LDR dibentuk dari cadium Sulfied (CDS) yang mana CDS
dihasilkan dari serbuk keramik. Secara umum, CDS disebut juga peralatan
photo conductive, selama konduktivitas atau resistansi dari CDS bervariasi
terhadap intensitas cahaya. Jika intensitas cahaya yang diterima tinggi maka
nilai hambatan akan kecil yang mengakibatkan tengangan yang keluar akan
tinggi begitu juga sebaliknya disinilah mekanisme proses perubahan cahaya
menjadi listrik terjadi.
Gambar 2.18 LDR, Karakteristik LDR dan Simbol LDR
(Sumber: http://mekatronikasekayu.blogspot.com)
2.2.11 Input Output Pin
Sebelum menggunakan pin-pin pada mikrokontroler, perlu dilakukan
di-set agar pin-pin tersebut menjadi input atau output. Pada Arduino yang
menggunakan mikrokontroler ATmega328 beberapa pin digunakan sebagai
49
pin output untuk led dan input untuk ldr. Ldr hanya digunakan sebagai input
pembaca ON/OFF dari led yang dikendalikan, sehingga hanya sebagai
saklar (1 atau 0) untuk menyalakan indikator led. Berikut konfigurasi pinpin yang digunakan:
Tabel 2.6 Pin output led dan input ldr dengan Arduino
Komponen
Pin Arduino
Pin Atmega328
Input/Output
Led1
Digital 7
PORTD.7
Output
Led2
Digital 8
PORTB.0
Output
Indikator Led1
Digital 4
PORTD.6
Output
Indikator Led2
Digital 12
PORTB.4
Output
LDR 1
Analog 0
PORTC.0
Input
LDR 2
Analog 1
PORTC.1
Input
- Set register pin output untuk led:
// set PortB.0 dan PortB.4 sebagai output
DDRB
= 0b00010001;
// 0x11
PORTB = 0b00000000;
// 0x00
// set PortD.7 dan PortD.6 sebagai output
DDRD
= 0b11000000;
// 0xC0
PORTD = 0b00000000;
// 0x00
50
2.2.12 Analog to Digial Converter (ADC)
ADC adalah salah satu fitur pada mikrokontroler yang dapat
digunakan untuk menerima masukan tegangan analog. Penggunaan sensor
menghasilkan berupa sinyal analog dan mikrokontroler pada dasarnya tidak
mengerti sinyal analog, mikrokontroler hanya mengerti binary 1 dan 0. TTL
adalah kamus yang menterjemahkan level tegangan ke dalam kode biner.
Pada AVR mikrokontroler besarnya resolusi ADC adalah 10-bit,
namun bisa juga menggunakan resolusi 8-bit. Resolusi 10 bit artinya kita
dapat membaca input tegangan analog dari 0 – Vref dengan nilai desimal
dari 0 – 1023. Vref sendiri nilainya sebesar 0 – 5 volt, dan masukan Vref
dapat dipilih dari eksternal (pin aref) 5V atau internal.
Pada Arduino UNO memiliki 6 pin ADC (A0~A5) dengan resolusi 10bit. Ada 4 register yang digunakan ADC yaitu:
 ADMUX (ADC Multiplexer Selection Register)
Register ini berperan sebagai menentukan tegangan referansi dari ADC
dan menentukan format hasil konversi dan menentukan channel ADC
yang digunakan (pin Analog yang digunakan).
Gambar 2.19 Register ADMUX
(Sumber: Datasheet Atmega328)
- Bit 7:6 (REFS1:0), digunakan untuk menentukan tegangan refeensi
ADC.
51
Tabel 2.7 Memilih tegangan referensi ADC
REFS1 REFS0
Tegangan Referensi
0
0
Tegangan diterapkan pada pin AREF
0
1
Tegangan referensi default (5V pada Arduino UNO)
1
0
Tidak digunakan
1
1
Tegangan referensi internal (1,1 V pada Arduino
UNO)
- Bit 5 (ADLAR), digunakan untuk menentukan format data hasil
konversi ADC. Set 1 jika resolusi 8-bit dan set 0 jika resolusi 10-bit.
Hasil diset 0 oleh software arduino.
- Bit 3:0 (MUX3:0), digunakan untuk menetukan channel ADC (pin
analog).
Tabel 2.8 Menentukan pin Analog
MUX3 MUX2 MUX1 MUX0 Analog Pin
0
0
0
0
0
0
0
0
1
1
0
0
1
0
2
0
0
1
1
3
0
1
0
0
4
0
1
0
1
5
 ADCSRA (ADC Control and Status Register A)
ADCSRA adalah register untuk mengendalikan konversi ADC.
Gambar 2.20 Register ADCSRA
(Sumber: Datasheet Atmega328)
52
- Bit 7 (ADEN – ADC Enable), digunakan untuk mengaktifkan (enable)
ADC. Jika di-set 1 enable ADC dan jika di-set 0 disable ADC.
- Bit 6 (ADSC – ADC Start Conversion), digunakan untuk memulai
(start) pembacaan ADC.
- Bit 5 (ADATE – ADC Auto Trigger Enable), mengendalikan trigger
otomatis pada konversi ADC.
- Bit 4:3 (ADIF – ADC Interrup Flag dan ADIE – ADC Interrupt
Enable), digunakan mengaktifkan interupsi ADC.
- Bit 2:0 (ADPS – ADC Prescaler Select), bit untuk menentukan faktor
divisi antara sistem frekuensi clock dan input clock ADC.
Tabel 2.9 ADC Prescaler Select
ADPS2
ADPS1
ADPS0
Divisi Faktor
0
0
0
2
0
0
1
2
0
1
0
4
0
1
1
8
1
0
0
16
1
0
1
32
1
1
0
64
1
1
1
128
 ADCH dan ADCL (ADC data register)
Ketika konversi telah komplit, maka hasil ditempatkan pada dua register
ini. Bit ADLAR dari register ADMUX mengontrol bagaimana hasilnya
disimpan. Pada Arduino mengatur ADLAR ke 0, pertama 2 bit hasil
53
konversi disimpan dalam ADCH dan sisanya 8 bit disimpan dalam
ADCL tersebut.
Gambar 2.21 Register ADC data register
(Sumber: Datasheet Atmega328)
Berikut setting konfigurasi register ADC, yaitu:
- Register ADMUX
Tabel 2.10 Set register ADMUX
7
6
5
4
3
2
1
0
REFS1
0
REFS0
1
ADLAR
0
0
MUX3
0
MUX2
0
MUX1
0
MUX0
0
bit
flag
0x40
Bit 7:6 (REFS1:0) diset “01”, menentukan tegangan referensi AVCC 5
Volt.
Bit 3:0 (MUX3:0) diset “0000”, menentukan channel (pin analog) 0.
ADMUX=0x40;
- Register ADCSRA
Tabel 2.11 Set register ADCSRA
7
6
5
4
3
2
1
0
ADEN
ADSC
ADATE
ADIF
ADIE
ADPS2
ADPS1
ADPS0
1
0
0
0
0
1
1
1
Bit 7 (ADEN) diset “1”, untuk mengaktifkan (enabled) ADC.
Bit 4 (ADIF) diset “1” tunggu hingga konversi kompilt.
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
Bit 2:0 (ADPS2:0) diset “111” prescaler 128
ADCSRA=0x87;
bit
flag
0x87
54
Berikut konfigurasi dan inisialisasi ADC untuk analog input (LDR).
Membaca hasil konversi ADC
#define ADC_VREF_TYPE 0x40 // Menentukan tegangan referensi pada register ADMUX
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
// Delay diperlukan untuk stabilisasi tegangan input ADC
ADCSRA|=(1<<ADSC);
// Mulai pembacaan ADC
// Tunggu hingga ADC komplit
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
// untuk mengambil nilai ADC gunakan ADCW(10-bit) dan ADCH(8-bit)
}
Inisialisasi ADC
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
// Mengaktifkan ADC dan clock frekuensi 125 KHz
Download