BAB II LANDASAN TEORI

advertisement
BAB II
LANDASAN TEORI
2.1 Mesin Kasir
Cash register adalah mesin kasir elektronik yang memiliki fiturfitur yang terbatas namun biasanya sudah mencukupi untuk jenis usahausaha tertentu. Jenis usaha seperti bakery, depot, atau toko retail dengan
maksimum barang sekitar 1000 item masih dapat menggunakan mesin
kasir jenis cash register ini. Pada umumnya mesin kasir betujuan untuk
mengurangi tingkat kesalahan yang dilakukan SDM sehingga memperkecil
potensi kerugian. Cash register juga menghindarkan kasir anda
memberikan total kalkulasi belanja yang salah ke pelanggan, dan dapat
memperkecil kecurangan yang dilakukan oleh kasir toko.
2.1.1 Sejarah Mesin Kasir
Mesin Kasir ini asalnya ditemukan oleh Jamus Jacob Ritty yang
merupakan pembuat dari mesin kasir itu sendiri. Penemuannya dimulai dari
tahun 1879 paska perang sipil Amerika. James Ritty merupakan pemilik salon
5
http://digilib.mercubuana.ac.id/
6
yang berada di Dayton, Ohio Amerika Serikat. Fungsi dari mesin kasir ini
awalnya digunakan sebagai pencatat komponen pajak dalam sebuah
penjualan, namun perkembangan teknologi membuat Mesin Kasir sekarang
ini didukung dengan menggunakan beberapa perangkat seperti Timbangan
Digital, Pembaca Kartu Kredit, Mesin EDC Electronic Data yang saat ini
menjadi Trend yang berbasiskan Digital dan juga barcode Scanner Alat
Pemindai barcode
2.1.2 Perkembangan Mesin Kasir
Mesin Kasir yang pada asalnya hanya di gunakan oleh beberapa
perusahaan ternama saja, kini sudah merebah ke berbagai Negara sehingga
mesin kasir tersebut dapat di operasikan sesuai kegunaannya.
2.2 Mikrokontroler
Mikrokontroler adalah sebuah sistem komputer fungsional dalam
sebuah chip yang di dalamnya terkandung sebuah inti prosesor (CPU),
memori ROM, RAM), dan perlengkapan input output (I/O). Dengan kata lain,
mikrokontroler adalah suatu alat elektronika digital yang mempunyai input
dan output serta kendali dengan program yang bisa ditulis dan dihapus
dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan
menulis data. Mikrokontroler merupakan komputer didalam chip yang
digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi
dan efektifitas biaya. Secara harfiahnya bisa disebut “pengendali kecil”
dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan
komponen-komponen pendukung seperti IC TTL dan CMOS dapat
direduksi/diperkecil
dan
akhirnya
terpusat
http://digilib.mercubuana.ac.id/
serta
dikendalikan
oleh
7
mikrokontroler ini. Mikrokontroler terdiri dari beberapa bagian seperti yang
terlihat pada gambar di bawah ini:
Gambar 2.1. Bagian Mikrokontroler
Pada Gambar 2.1. di atas tampak suatu mikrokontroler standar
yang tersusun atas komponen-komponen sebagai berikut :

Central Processing Unit (CPU)
CPU merupakan bagian utama dalam suatu mikrokontroler. CPU
pada mikrokontroler ada yang berukuran 8 bit ada pula yang berukuran
16 bit. CPU ini akan membaca program yang tersimpan di dalam ROM
dan melaksanakannya.

Read Only Memory (ROM)
ROM merupakan suatu memori (alat untuk mengingat) yang
sifatnya hanya dibaca saja. Dengan demikian ROM tidak dapat ditulisi.
Dalam
dunia mikrokontroler ROM digunakan untuk menyimpan
program bagi mikrokontroler tersebut. Program tersimpan dalm format
biner (‘0’ atau ‘1’). Susunan bilangan biner tersebut bila telah terbaca
oleh mikrokontroler akan memiliki arti tersendiri.

Random Acces Memory (RAM)
http://digilib.mercubuana.ac.id/
8
Berbeda dengan ROM, RAM adalah jenis memori selain dapat
dibaca juga dapat ditulis berulang kali. Tentunya dalam pemakaian
mikrokontroler ada semacam data yang bisa
berubah pada saat
mikrokontroler tersebut bekerja. Perubahan data tersebut tentunya juga
akan tersimpan ke dalam memori. Isi pada RAM akan hilang jika catu
daya listrik hilang.

Input / Output (I/O)
Untuk berkomunikasi dengan dunia luar, maka mikrokontroler
menggunakan terminal I/O (port I/O), yang digunakan untuk masukan
atau keluaran.

