BAB III PERANCANGAN ALAT DAN PROGRAM
3.1
Persiapan Perancangan Alat Bab ini akan membahas mengenai perancangan alat mulai dari perangkat
lunak (Software) hingga ke perangkat Keras (Hardware), mengenai sistem perancangan akan dilakukan pengecekan contoh program sesuai standar yang dimiliki Arduino. Pada proses persiapan perakitan perangkat harus didukung dengan peralatan yang lengkap dan standar, agar memudahkan selama perakitan. Sistem pendeteksi dan pembatas jumlah orang dalam ruangan tentunya merupakan penggabungan dari perangkat lunak mulai dari : 1.
Arduino Merupakan induk program dari perangkat lunak untuk di aplikasikan sesuai kebutuhan.
2.
Sensor PIR Sebuah sensor yang dikemas dalam rangkaian integrasi, sehingga perancang dimudahkan dan terkoneksi ke pin digital Arduino dan dapat di program sesuai kebutuhan.
3.
Alarm Buzzer Sebagai pemberi peringatan secara audio apabila jumlah orang dalam ruangan sudah melebihi kapasitas, buzzer ini sebenarnya hanya sebuah tranducer yang merubah sinyal listrik menjadi suara, seperti halnya pada load speaker.
4.
LCD 16 X 2 Merupakan indikator yang memberikan tampilan untuk mengetahui jumlah orang dalam ruangan, sehingga lebih mudah dari segi pembacaan.
5.
LED Komponen ini hanya difungsikan sebagai tanda pemberi pembatas jumlah banyaknya orang dalam ruangan. 24
25
6.
Baterai / Adaptor Soket baterai atau adaptor digunakan untuk menyuplai Arduino dengan tegangan dari baterai / adaptor 9V pada saat Arduino sedang tidak disambungkan ke komputer.
7.
Peralatan Peralatan yang dipakai dalam perakitan alat ini diataranya adalah : • Solder listrik • Multi tester • Obeng set • Bor Listrik • dan lain – lain
Sebagai penunjung dalam proses perakitan diperlukan juga kelengkapan pendukung , mulai dari kabel jumper, papan breadboard, paku, lem kayu, box atau triplek dan lain – lain.
3.2
Blok Diagram Rangkaian Untuk merealisasikan sistem pendeteksi dan pembatas jumlah orang dalam
ruangan menggunakan sensor gerak PIR (Passive Infra Red) berbasis Arduino Uno dengan ditampilakan pada LCD (Liquid Crystal Display) 16x2, maka langkah pertama yang dilakukan adalah membuat blok diagram alat seperti Gambar 3.1.
LCD 16x2
SENSOR PIR
ARDUINO UNO
LED
BUZZER
Gambar 3.1 Diagram Blok Rangkaian Sistem Pendeteksi dan Pembatas Jumlah Orang
26
3.2.1
Flowchart Sistem Sistem berjalan saat sensor gerak (PIR) mendeteksi adanya gerakan
kemudian sensor gerak mengirim puls ke arduino yang dilanjutkan dengan arduino memproses data kemudian arduino mengirimkan perintah ke LCD untuk menampilkan hasil perhitungan jumlah orang dalam ruangan tersebut. Bila di dalam ruangan terdapat 1 – 10 orang, maka lampu LED mati, apabila terdapat 11 – 20 orang maka LED akan berkedip dan buzzer berbunyi kedip, dan apabila jumlah lebih dari 20 orang, maka LED menyala dan Buzzer berbunyi panjang sebagai alarm. Berikut adalah flowchart sistemnya: Mulai
Tidak Sensor PIR = Ya
Pengolahan data dengan Arduino
LCD 16x2
Jumlah Orang (1-10) LED mati
(>20) LED Menyala dan Buzzer Bunyi Panjang
Selesai
Gambar 3.2 Flowchart Sistem
(11-20) LED Kedip dan Buzzer Bunyi Kedip
27
3.2.2
Rangkaian Secara Umum Sebagai alat pendeteksi dan pembatas jumlah orang, rangkaian ini
dibuat seminimal mungkin sehingga lebih mudah dalam penerapannya. Adapun rangkaian dari alat yang dibuat dapat dilihat pada gambar 3.3 dibawah ini:
Gambar 3.3 Rangkaian Alat Sistem Pendeteksi dan Pembatas Jumlah Orang Dalam Ruangan Menggunakan Sensor Gerak PIR (Passive Infra Red) Berbasis Arduino
3.3
Realisasi Rangkaian Langkah berikutnya adalah merealisasikan rangkaian setiap blok,
rangkaian-rangkaian yang akan dibuat yaitu :
•
Perancangan Rangkaian Arduino Uno
•
Rangkaian Sensor dengan Arduino Uno
28
•
Aplikasi program Arduino IDE (Integrated Development Environment)
•
Aplikasi program LCD 16x2
•
Rangkaian Buzzer dengan Arduino Uno
3.3.1
Perancangan Rangkaian Arduino Uno Rangkaian kontrol disini menggunakan Arduino Uno yang akan
mengolah data masukan dan keluaran pada setiap pinnya. Arduino yang digunakan dalam perancangan ini merupakan komponen utama, karena komponen ini adalah yang akan mengatur keseluruhan sistem agar dapat bekerja dengan baik dan optimal. Perencanaan rangkaian arduino uno dapat dilihat pada gambar 3.4. Arduino uno akan memproses masukan dan keluran yang ada pada peralatan ini, pengontrolan tersebut dilakukan melalui pengaktifan masingmasing pin pada arduino. Untuk mengaktifkan pin-pin yang terdapat didalam arduino tersebut dilakukan dengan menggunakan prangkat lunak (Software) yang dimiliki oleh arduino. Untuk mengaktifkan arduino uno maka perlu diberikan tegangan supply +5 Volt DC yang dapat langsung di ambil dari port USB pada komputer, atau dapat juga d ambil dari supply tegangan DC lain.
29
Gambar 3.4 Rangkaian Arduino Uno
3.3.2
Rangkaian Sensor PIR Sensor PIR berfungsi sebagai masukan pada sistem rangkaian
Arduino Uno. Pin 1 pada sensor PIR dihubungkan ke Pin 7 pada Arduino Uno, Pin 2 pada Sensor PIR dihubungkan pada Pin Power 5 VDC pada Arduino Uno, Pin 3 pada Sensor PIR di hubungkan ke Pin GND power Arduino Uno.
Gambar 3.5 Bentuk Fisik Sensor PIR
30
Mengapa sensor PIR hanya bereaksi pada tubuh manusia saja? Hal ini disebabkan karena adanya IR Filter yang menyaring panjang gelombang sinar inframerah pasif. IR Filter dimodul sensor PIR ini mampu menyaring panjang gelombang sinar inframerah pasif antara 8 sampai 14 mikrometer, sehingga panjang gelombang yang dihasilkan dari tubuh manusia yang berkisar 9 sampai 10 mikrometer ini saja yang dapat dideteksi oleh sensor. Jadi ketika seseorang berjalan melewati sensor, sensor akan menangkap pancaran sinar inframerah pasif yang dipancarkan oleh tubuh manusia yang memiliki suhu yang berbeda dari lingkungan sehingga menyebabkan material pyroelectric bereaksi menghasilkan arus listrik karena adanya energi panas yang dibawa oleh sinar inframerah pasif tersebut. Kemudian sebuah sirkuit amplifier yang ada menguatkan arus tersebut
yang
kemudian
dibandingkan
oleh
comparator
sehingga
menghasilkan output. Ketika manusia berada di depan sensor PIR dengan kondisi diam, maka sensor PIR akan menghitung panjang gelombang yang dihasilkan oleh tubuh manusia tersebut. Panjang gelombang yang konstan ini menyebabkan energi panas yang dihasilkan dapat digambarkan hampir sama pada kondisi lingkungan disekitarnya. Ketika manusia itu melakukan gerakan, maka tubuh manusia itu akan menghasilkan pancaran sinar inframerah pasif dengan panjang gelombang yang bervariasi sehingga menghasilkan panas berbeda yang menyebabkan sensor merespon dengan cara menghasilkan arus pada material Pyroelectricnya dengan besaran yang berbeda beda. Karena besaran yang berbeda inilah comparator menghasilkan output. Jadi sensor PIR tidak akan menghasilkan output apabila sensor ini dihadapkan dengan benda panas yang tidak memiliki panjang gelombang inframerah antara 8 sampai 14 mikrometer dan benda yang diam seperti sinar lampu yang sangat terang yang mampu menghasilkan panas, pantulan objek benda dari cermin dan suhu panas ketika musim panas. Dalam pembuatan rangkaian sensor pendeteksi dan pembatas jumlah orang dalam ruangan menggunakan PIR dan Arduino. Langkah yang
31
kita lakukan hubungkanlah sensor PIR dengan Arduino seperti pada Gambar 3.7.
Gambar 3.6 Rangkaian Sensor PIR
Gambar 3.7 Menghubungkan Sensor PIR dengan Arduino Uno
Contoh program adalah sebagai berikut: /* * PIR SENSOR TESTER */
int ledPin = 13;
// choose the pin for the LED
int inputPin = 7;
// choose the lampu pin (for PIR sensor)
32 int pirState = LOW;
// we start, assuming no motion detected
int val = 0;
// variable for reading the pin status
void setup() { pinMode (ledPin, OUTPUT);
// declare LED as output
pinMode (inputPin, INPUT);
// declare sensor as input
Serial.begin(9600); }
void loop(){ val = digitalRead(inputPin);
// read input value
if (val == HIGH) {
// check if the input value
digitalWrite (ledPin, HIGH); // turn LED ON if (pirState == LOW) { // we have just turned on Serial.println("Motion detected!"); // we only want to print on the output change, not state pirState = HIGH; } } else { digitalWrite(ledPin, LOW); // turn LED OFF if (pirState == HIGH) { // we have just turned of Serial.println("Motion ended!"); // we only want to print on the output change, not state pirState = LOW; } } }
33
3.3.3
Aplikasi
Program
Arduino
IDE
(Integrated
Development Environment) Setelah proses rangkaian selesai dibuat langkah selanjutnya adalah membuat program pada aplikasi program arduino IDE (Integrated Development Environment). Buka program aplikasi arduino IDE kemudian bentuk tampilan kerja aplikasi arduino IDE Sketch terlihat seperti gambar 3.8.
Gambar 3.8 Program Arduino IDE (Integrated Development Environment)
3.3.3.1 Struktur Dasar Bahasa Program Arduino IDE yang digunakan • Void (Setup) Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan.
34
Contoh : void setup() { pinMode(13,OUTPUT); output }
//
mengset
‘pin’
13
sebagai
• Loop Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksiinstruksi yang ada dalam fungsi loop(). Contoh : void loop() { digitalWrite(13, HIGH); // nyalakan ‘pin’ 13 delay(1000); // pause selama 1 detik digitalWrite(13, LOW); // matikan ‘pin’ 13 delay(1000); /// pause selama 1 detik }
• Serial begin () Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate. Contoh : void setup() { Serial.begin(9600);
//open serial port and set baudrate 9600 bps
}
• Analog Read () Papan Arduino memiliki 6 chanel, 10 bit analog ke digital, artinya kita dapat memasukkan tegangan antara 0 dan 5 volts pada nilai integer antara 0 sampai 1023. Kisaran input atau masukan dan resolusi dapat dirubah menggunakan analog reference. Untuk membaca
analog
input
dibutuhkan
dibutuhkan
sekitar
100
microsecond (0.0001 s). Jadi rata – rata membacanya sekitar 10.000 kali dalam satu detik. Catatan : jika pin analog input tidak dapat terkoneksi dengan apapun nilainya akan kembali pada analogRead.
35 Syntax : analogRead(pin)
Contoh : Int analogPin = 3 // potentiometer wiper middle terminal connected to analog pin 3 Void setup () { Serial.begin (9600); } Void loop () { Val = analogRead(analogPin); // Read the input pin Serial.println(val); //debug value }
• Delay () Menghentikan program untuk mengukur waktu (dalam millisecond) yang terspesifikasi pada parameter (ada 1000 milisecond dalam setiap detik). Pada saat mudahnya membuat LED berkedip dengan fungsi delay, beberapa sketch atau lembar kerja mengalami delay. Membaca sensor, perhitungan Matematika, atau memanipulasi Pin dapat berkerja pada saat fungsi delay bekerja. Beberapa program berbasis pengetahuan biasanya menghindari penggunaan delay untuk kegiatan yang membutuhkan waktu lebih dari 10 miliseconds. Delay(1000);
//
menunggu
selama
satu
detik
• Flow Control If If Operator if mengetest sebuah kondisi seperti nilai analog sudah berada di bawah nilai yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris program yang ada dalam brackets kalau tidak terpenuhi maka akan mengabaikan baris program yang ada dalam brackets. If ( someVariable ?? value ) {
36
• If…else Operator if…else mengtest sebuah kondisi apabila tidak sesuai dengan kondisi yang pertama maka akan mengeksekusi baris program yang ada di else. If ( inputPin == HIGH ) { //Laksanakan rencana A; } Else { //Laksanakan rencana B; }
• For Operator for digunakan dalam blok pengulangan tertutup. For ( initialization; expression) { //doSomethig; }
condition;
• While Operator While akan terus mengulang baris perintah yang ada dalam bracket sampai ekspresi sebagai kondisi pengulangan benilai salah. While ( someVariable ?? value ) { //doSomething; }
• Digital I/O Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 - 13, ada saat tertentu I/O 0 dan 1 tidak bisa di gunakan karena di pakai untuk komunikasi serial, sehingga harus hatihati dalam pengalokasian I/O.
37
• pinMode (pin, mode) Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input atau Output. Arduino digital pins secara default di konfigurasi sebagai input sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode). pinMode (pin, OUTPUT); // sebagai output digitalWrite(pin, HIGH); // source voltage
mengset pin
pin sebagai
• digitalRead (pin) Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW. Value = digitalRead(pin); ‘value’ sama dengan pin
//
mengset
• digitalWrite (pin, value) Digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 (0 – 13). digitalWrite ( pin, HIGH ); to HIGH //DoSomething;
//
set
pin
• Analog I/O Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0 – 5. • analogRead (pin) Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin (0-5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023. Value = analogRead(pin); // mengset ‘value’ sama dengan nilai analog pin
38
• analogWrite (pin, value) Mengirimkan nilai analog pada pin analog. analogWrite(pin, value); ke pin analog
//
menulis
• Millis () Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penampungnya harus long integer. • SerialPrintln () Mengirimkan data ke serial port. Serial.println(100);
3.3.4
// mengirimkan 100
Aplikasi Program LCD 16x2 Pada bagian ini kami akan mengulas tentang
metode contoh
program standar dari Arduino untuk LCD (Liquid Crystal Display) .
Gambar 3.9 Menghubungkan LCD 16x2 dengan Arduino Dari datasheet akan kita peroleh informasi-informasi seperti ini, fungsi pin yang terdapat pada LCD ditunjukkan seperti pada Tabel 3.1 :
39
Tabel 3.1 Fungsi Pin Pada LCD
Dibawah ini adalah contoh wiring diagram atau skema LCD 16 X 2 dengan Arduino.Wiring diagram dibawah ini merupak koneksi standar dari program Arduino, sehingga para pengguna dimudahkan dalam proses perancangan LCD.
40
Gambar 3.10 Skema Arduino Dengan LCD 16 X 2
LCD memiliki karakteristik sebagai berikut: • Terdapat 16 x 2 karakter huruf yang bisa ditampilkan. • Terdapat 192 macam karakter. • Terdapat 80 x 8 bit display RAM (maksimal 80 karakter). • Memiliki kemampuan penulisan dengan 8 bit maupun dengan 4 bit. • Dibangun dengan osilator lokal. • Satu sumber tegangan 5 volt. • Otomatis reset saat tegangan dihidupkan. • Bekerja pada suhu 0oC sampai 55oC
Contoh program dari Arduino untuk LCD 16 X 2 seperti dibawah ini : // include the library code: #include
// initialize the library with the numbers of the interface pins
41 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis()/1000); }
3.3.5
Aplikasi Program Buzzer Untuk menghubungkan Buzzer/piezo elements ke salah satu pin
digital Arduino. Sebuah Buzzer akan menghasilkan suara ketukan setiap kali dialiri gelombang arus listrik.
Gambar 3.11 Rangkaian Buzzer
42
Gambar 3.12 Menghubungkan Buzzer dengan Arduino
Pada saat menempatkan buzzer, perhatikan polaritas-nya (tanda +) jangan terbalik. Kaki dengan tanda +dihubungkan dengan pin 13 Arduino.
Gambar 3.13 Skema Buzzer Berikut contoh programnya : /* Piezo This example shows how to run a Piezo Buzzer on pin 13 using the analogWrite() function. It beeps 3 times fast at startup, waits a second then beeps continuously at a slower pace
43 */ void setup() { // declare pin 13 to be an output: pinMode(13, OUTPUT); beep(50); beep(50); beep(50); delay(1000); } void loop() { beep(200); } void beep(unsigned char delayms){ analogWrite(13, 20); // Almost any value can be used except 0 and 255 // experiment to get the best tone delay(delayms); // wait for a delayms ms analogWrite(13, 0); // 0 turns it off delay(delayms); // wait for a delayms ms }