BAB III PERANCANGAN ALAT Bab ini menjelaskan tentang perancangan sistem IOT dari proyek yang sudah dijelaskan sebelumnya. 3.1. Diagram Blok Sistem Perancangan diagram blok sistem alat ini ditunjukkan pada gambar berikut : Gambar 3.1. Diagram Blok Sistem Sistem alat ini berbasis mikrokontroler Arduino UNO dan Ethernet Shield Arduino. Input menggunakan 5 sensor suhu yang akan diletakkan pada masing-masing lantai gedung untuk monitor keadaan suhu dari masing-masing lantai tersebut secara real time dan 3 sensor arus yang akan diletakkan pada Chiller (Pendingin) untuk memonitor penggunaan daya listrik peralatan tersebut secara real time, data dari sensor-sensor yang dipasang juga tersimpan dalam server dan dapat dibuka sewaktu-waktu untuk melakukan analisa. Data yang dibaca sensor-sensor tersebut berupa data analog yang diolah menggunakan mikrokontroler Arduino Uno. Selanjutnya data tersebut akan dikirim menggunakan Ethernet Shield Arduino ke Access Point Router Wifi. 30
Dari Access Point Router Wifi ini kemudian data disebarkan secara wireless sehingga data tersebut bisa dimonitor melalui web browser. Komunikasi data yang terjadi adalah komunikasi dua arah dimana user bisa melakukan monitor maupun kontrol hardware yang ada, monitor yang dapat dilakukan adalah monitor suhu yang merupakan input dari sensor suhu DHT 11 dan monitor penggunaan daya yang merupakan input dari sensor arus ACS712, sedangkan untuk kontrol yang dapat dilakukan adalah memberikan output berupa sinyal On / Off ke dalam relay yang selanjutnya akan diteruskan ke motor Chiller. Dalam alat yang saya rancang, sensor bertindak sebagai client, sehingga server tidak perlu mengirim perintah ke hardware untuk mendapatkan data hasil ukur sensor, tetapi setiap perubahan yang terjadi pada sensor akan selalu termonitor atau tersampaikan ke server. 3.2. Perancangan Perangkat Keras Mekanik Perancangan perangkat keras mekanik merupakan bentuk dari alat yang akan dibuat oleh penulis. Penulis membuat prototype yang sedikit banyaknya merepresentasikan implementasi yang ada di lapangan. Perancangannya terdiri dari electric panel untuk meletakkan komponen mikrokontroler dan lima ruang yang didalamnya dipasang sensor suhu DHT11 sebagai input mikrokontroler. Juga terdapat 3 motor AC yang merepresentasikan Chiller AC di lapangan. Masing-masing motor tersebut dapat dikontrol jarak jauh melalui relay yang sudah terpasang, pada motor tersebut juga sudah dilengkapi dengan sensor arus ACS712 sebagai input mikrokontroller. Gambar 3.2. Prototype IOT Monitor Kontrol AC 31
3.3. Perancangan Perangkat Keras Elektronik Perancangan perangkat keras elektronika pada alat ini dibuat untuk mendukung kerja dari sistem yang akan dibuat. Komponen penyusun perangkat keras elektronika meliputi rangkaian sensor DHT11, rangkaian sensor ACS712, rangkaian relay motor Arduino. Perangkat keras elektronika yang menyusun sistem alat ini meliputi : 3.3.1. Perancangan DHT 11 dengan Arduino Sensor suhu DHT11 berfungsi sebagai masukan pada sistem rangkaian Arduino Uno. Pin V+ dari DHT11 dihubungkan dengan catu daya pada pin Power 5 volt yang terdapat pada Arduino Uno, Pin GND dihubungkan ke Pin GND Power Arduino dan Pin Vout yang menghasilkan tegangan analog hasil pengindra suhu dihubungkan ke pin Analog In pada Arduino. DHT11 dapat mengukur suhu antara 0-50 derajat celcius dan kelembababn udara antara 20%-90% dengan resolusi masing-masing sebesar 0,1 derajat Celcius dan 1% RH (Relative Humidity). Akurasi untuk pengukuran dan kelembaban adalah (+/-) 2 derajat celcius. Keluaran modul sensor DHT11 telah dikalibrasi dengan tabung kalibrasi secara akurat, dan nilai koefisien kalibrasinya disimpan dalam memori OTP. DHT11 menggunakan teknologi sensor kelembababn yang baik dan menggunakan teknik akuisisi data eksklusif dengan memanfaatkan mikrokontroller 8 bit untuk menghasilkan data dalam format single bus. Gambar 3.3. Rangkaian DHT11 dengan Arduino 32
#include "DHT.h" #define DHTPIN1 34 #define DHTTYPE1 DHT11 DHT dht1(dhtpin1, DHTTYPE1); #define DHTPIN2 36 #define DHTTYPE2 DHT11 DHT dht2(dhtpin2, DHTTYPE2); #define DHTPIN3 38 #define DHTTYPE3 DHT11 DHT dht3(dhtpin3, DHTTYPE3); #define DHTPIN4 40 #define DHTTYPE4 DHT11 DHT dht4(dhtpin4, DHTTYPE4); #define DHTPIN5 42 #define DHTTYPE5 DHT11 DHT dht5(dhtpin5, DHTTYPE5); void setup() { Serial.begin(9600); dht1.begin(); dht2.begin(); dht3.begin(); dht4.begin(); dht5.begin(); void loop() { float t1 = dht1.readtemperature(); float t2 = dht2.readtemperature(); float t3 = dht3.readtemperature(); float t4 = dht4.readtemperature(); float t5 = dht5.readtemperature(); 33
client.print(t1,0); client.print(t2,0); client.print(t3,0); client.print(t4,0); client.print(t5,0); client.println(); 3.3.2. Perancangan ACS712 dengan Arduino Mengkoneksikan sensor arus ACS712 dengan arduino yaitu dimana tegangan 5V arduino dihubungkan melalui kabel merah ke Pin Vcc sensor arus ACS712, kemudian Ground arduino dihubungkan melalui kabel biru ke Pin GND sensor arus ACS712 dan Analog Read (A0) arduino dihungkan ke pada pin sinyal output sensor arus ACS712. Gambar 3.4. Rangkaian ACS712 dengan Arduino 34
Source Code Sensor Arus ACS712 untuk Arduino dapat menjalankan sensor arus ACS712 untuk 5A dengan memasukkan rumus kalibrasinya persamaan berikut: const int sensor_1 = A15; int mvperamp1 = 185; double Voltage1 = 0; double VRMS1 = 0; double AmpsRMS1 = 0; const int sensor_2 = A14; int mvperamp2 = 185; double Voltage2 = 0; double VRMS2 = 0; double AmpsRMS2 = 0; const int sensor_3 = A13; int mvperamp3 = 185; double Voltage3 = 0; double VRMS3 = 0; double AmpsRMS3 = 0; void loop() { Voltage1 = getvpp1(); VRMS1 = (Voltage1/2.0) *0.707; AmpsRMS1 = (VRMS1 * 1000)/mVperAmp1; if( AmpsRMS1 <= 0.35 ) { AmpsRMS1 = 0; } float a1 = AmpsRMS1 * 2; Voltage2 = getvpp2(); VRMS2 = (Voltage2/2.0) *0.707; AmpsRMS2 = (VRMS2 * 1000)/mVperAmp2; if( AmpsRMS2 <= 0.35 ) { AmpsRMS2 = 0; } float a2 = AmpsRMS2 * 2; 35
Voltage3 = getvpp3(); VRMS3 = (Voltage3/2.0) *0.707; AmpsRMS3 = (VRMS3 * 1000)/mVperAmp3; if( AmpsRMS3 <= 0.35 ) { AmpsRMS3 = 0; } float a3 = AmpsRMS3 * 2; client.print(a1); client.print(a2); client.print(a3); client.println(); float getvpp1() { float result1; int readvalue1; int maxvalue1 = 0; int minvalue1 = 1024; uint32_t start_time1 = millis(); while((millis()-start_time1) < 1000) { readvalue1 = analogread(sensor_1); if (readvalue1 > maxvalue1) { maxvalue1 = readvalue1; } if (readvalue1 < minvalue1) { minvalue1 = readvalue1; } } result1 = ((maxvalue1 - minvalue1) * 5.0)/1024.0; return result1;} 36
float getvpp2() { float result2; int readvalue2; int maxvalue2 = 0; int minvalue2 = 1024; uint32_t start_time2 = millis(); while((millis()-start_time2) < 1000) { readvalue2 = analogread(sensor_2); if (readvalue2 > maxvalue2) { maxvalue2 = readvalue2; } if (readvalue2 < minvalue2) { minvalue2 = readvalue2; } } result2 = ((maxvalue2 - minvalue2) * 5.0)/1024.0; return result2;} float getvpp3() { float result3; int readvalue3; int maxvalue3 = 0; int minvalue3 = 1024; uint32_t start_time3 = millis(); while((millis()-start_time3) < 1000) { readvalue3 = analogread(sensor_3); if (readvalue3 > maxvalue3) { maxvalue3 = readvalue3; } if (readvalue3 < minvalue3) { minvalue3 = readvalue3; } } result3 = ((maxvalue3 - minvalue3) * 5.0)/1024.0; return result3;} 37
3.3.3. Perancangan Relay dengan Arduino Modul relay 4 shield channel berfungsi sebagai saklar mekanik yang menyalakan dan mematikan beban (motor AC) yang diperintahkan oleh Arduino via web yang sudah dibuat. Relay ini menggerakkan 3 buah motor AC. Gambar 3.5. Rangkaian Relay dengan Arduino Modul ini merupakan modul jadi yang siap dipakai sehingga tidak perlu adanya perancangan tambahan. Modul relay ini dapat langsung disambungkan ke Arduino. String inputstring = ""; boolean stringcomplete = false; const int fan_1 = 27; const int fan_2 = 29; const int fan_3 = 31; int mul=0; char exe='-'; char record0='-'; char record='-'; 38
void setup() { Serial.begin(9600); pinmode(fan_1, OUTPUT); pinmode(fan_2, OUTPUT); pinmode(fan_3, OUTPUT); digitalwrite(fan_1, HIGH); digitalwrite(fan_2, HIGH); digitalwrite(fan_3, HIGH); while (!Serial) { ; } Serial.begin(9600); inputstring.reserve(200); } void loop() { perintah_serial(); if (client) { boolean currentlineisblank = true; while (client.connected()) { if (client.available()) { record0=record; char c = client.read(); record=c; if(c=='@'){ mul=1; } if(c=='@' && mul==1){ mul=0; exe=record0; if (exe =='A') { digitalwrite(fan_1, LOW); 39
if (exe=='a') { digitalwrite(fan_1, HIGH); if (exe =='B') { digitalwrite(fan_2, LOW); if (exe =='b') { digitalwrite(fan_2, HIGH); if (exe =='C') { digitalwrite(fan_3, LOW); if (exe =='c') { digitalwrite(fan_3, HIGH); } void perintah_serial() { while (Serial.available()) { char inchar = (char)serial.read(); inputstring += inchar; stringcomplete = true; Serial.println("menu"); if (inchar =='A') { digitalwrite(fan_1, LOW); 40
if (inchar =='a') { digitalwrite(fan_1, HIGH); if (inchar =='B') { digitalwrite(fan_2, LOW); if (inchar =='b') { digitalwrite(fan_2, HIGH); if (inchar =='C') { digitalwrite(fan_3, LOW); if (inchar =='c') { digitalwrite(fan_3, HIGH); }} 3.4. Perancangan Perangkat Lunak Perancangan perangkat lunak merupakan perancangan yang penting untuk menentukan proses kerja dari alat yang akan dibuat agar dapat bekerja sesuai dengan yang dikehendaki. Perancangan perangkat lunak terdiri dari perancangan tampilan halaman browser dan perancangan program utama. 41
3.4.1. Server SQL (XAMPP) Gambar 3.6. XAMPP Panel. Gambar 3.7. Tampilan PHP MyAdmin XAMPP. 42
3.4.2. Human Machine Interface Bentuk tampilan di dalam web browser yang akan disajikan untuk computer user menampilkan nilai suhu dalam derajad celcius dari ke 5 ruangan yang terpasang sensor DHT 11. Akan ditampilkan juga nilai arus dari ke 3 motor yang sudah terpasang sensor ACS712. Status dari ke 3 motor juga dapat dimonitor dengan melihat tombol yang ada (hijau on/merah off). Tombol-tombol tersebut juga menjadi media control dari motor yang ada. Web yang akan dibuat dirancang menggunakan Adobe Dreamweaver CS6, sebelumnya harus membuat server terlebih dahulu menggunakan XAMPP. Gambar 3.8. Perencanaan Tampilan Web (Adobe Dreamweaver view). Gambar 3.9. Program Perencanaan Web (Adobe Dreamweaver view). 43