Komponen lainnya
Beberapa mikrokontroler memiliki timer/counter, ADC (Analog to
Digital Converter), dan komponen lainnya. Pemilihan komponen
tambahan yang sesuai dengan tugas mikrokontroler akan sangat
membantu perancangan sehingga dapat mempertahankan ukuran yang
kecil.
Apabila komponen komponen tersebut belum ada pada suatu
mikrokontroler, umumnya komponen tersebut masih dapat ditambahkan
pada sistem mikrokontroler melalui port-portnya.
2.2.1 Arduino
Arduino
merupakan
rangkaian
elektronik
yang
bersifat open source, serta memiliki perangkat keras dan lunak yang mudah
untuk digunakan. Arduino dapat mengenali lingkungan sekitarnya melalui
berbagai jenis sensor dan dapat mengendalikan lampu, motor, dan berbagai
jenis aktuator lainnya. Arduino mempunyai banyak jenis, di antaranya
http://digilib.mercubuana.ac.id/
9
Arduino Uno, Arduino Mega 2560, Arduino Fio, dan lainnya. Dalam Tugas
Akhir ini penulis menggunakan Arduino Mega 2560 R3.
2.2.2 Arduino Mega 2560
Arduino Mega 2560 adalah sebuah papan mikrokontroller yang
berbasis ATmega2560. Arduino ini memiliki 54 pin input/output, dimana 15
pin dapat digunakan sebagai output PWM, 16 pin dapat digunakan sebagai
analog input, 4 pin dapat digunakan untuk UART (port serial hardware),
crystal osilator 16 MHz, koneksi USB, power jack, ICSP header, dan tombol
reset. Arduino ini memiliki segala yang dibutuhkan untuk memprogram
mikrokontroller seperti kabel USB dan catu daya melalui adaptor atau baterai.
Arduino ini juga dapat mendukung pemakaian mikrokontroller yang dapat
dikoneksikan dengan komputer menggunakan kabel USB atau listrik dengan
adaptor dari AC ke DC atau baterai untuk memulai pemakaian. Arduino
Mega 2560 kompatibel dengansebagian besar shield yang dirancang untuk
Arduino Duemilanove, Decimila maupun UNO. Arduino Mega 2560 adalah
versi terbaru yang menggantikan versi Arduino Mega.
Arduino Mega 2560 berbeda dari papan sebelumnya, karena versi
terbaru sudah tidak menggunakan chip driver FTDI USB-to-serial. Akan
tetapi sudah menggunakan chip Atmega 16U2 (Atmega 8U2 pada papan
Revisi 1 dan Revisi 2) yang diprogram sebagai konverter USB-to-serial.
Arduino Mega 2560 Revisi 2 memiliki resistor penarik jalur HWB 8U2
ke Ground, sehingga lebih mudah untuk dimasukkan ke dalam mode DFU.
Arduino Mega 2560 Revisi 3 memiliki fitur-fitur baru berikut:
http://digilib.mercubuana.ac.id/
10
1. Pin out : Ditambahkan pin SDA dan pin SCL yang dekat dengan pin
AREF dan dua pin baru lainnya ditempatkan dekat dengan pin RESET,
IOREF memungkinkan shield untuk beradaptasi dengan tegangan yang
tersedia pada papan. Di masa depan, shield akan kompatibel baik dengan
papan yang menggunakan AVR yang beroperasi dengan 5 Volt dan
dengan Arduino Due yang beroperasi dengan tegangan 3.3 Volt. Dan ada
dua pin yang tidak terhubung, yang disediakan untuk tujuan masa depan.
2. Sirkuit RESET.
3. Chip ATmega16U2 menggantikan chip Atmega 8U2.
Gambar 2.2. Board Arduino Mega 2560
Tabel 2.1. Spesifikasi Arduino Mega 2560
Microcontroller
Operating Voltage
Input Voltage (recommended)
Input Voltage (limit)
Digital I/O Pins
Analog Input Pins
DC Current per I/O Pin
DC Current for 3.3V Pin
Flash Memory
SRAM
EEPROM
ATmega2560
5V
7-12V
6-20V
54 (of which 15 provide PWM output)
16
20 Ma
50 mA
256 KB of which 8 KB used by bootloader
8 KB
4 KB
http://digilib.mercubuana.ac.id/
11
Clock Speed
LED_BUILTIN
Length
Width
Weight
16 MHz
13
101.52 mm
53.3 mm
37 g
Gambar 2.3. Pemetaan Pin Arduino Mega 2560

Daya (Power)
Arduino Mega dapat diaktifkan melalui koneksi USB atau dengan
catu daya eksternal. Sumber daya dipilih secara otomatis. Sumber daya
eksternal (non-USB) dapat berasal baik dari adaptor AC-DC atau baterai.
Adaptor dapat dihubungkan dengan mencolokkan steker 2,1 mm yang
http://digilib.mercubuana.ac.id/
12
bagian tengahnya terminal positif ke ke jack sumber tegangan pada papan.
Jika tegangan berasal dari baterai dapat langsung dihubungkan melalui
header pin Gnd dan pin Vin dari konektor POWER.
Papan Arduino ATmega 2560 dapat beroperasi dengan daya
eksternal 6 sampai 20 Volt. Jika diberi tegangan kurang dari 7 Volt, maka,
pin 5 Volt mungkin akan menghasilkan tegangan kurang dari 5 Volt dan
ini akan membuat papan menjadi tidak stabil. Jika sumber tegangan
menggunakan lebih dari 12 Volt, regulator tegangan akan mengalami
panas berlebih dan bisa merusak papan. Rentang sumber tegangan yang
dianjurkan adalah 7 sampai 12 Volt.
Pin tegangan yang tersedia pada papan Arduino adalah sebagai
berikut:
a. Vin:
Adalah input tegangan
untuk
papan
Arduino
ketika
menggunakan sumber daya eksternal (sebagai ‘saingan’ tegangan 5
Volt dari koneksi USB atau sumber daya ter-regulator lainnya).
Tegangan dapat diberikan melalui pin ini, atau jika akan memberikan
tegangan
untuk
papan
melalui
jack
power,
kita
bisa
mengakses/mengambil tegangan melalui pin ini.
b. 5V: Sebuah pin yang mengeluarkan tegangan ter-regulator 5 Volt,
dari pin ini tegangan sudah diatur (ter-regulator) dari regulator yang
tersedia (built-in) pada papan. Papan arduino juga dapat diaktifkan
dengan sumber daya yang berasal dari jack power DC (7-12 Volt),
konektor USB (5 Volt), atau pin Vin pada board (7-12 Volt).
http://digilib.mercubuana.ac.id/
13
Memberikan tegangan melalui pin 5V atau 3,3V secara langsung
tanpa melewati regulator dapat merusak papan Arduino.
c. 3V3: Sebuah pin yang menghasilkan tegangan 3,3 Volt. Tegangan ini
dihasilkan oleh regulator yang terdapat pada papan. Arus maksimum
yang dihasilkan adalah 50 mA.
d. GND: Pin Ground.
e. IOREF: Pin ini pada papan Arduino berfungsi untuk memberikan
referensi tegangan yang beroperasi pada microcontroller. Sebuah
perisai (shield) dikonfigurasi dengan benar untuk dapat membaca pin
tegangan IOREF dan memilih sumber daya yang tepat atau
mengaktifkan
penerjemah
tegangan
(voltage
translator)
pada output untuk bekerja pada tegangan 5 Volt atau 3,3 Volt.
 Memori
Arduino ATmega 2560 memiliki 256 KB flash memory untuk
menyimpan kode (8 KB digunakan untuk bootloader), 8 KB SRAM dan 4
KB EEPROM.

Input dan Output
Masing-masing dari 54 digital pin pada Arduino Mega dapat
digunakan sebagai input atau output, menggunakan fungsi pinMode() ,
digitalWrite() , dan digitalRead(). Arduino Mega beroperasi pada tegangan
5 volt. Setiap pin dapat memberikan atau menerima arus maksimum 40
mA dan memiliki resistor pull-up internal (yang terputus secara default)
sebesar 20 – 50 kilo ohms. Selain itu, beberapa pin memiliki fungsi khusus
sebagai berikut:
http://digilib.mercubuana.ac.id/
14
a. Serial yang digunakan untuk menerima (RX) dan mengirim (TX) data
serial TTL.
Tabel 2.2. Pin Serial RX dan TX
Nomor Pin
2
3
12
13
45
46
63
64
Nama Pin
PE0 (RXD0/PCINT8)
PE1 (TXD0)
PH0 (RXD2)
PH1 (TXD2)
PD2 (RXDI/INT2)
PD3 (TXD1/INT3)
PJ0 (RXD3/PCINT9)
PJ1 (TXD3/PCINT10)
Peta Nama Pin
Digital pin 0 (RX0)
Digital pin 1 (TX0)
Digital pin 17 (RX2)
Digital pin 16 (TX2)
Digital pin 19 (RX1)
Digital pin 18 (TX1)
Digital pin 15 (RX3)
Digital pin 14 (TX3)
b. Eksternal Interupsi: Pin ini dapat dikonfigurasi untuk mentrigger
sebuah interupsi pada nilai yang rendah, meningkat atau menurun, atau
perubahan pada nilai.
Tabel 2.3. Pin Eksternal Interupsi
Nomor Pin
6
7
43
44
45
46
Nama Pin
PE4 (OC3B/INT4)
PE5 (OC3C/INT5)
PD0 (SCL/INT0)
PD1 (SDA/INT1)
PD2 (RXDI/INT2)
PD3 (TXD1/INT3)
Peta Nama Pin
Digital pin 2 (PWM)
Digital pin 3 (PWM)
Digital pin 21 (SCL)
Digital pin 20 (SDA)
Digital pin 19 (RX1)
Digital pin 18 (TX1)
c. PWM : 2 sampai 13 dan 44 sampai 46. Mencakup 8 bit PWM dengan
fungsi analogWrite().
d. SPI : Pin ini mendukung komunikasi SPI menggunakan SPI library.
Pin SPI juga terhubung dengan header ICSP, yang secara fisik
kompatibel dengan Arduino Uno, Arduino Duemilanove dan Arduino
Diecimila.
http://digilib.mercubuana.ac.id/
15
Tabel 2.4. Pin SPI
Nomor Pin
19
20
21
22
Nama Pin
PB0 (SS/PCINT0)
PB1 (SCK/PCINT1)
PB2 (MOSI/PCINT2)
PB3 (MISO/PCINT3)
Peta Nama Pin
Digital pin 53 (SS)
Digital pin 52 (SCK)
Digital pin 51 (MOSI)
Digital pin 50 (MISO)
e. LED: Pin 13. Tersedia secara built-in LED pada papan Arduino yang
terhubung ke pin digital 13. Ketika pin diset bernilai HIGH, maka LED
menyala (ON), dan ketika pin diset bernilai LOW, maka LED padam
(OFF).
f. TWI: Pin 20 (SDA) dan pin 21 (SCL). Yang mendukung komunikasi
TWI menggunakan Wire library. Pin ini tidak berada di lokasi yang
sama dengan pin TWI pada Arduino Duemilanove atau Arduino
Diecimila.
Arduino Mega 2560 memiliki 16 pin sebagai analog input, yang
masing-masing menyediakan resolusi 10 bit (yaitu 1024 nilai yang
berbeda). Secara default pin ini dapat diukur/diatur dari Ground sampai
dengan 5 Volt, hal ini juga memungkinkan untuk mengubah titik
jangkauan tertinggi atau terendah menggunakan pin AREF dan
fungsi Analog Reference(). Ada beberapa pin lainnya yang tersedia, antara
lain:
a. AREF : Referensi tegangan untuk input analog. Dan digunakan dengan
Analog Reference().
http://digilib.mercubuana.ac.id/
16
b. RESET: Jalur LOW ini digunakan untuk me-reset (menghidupkan
ulang)
microcontroller.
Jalur
ini
biasanya
digunakan
untuk
menambahkan tombol reset pada shield yang menghalangi papan utama
Arduino.

Komunikasi
Arduino
berkomunikasi
Mega
dengan
2560
memiliki
komputer,
dengan microcontroller lainnya.
sejumlah
dengan
Arduino
Mega
fasilitas
Arduino
2560
lain,
untuk
atau
menyediakan
4 hardware komunikasi serial UART TTL (5 Volt). Sebuah chip ATmega
16U2 (ATmega 8U2 pada papan Revisi 1 dan Revisi 2) yang terdapat pada
papan digunakan sebagai media komunikasi serial melalui USB dan
muncul sebagai COM Port Virtual (pada Device komputer) untuk
berkomunikasi dengan perangkat lunak (software) pada computer. Untuk
sistem operasi Windows masih tetap memerlukan file inf, tetapi untuk
sistem operasi OS X dan Linux akan mengenali papan sebagai port COM
secara otomatis. Perangkat lunak Arduino termasuk didalamnya serial
monitor memungkinkan data tekstual sederhana dikirim ke dan dari papan
Arduino. LED RX dan TX yang ada pada papan akan berkedip ketika data
sedang dikirim atau diterima melalui chip USB-to-serial yang terhubung
melalui USB komputer (tetapi tidak untuk komunikasi serial seperti pada
pin 0 dan 1).
Sebuah Software Serial library memungkinkan
untuk
dapat
melakukan komunikasi serial pada salah satu pin digital Arduino Mega
2560. ATmega 2560 juga mendukung komunikasi TWI dan SPI.
http://digilib.mercubuana.ac.id/
17
Perangkat
lunak
Arduino
termasuk Wirelibrary digunakan
untuk
menyederhanakan penggunaan bus TWI. Untuk komunikasi SPI,
menggunakan SPI library.

Reset Otomatis
Daripada menekan tombol reset sebelum upload, Arduino Mega
2560 didesain dengan cara yang memungkinkan untuk melakukan
reset melalui perangkat lunak yang berjalan pada komputer yang
terhubung. Salah satu jalur kontrol hardware (DTR) mengalir dari
ATmega 8U2/16U2 dan terhubung ke jalur reset dari ATmega 2560
melalui kapasitor 100 nanofarad. Bila jalur ini di-set rendah/low,
jalur reset drop cukup lama untuk me-reset chip. Perangkat lunak Arduino
menggunakan kemampuan ini untuk meng-upload kode dengan hanya
menekan tombol upload pada perangkat lunak Arduino. Hal ini berarti
bahwa bootloader memiliki rentang waktu yang lebih pendek, seperti
menurunkan DTR dapat berjalan beriringan dengan dimulainya upload.
Pengaturan ini juga memiliki implikasi lain. Ketika Mega 2560
terhubung dengan komputer yang menggunakan sistem operasi Mac OS X
atau Linux, papan Arduino akan di-reset setiap kali dihubungkan
dengan software komputer (melalui USB). Dan setengah detik kemudian
atau
lebih, bootloader akan
berjalan
pada
papan
Mega
2560.
Proses reset melalui program ini digunakan untuk mengabaikan data yang
cacat (yaitu apapun selain meng-upload kode baru), ia akan memotong dan
membuang beberapa byte pertama dari data yang dikirim ke papan setelah
sambungan dibuka. Jika sebuah sketsa dijalankan pada papan untuk
http://digilib.mercubuana.ac.id/
18
menerima satu kali konfigurasi atau menerima data lain ketika pertama
kali dijalankan, pastikan bahwa perangkat lunak diberikan waktu untuk
berkomunikasi dengan menunggu satu detik setelah terkoneksi dan
sebelum digunakan untuk mengirim data.
Mega 2560 memiliki trek jalur yang dapat dipotong untuk
menonaktifkan fungsi auto-reset. Pad di kedua sisi jalur dapat hubungkan
dengan disolder untuk mengaktifkan kembali fungsi auto-reset. Pad
berlabel
“RESET-EN”.
Hal
ini
juga
dapat
digunakan
untuk
menonaktifkan auto-reset dengan menghubungkan resistor 110 ohm dari
5V ke jalur reset.

Perlindungan Beban Berlebih pada USB
Arduino Mega 2560 memiliki polyfuse reset yang melindungi port
USB komputer Anda dari hubungan singkat dan arus lebih. Meskipun pada
dasarnya komputer telah memiliki perlindungan internal pada port USB
mereka sendiri, fuse memberikan lapisan perlindungan tambahan. Jika arus
lebih dari 500mA dihubunkan ke port USB,fuse secara otomatis akan
memutuskan sambungan sampai hubungan singkat atau overload hilang.
2.2.3 Software IDE Arduino
Integrated Development Environment (IDE) Arduino merupakan
aplikasi yang mencakup editor, compiler, dan uploader dapat menggunakan
semua seri modul keluarga Arduino seperti Arduino Duemilanove, Uno,
Bluetooth, Mega. Kecuali ada beberapa tipe board produksi Arduino yang
memakai microcontroller di luar seri AVR, seperti mikroprosesor ARM. Saat
menulis kode program atau mengkompilasi modul hardware Arduino tidak
http://digilib.mercubuana.ac.id/
19
harus tersambung ke PC atau Notebook, walaupun saat proses unggahan
ke board diperlukan modul hardware.
IDE Arduino juga memiliki keterbatasan tidak mendukung fungsi
debugging hardware
maupun software. Proses kompliasi IDE Arduino
diawali dengan proses pengecekan kesalahan sintaksis sketch, kemudian
memanfaatkan pustaka Proscessing dan avr – gcc sketch dikompilasi menjadi
berkas object, lalu berkas-berkas object digabungkan oleh pustaka Arduino
menjadi berkas biner. Berkas biner ini diunggah ke chip microcontroller via
kabel USB, serial port DB9, atau Serial Bluetooth.
Compiler IDE Ardunino
juga
memanfaatkan
pustaka open
source AVRLibc sebagai standar de-facto pustaka referensi dan fungsi
register microcontroller AVR. Pustaka AVRLibc ini sudah disertakan dalam
satu paket program IDE Arduino. Meskipun demikian, kita tidak perlu
mendefinisikan directive#include dari pustaka AVRLibc pada sketch karena
otomatis compilerme-link pustaka AVRLibc tersebut.
Ukuran berkas biner HEX hasil kompilasi akan semakin besar jika
kode sketch semakin kompleks. Berkas biner memiliki ekstensi .hex berisi
data instruksi program yang biasa dipahami oleh microcontroller target.
Selainitu, port pararel juga bias dipakai untuk mengunggah bootloader ke
microcontroller. Meskipun demikian, cara ini sudah jarang digunakan karena
sekarang hampir tidak ada mainboard PC yang masih menyediakan port
pararel, dan pada notebook juga sudah tidak menyertakan port pararel.
http://digilib.mercubuana.ac.id/
20
Gambar 2.4. Tampilan Sketch di Arduino IDE
Pada Gambar 2.4 terlihat button (tombol) yang ada di IDE Arduino,
button compile berfungsi untuk kompilasi sketch tanpa unggah ke board bisa
dipakai untuk pengecekan kesalahan kode sintaks sketch. Button upload
untuk mengunggah hasil kompilasi sketch ke board target. Pesan error akan
terlihat jika board belum terpasang atau alamat port COM belum
terkonfigurasi dengan benar.
Berkas Pustaka yang tersimpan di dalam direktori yang
sama sketchbook akan terlihat dalam Tab sketchbook. Berkas pustaka yang
tersimpan di direktori/Arduino/libraries/tidakditampilkan pada tab sketch
meskipun bisa diakses oleh sketch lain.
2.3 Bahasa Pemograman Arduino Berbasis Bahasa C
Bahasa C adalah suatu bahasa pemrograman. Bahasa C termasuk
sebagai bahasa pemrograman tingkat menengah, yang bisa dipelajari dengan
http://digilib.mercubuana.ac.id/
21
lebih mudah karena mudah dimengerti tetapi mempunyai kemampuan yang
tinggi. Berikut merupakan keunggulan-keungulan Bahasa C:

Bahasa C merupakan bahasa yang powerful dan fleksibel yang telah
terbukti dapat menyelesaikan program-program besar seperti pembuatan
sistem operasi, pengolah gambar (seperti pembuatan game) dan juga
pembuatan kompilator bahasa pemrograman baru.

Bahasa C merupakan bahasa yang portabel sehingga dapat dijalankan di
beberapa sistem operasi yang berbeda. Sebagai contoh program yang kita
tulis dalam sistem operasi windows dapat kita kompilasi didalam sistem
operasi linux dengan sedikit ataupun tanpa perubahan sama sekali.

Bahasa C merupakan bahasa yang sangat populer dan banyak digunakan
oleh programmer berpengalaman sehingga kemungkinan besar library
pemorograman telah banyak disediakan oleh pihak luar/lain dan dapat
diperoleh dengan mudah.

Bahasa C merupakan bahasa yang bersifat modular, yaitu tersusun atas
rutin-rutin tertentu yang dinamakan dengan fungsi (function) dan fungsifungsi tersebut dapat digunakan kembali untuk pembuatan programprogram lainnya tanpa harus menulis ulang implementasinya.

Bahasa C merupakan bahasa tingkat menengah (middle level language)
sehingga mudah untuk melakukan interface (pembuatan program antar
muka) ke perangkat keras.
Bagian-bagian dalam Pemograman Bahasa C:

Fungsi main
http://digilib.mercubuana.ac.id/
22
Merupakan fungsi yang menjadi inti dari program dan merupakan awal
dan akhir eksekusi. Fungsi ini harus ada dalam setiap program. Tanda
kurawal buka { merupakan tanda awal fungsi main dan tanda kurawal
tutup } merupakan tanda berakhirnya fungsi main.

Prepocessor directive/header file
Preprocessor directive merupakan suatu pernyataan yang akan diikut
sertakan dalam program, dimana pernyataan tersebut akan di-compile
sebelum proses compilasi yang sebenarnya dilakukan.

Deklarasi
Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier)
dalam program. Identifier dapat berupa variable, konstanta dan fungsi.

Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses
program berlangsung. Konstanta nilainya selalu tetap.

Variable
Variabel adalah suatu pengenal (identifier) yang digunakan untuk
mewakili suatu nilai tertentu di dalam proses program. Berbeda dengan
konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa diubahubah sesuai kebutuhan.
Aturan Umum Penulisan Bahasa C:

Membedakan penulisan huruf besar dan kecil.

Untuk memberi komentar pada suatu statement (keadaan), dapat
menggunakan /* di awal dan */ di akhir atau // dalam satu baris.

Awal dan akhir subroutine atau fungsi harus diapit kurung kurawal ({ }).
http://digilib.mercubuana.ac.id/
23

Setiap statement harus diakhiri tanda titik koma, kecuali statement yang
diawali oleh tanda kres “#”.

Setiap variabel yang digunakan wajib dideklarasikan terlebih dahulu.

Untuk bahasa C setiap melakukan proses input dan outpu data harus selalu
menyertakan format datanya, sedangkan di C++ tidak.
2.4 Arduino Ethernet Shield
Ethernet Shield menambah kemampuan papan arduino agar
terhubung ke jaringan komputer. Ethernet shield berbasiskan chip ethernet
Wiznet W5100. Ethernet library digunakan dalam menulis program agar
papan arduino dapat terhubung ke jaringan dengan menggunakan arduino
Ethernet shield.
Pada ethernet shield terdapat sebuah slot micro-SD, yang dapat
digunakan untuk menyimpan file yang dapat diakses melalui jaringan.
Onboard micro-SD card reader diakses dengan menggunakan SD library.
Arduino board berkomunikasi dengan W5100 dan SD card mengunakan bus
SPI (Serial Peripheral Interface). Komunikasi ini diatur oleh library SPI.h dan
Ethernet.h. Bus SPI menggunakan pin digital 11, 12 dan 13 pada Arduino
Uno. Pin digital 10 digunakan untuk memilih W5100 dan pin digital 4
digunakan untuk memilih SD card. Pin-pin yang sudah disebutkan
sebelumnya tidak dapat digunakan untuk input/output umum ketika kita
menggunakan ethernet shield.
Karena W5100 dan SD card berbagi bus SPI, hanya salah satu yang
dapat aktif pada satu waktu. Jika kita menggunakan kedua perangkat dalam
program kita, hal ini akan diatasi oleh library yang sesuai. Jika kita tidak
http://digilib.mercubuana.ac.id/
24
menggunakan 15 salah satu perangkat dalam program kita, kiranya kita perlu
secara eksplisit mendeselect-nya. Untuk melakukan hal ini pada SD card, set
pin 4 sebagai output dan menuliskan logika tinggi padanya, sedangkan untuk
W5100 yang digunakan adalah pin 10. DFRduino Ethernet shield adalah
sebuah clone dari arduino Ethernet shield yang dibuat oleh DFRobot.
Gambar 2.5. DFRduino Ethernet Shield
2.5 LCD (Liquid Crystal Display)
LCD (Liquid Crystal Display) adalah salah satu komponen
elektronika
yang berfungsi sebagai tampilan suatu data, baik karakter, huruf
ataupun grafik. Dipasaran tampilan LCD sudah tersedia dalam bentuk modul
yaitu tampilan LCD beserta rangkaian pendukungnya. LCD mempunyai
pin data, kontrol catu daya, dan pengatur kontras tampilan.
LCD juga merupakan perangkat display yang paling umum
dipasangkan di Mikrokontroller, mengingat ukurannya yang kecil dan
kemampuannya menampilkan karakter atau grafik yang lebih dibandingkan
display seven-segmen. Pada pengembangan sistem embedded, LCD mutlak
diperlukan sebagai sumber pemberi informasi utama, misalnya alat pengukur
kadar gula darah, penampil waktu jam, penampil counter putaran motor
http://digilib.mercubuana.ac.id/
25
industri dan lain-lain. Berdasarkan jenis tampilan, LCD dapat dikelompokan
menjadi beberapa jenis, yaitu:
a. Segment LCD
LCD ini berbentuk dari beberapa Sevent Segment Display atau Sixteen
Segment Dispaly, namun ada juga yang mengabungkan keduanya. LCD
ini sering dipakai untuk jam digital.
b. Dot Matrix character LCD
LCD ini terbentuk dari beberapa Dot Matrix Display berukuran 5x7 atau
5x9 yang membentuk sebuah matriks yang lebih besar dengan berbagai
kombinasi jumlah baris dan kolom. Kombinasi ini yang menentukan
karakter yang dapat ditampilkan LCD tersebut. Seperti 2 baris 20 karakter
atau 4 baris 20 karakter.
c. Graphic LCD
LCD jenis ini masih berkembang saat ini. Resolasi LCD ini bervariasi,
diantaranya128x64, 128x128. Sekarang ini Graphic LCD banyak dipakai
pada Handycam, laptop, telpon seluler (cellphone), monitor komputer dan
lain sebagainya.
2.5.1 Register pada LCD
Register yang terdapat di LCD adalah sebagai berikut:
a. IR (Intruction Register)
Digunakan untuk menentukan fungsi yang harus dikerjakan oleh
LCD serta pengalamatan DDRAM atau CGRAM.
b. DR (Data Register)
http://digilib.mercubuana.ac.id/
26
Digunakan sebagai tempat data DDRAM atau CGRAM yang akan
ditulis atau dibaca oleh komputer atau sistem minimum. Saat
dibaca, DR menyimpan data DDRAM atau CGRAM, setelah itu
data alamatnya secara otomatis masuk ke DR. Pada waktu menulis,
cukup lakukan inisialisasi DDRAM atau CGRAM, kemudian untuk
selanjutnya data dituliskan ke DDRAM atau CGRAM sejak awal
alamat tersebut.
c. BF (Busy Flag)
Digunakan untuk LCD dalam keadaan siap atau sibuk. Apabila
LCD sedang melakukan operasi internal, BF diset menjadi 1,
sehingga tidak akan menerima perintahdari luar. Jadi, BF harus
dicek apakah telah diriset menjadi 0 ketika akan menulis LCD
(memberi data pada LCD). Cara untuk menulis LCD adalah dengan
mengeset RS menjadi 0 dan mengeset R/W menjadi 1.
d. AC (Address Counter)
Digunakan untuk menunjukan alamat pada DDRAM atau CGRAM
dibaca atau ditulis, maka AC secara otomatis menunjukan alamat
berikutnya. Alamat yang disimpan AC dapat dibaca bersamaan
dengan BF.
e. DDRAM (Display Data Random Access Memory)
http://digilib.mercubuana.ac.id/
27
Digunakan sebagai tempat penyimpanan data sebesar 80 byte atau
80 karakter. AC menunjukan alamat karakter yang sedang
ditampilkan.
f. CGROM (Character Generator Read Only Memory)
Pada LCD terdapat ROM untuk menyimpan karakter-karakter
ASCII (American Standart Code for Interchage Intruction),
sehingga cukup memasukan kode ASCII untuk menampilkanya.
g. CGRAM (Character Generator Random Access Memory)
Sebagai data storage untuk merancang karakter yang dikehendaki.
Untuk CGRAM terdapat kode ASCII dari 00h sampai 0Fh, tetapi
hanya 8 karakter yang disediakan. Alamat CGRAM hanya 6 bit, 3
bit untuk mengatur tinggi karakter dan 3 bit tinggi menjadi 3 bit
rendah DDRAM yang menunjukan karakter, sedangkan 3 bit
rendah sebagai posisi data CGRAM untuk membuat tampilan baris
dalam dot
matriks 5x7 karakter
tersebut,
dimulai
dari
atas.
Sehingga karakter untuk kode ASCII 00h sama dengan 09h sampai
07h dengan 0Fh. Dengan demikian untuk perancangan 1 karakter
memerlukan penulisan data ke CGRAM sampai 8 kali.
h. Cursor and Blink Control circuit
Merupakan rangkaian yang menghasilkan tampilan kursor dan
kondisi blink (berkedap-kedip).
http://digilib.mercubuana.ac.id/
28
Gambar 2.6. LCD 2004A
Tabel 2.5. Deskripsi pin pada LCD
http://digilib.mercubuana.ac.id/
29
Gambar 2.7. Detail Karakter LCD 20x4
2.6. Motor Servo
Motor servo adalah sebuah perangkat atau aktuator putar (motor)
yang dirancang dengan sistem kontrol umpan balik loop tertutup (servo),
sehingga dapat diset-up atau diatur untuk menentukan dan memastikan posisi
sudut dari poros output motor. Motor servo merupakan perangkat yang terdiri
dari motor DC, serangkaian gear, rangkaian kontrol dan potensiometer.
Serangkaian gear yang melekat pada poros motor DC akan memperlambat
putaran poros dan meningkatkan torsi motor servo, sedangkan potensiometer
dengan perubahan resistansinya saat motor berputar berfungsi sebagai
penentu batas posisi putaran poros motor servo.
Penggunaan sistem kontrol loop tertutup pada motor servo berguna
untuk mengontrol gerakan dan posisi akhir dari poros motor servo. Penjelasan
sederhananya begini, posisi poros output akan di sensor untuk mengetahui
posisi poros sudah tepat seperti yang diinginkan atau belum, dan jika belum,
maka kontrol input akan mengirim sinyal kendali untuk membuat posisi poros
http://digilib.mercubuana.ac.id/
30
tersebut tepat pada posisi yang diinginkan. Motor servo biasa digunakan
dalam aplikasi-aplikasi di industri, selain itu juga digunakan dalam berbagai
aplikasi lain seperti pada mobil mainan, radio kontrol, robot, pesawat, dan
lain sebagainya.
Ada dua jenis motor servo, yaitu motor servo AC dan DC. Motor
servo AC lebih dapat menangani arus yang tinggi atau beban berat, sehingga
sering diaplikasikan pada mesin-mesin industri. Sedangkan motor servo DC
biasanya lebih cocok untuk digunakan pada aplikasi-aplikasi yang lebih kecil.
Dan bila dibedakan menurut rotasinya, umumnya terdapat dua jenis motor
servo yang dan terdapat di pasaran, yaitu motor servo rotation 180⁰ dan servo
rotation continuous.
a. Motor servo standard (servo rotation 180⁰) adalah jenis yang paling
umum dari motor servo, dimana putaran poros outputnya terbatas hanya
90⁰ kearah kanan dan 90⁰ kearah kiri. Dengan kata lain total putarannya
hanya setengah lingkaran atau 180⁰.
b. Motor servo rotation continuous merupakan jenis motor servo yang
sebenarnya sama dengan jenis servo standard, hanya saja perputaran
porosnya tanpa batasan atau dengan kata lain dapat berputar terus, baik ke
arah kanan maupun kiri.
2.6.1. Prinsip kerja motor servo
Motor servo dikendalikan dengan memberikan sinyal modulasi
lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar
pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran
dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms
http://digilib.mercubuana.ac.id/
31
(mili detik) akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa
lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri
(berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan
lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi
180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar
dibawah ini.
Gambar 2.8. Posisi motor servo terkrndali oleh variable lebar pulsa
Ketika lebar pulsa kendali telah diberikan, maka poros motor servo
akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti
pada posisi tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada
kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut,
maka motor servo akan mencoba menahan atau melawan dengan besarnya
kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak
akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali
harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi
poros motor servo tetap bertahan pada posisinya.
http://digilib.mercubuana.ac.id/
32
Gambar 2.9. Motor Servo S90
2.7. Web Server
Secara garis besar, web server memiliki fungsi untuk menerima
request dan merespon request dari client melalui browser pada jalur protocol
komunikasi yang kemudian diteruskan kembali ke client berupa hasil yang ada
berupa data-data seperti gambar, tulisan, video, atau dokumen. Sederhananya
pengertian web server adalah sebuah perangkat lunak (server web) yang merespon
permintaan
dari
client
(menggunakan
web
browser)
ke
tempat
data
diletakkan/disimpan, yang kemudian dikirimkan melalui jalut http (Hypertext
Transmit Protocol)/ https (Hypertext Transmit Protocol Secure) dan ditampilkan
di halaman web browser yang digunakan oleh client.
2.7.1 Wamp Server
Wamp Server adalah paket web server yang bekerja secara pada
local host yang dibuat secara independen dan diinstal pada sistem operasi
Windows. Wampserver digunakan untuk membuat web server lokal pada
komputer guna memudahkan perancangan dan pembuatan web sebelum
dipublikasikan ke internet atau jaringan lokal (LAN).
http://digilib.mercubuana.ac.id/
33
WAMP adalah singkatan dari dari Windows and the principal
components of the package: Apache, MySQL and PHP (Perl or Python). Apache
adalah Web server, MySQL adalah database, PHP adalah bahasa scripting yang
dapat memanipulasi informasi yang dibuat di database dan menghasilkan halaman
web dinamis konten setiap waktu diminta oleh browser. Program lain juga dapat
dimasukkan dalam paket, seperti phpMyAdmin yang menyediakan antarmuka
pengguna grafis untuk manajer database MySQL, atau bahasa scripting Python
alternatif atau Perl. Gambar dibawah ini merupakan bagian-bagian dari Wamp
Server:
. Gambar 2.10. Bagian-bagian dari Wamp Server

Localhost berfungsi untuk menampilkan localhost di browser.

phpMyAdmin merupakan tempat untuk mengakses database.

www directory merupakan tempat menyimpan file-file, seperti file
HTML, gambar, video, dll.

Apache, merupakan aplikasi web server. Tugas utama Apache adalah
menghasilkan halaman web yang benar kepada user berdasarkan kode
PHP yang dituliskan oleh pembuat halaman web. jika diperlukan juga
berdasarkan kode PHP yang dituliskan,maka dapat saja suatu database
http://digilib.mercubuana.ac.id/
34
diakses terlebih dahulu (misalnya dalam MySQL) untuk mendukung
halaman web yang dihasilkan.

PHP, bahasa pemrograman web. Bahasa pemrograman PHP merupakan
bahasa pemrograman untuk membuat web yang bersifat server-side
scripting. PHP memungkinkan kita untuk membuat halaman web yang
bersifat dinamis. Sistem manajemen basis data yang sering digunakan
bersama PHP adalah MySQl. namun PHP juga mendukung sistem
manajement database Oracle, Microsoft Access, Interbase, d-base,
PostgreSQL, dan sebagainya.
Kelebihan PHP dari bahasa pemrograman lain:

Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak
melakukan sebuah kompilasi dalam penggunaanya.

Web Server yang mendukung PHP dapat ditemukan dimana - mana
dari mulai apache, IIS, Lighttpd, hingga Xitami dengan konfigurasi
yang relatif mudah.

Dalam sisi pengembangan lebih mudah, karena banyaknya milis milis dan developer yang siap membantu dalam pengembangan.

Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling
mudah karena memiliki referensi yang banyak.

PHP adalah bahasa open source yang dapat digunakan di berbagai
mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan
secara runtime melalui console serta juga dapat menjalankan perintahperintah system.
http://digilib.mercubuana.ac.id/
35

MySQL, merupakan aplikasi database server. Perkembangannya disebut
SQL yang merupakan kepanjangan dari Structured Query Language. SQL
merupakan bahasa terstruktur yang digunakan untuk mengolah database.
MySQL dapat digunakan untuk membuat dan mengelola database beserta
isinya. Kita
dapat
memanfaatkan MySQL untuk
menambahkan,
mengubah, dan menghapus data yang berada dalam database.
MySQL memiliki beberapa keistimewaan, antara lain:

Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem
operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris,
Amiga, dan masih banyak lagi.

Open Source. MySQL didistribusikan secara open source, dibawah
lisensi GPL sehingga dapat digunakan secara cuma-cuma.

‘Multiuser’. MySQL dapat digunakan oleh beberapa user dalam waktu
yang bersamaan tanpa mengalami masalah atau konflik.

‘Performance tuning’. MySQL memiliki kecepatan yang menakjubkan
dalam menangani query sederhana, dengan kata lain dapat memproses
lebih banyak SQL per satuan waktu.

Jenis Kolom. MySQL memiliki tipe kolom yang sangat kompleks,
seperti signed / unsigned integer, float, double, char, text, date,
timestamp, dan lain-lain.

Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara
penuh yang mendukung perintah Select dan Where dalam perintah
(query).
http://digilib.mercubuana.ac.id/
36

Keamanan. MySQL memiliki beberapa lapisan sekuritas seperti level
subnetmask, nama host, dan izin akses user dengan sistem perizinan
yang mendetail serta sandi terenkripsi.

Skalabilitas dan Pembatasan. MySQL mampu menangani basis data
dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta
dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang
dapat ditampung mencapai 32 indeks pada tiap tabelnya.

Konektivitas. MySQL dapat melakukan koneksi dengan klien
menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named
Pipes (NT).

Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien
dengan menggunakan lebih dari dua puluh bahasa. Meski pun
demikian, bahasa Indonesia belum termasuk di dalamnya.

Antar Muka. MySQL memiliki interface (antar muka) terhadap
berbagai aplikasi dan bahasa pemrograman dengan menggunakan
fungsi API (Application Programming Interface).

Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan
(tool)yang dapat digunakan untuk administrasi basis data, dan pada
setiap peralatan yang ada disertakan petunjuk online.

Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel
dalam menangani ALTER TABLE, dibandingkan basis data lainnya
semacam PostgreSQL ataupun Oracle.
http://digilib.mercubuana.ac.id/
Download