Alat Pengamat dan Kendali Suhu Melalui Web Browser
Perancangan Alat
Perancangan Alat
Cara kerja rancang bangun pengendali dan pengamat suhu ruangan secara
nirkabel berbasis ESP8266 nodemcu menggunakan web browser dapat
dijelaskan dengan flowchart.
Penjelasan dari flowchart diatas adalah sebagai berikut.
Penjelasan dari flowchart diatas adalah sebagai berikut.
1. Mulai, merupakan kondisi dimana setiap komponen
pada alat pengendali dan pengamat suhu ruangan mendapat tegangan meliputi
ESP8266 Nodemcu, DHT1, relay, kipas serta terhubungnya dengan Modem Wifi
portabel.
2. Proses membaca suhu ruangan berupa data celcius dan
fahrenheit yang didapat ada ruangan tersebut.
3. ESP8266 Nodemcu sebagai web server menampilkan pada
halaman web data suhu celcius dan fahrenheit pada ruangan dari sensor suhu.
Data suhu ruangan tersebut ditampilkan pada pengguna untuk di lakukan proses
pengamatan data suhu pada ruangan tersebut.
4. Kontrol kipas berupa push button pada
halaman web sebagai remote untuk menjalankan dan mematikan kipas. Ketika
pengguna menekan ”TURN ON” maka kipas tersebut akan menyala yang
fungsinya menurunkan suhu rungan tersbut, sedangkan saat pengguna menekan “TURN
OFF” pada halaman web maka kipas akan dalam kondisi mati.
5. Kodisi nyala kipas dan matinya kipas akan
ditampilkan pada tampilan web sebagai indikator bahwa kipas dalam keadaan hidup
atau mati kipas pada ruangan tersebut sebagai monitoring nirkabel
kondisi kipas.
6. Selesai, saat pencatu daya dari semua
komponen diputus.
Pembuatan
Program
Agar rancang bangun
pengamat dan pengendali suhu ruangan secara nikabel berbasis ESP8266 nodemcu
menggunakan web browser ini dapat
bekerja sesuai dengan tujuan, maka perlu dilakukan pemrograman pada
mikrokontroler yang digunakan sebagai alat kontrol utama. Pada perancangan alat
ini digunakan software Arduino IDE
1.8.2 untuk memprogram dan mengupload program yang telah dibuat ke board ESP8266 nodemcu.
Software
Arduino IDE 1.8.2
menggunakan struktur bahasa C dalam menjalankan fungsi-fungsinya. Pada
perancangan alat software ini
digunakan sebagai program dasar dari alat sebagai web server untuk
mengendalikan suhu ruangan.
#include <ESP8266Wifi.h>
#include “DHT.h”
|
Blok program diatas
merupakan library yang dipakai dalam
rancang bangun pengendali dan pengamat suhu ruangan secara nirkabel berbasis
ESP8266 nodemcu menggunakan web browser.
Fungsi-fungsi komponen agar dapat bekerja sesuai terdapat pada library tersebut. Library yang digunakan yaitu ESP8266 nodemcu sebagai perangkat
kontroler web server dan DHT11 sebagai sensor. Pada penggunaannya terutama
sensor library dapat membantu board ESP8266 nodemcu mengerti data yang
diterima dari DHT11.
#define DHTTYPE DHT11
const int DHTPin = 5;
DHT dht(DHTPin, DHTTYPE);
int fanPin = D0;
const char* ssid = "BOLT!-76BD";
const char* password = "71554022";
WifiServer server(80);
|
Blok program diatas
menginisialisasi DHT11 yang digunakan sebagai sensor. Pin data yang digunakan
pada ESP8266 nodemcu berada di pin 5, pin tersebut yang digunakan sebagai
penampil data yang di ukur oleh sensor berupa sinyal analog. Suhu yang
dihasilkan sensor DHT11 menjadi acuan pada alat rancang bangun pengamat dan
pengendali suhu ruangan secara nirkabel berbasis ESP8266 nodemcu menggunakan web browser. Pin D0 diinisialisasikan
sebagai pin kendali kipas, dalam alat pin tersebut terpasang pada relay. Pada
program terdapat ssid dan password untuk mendeklarasikan koneksi lokal wifi yang tersambung dan terhubung pada
web server port 80.
void setup() {
Serial.begin(9600);
delay(10);
|
Pada saat awal program
berjalan atau hidupnya perangkat ESP8266 nodemcu proses dapat dilihat pada
serial port 9600 di arduino IDE.
dht.begin();
pinMode(fanPin, OUTPUT);
digitalWrite(fanPin, LOW);
|
Proses
selanjutnya mengkondisikan setiap perangkat sensor dht dalam keadaan siap dan
pin D0 dalam kondisi LOW.
Serial.println();
Serial.print("Connecting
to ");
Serial.println(ssid);
Wifi.begin(ssid, password);
while (Wifi.status() !=
WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wifi
connected");
server.begin();
Serial.println("Web
server running. Waiting for the ESP IP...");
delay(5000);
Serial.println(Wifi.localIP());
}
|
Seanjutnya proses
mengkoneksikan perangkat ESP8266 nodemcu dengan wifi lokal dengan mencari ssid pada program deklarasi program. Jika
terhubung dengan wifi tersebut
perangkat akan mendapatkan alamat IP yang diberikan wifi sebagai alamat lokal.
void loop() {
WifiClient client =
server.available();
if (client) {
boolean blank_line = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
String request =
client.readStringUntil('\r');
|
Program ini digunakan
jika terjadi masalah koneksi maka perangkat akan secara otomatis menghubungkan
kembali pada jaringan lokal yang sebelumnya terhubung ke perangkat dan prgram
untuk mencari secara berulang jaringan lokal.
int value;
if
(request.indexOf("/Kipas=ON") != -1) {
digitalWrite(fanPin,
HIGH);
value = 1;
}
if
(request.indexOf("/Kipas=OFF") != -1) {
digitalWrite(fanPin,
LOW);
value = 0;
}
|
Perintah untuk
mengendalikan keadaan nyala dan matinya kipas, terdapat 2 kondisi pada pin D0
terdapat yaitu HIGH dan LOW. Perintah HIGH maka pada tampilan link kondisi kipas ON sedangkan jika LOW
maka pada tampilan link kondisi kipas OFF
if (c == '\n' &&
blank_line) {
float t =
dht.readTemperature();
float f =
dht.readTemperature(true);
if (isnan(t) ||
isnan(f)) {
Serial.println("Failed
to read from DHT sensor!");
}
else{
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.println(" *F ");
}
|
Perintah data suhu yang
akan digunakan pada pengukuran suhu ruangan. Data yang diberikan DHT11 berupa
data suhu celcius dan fahrenheit. Pendeklarasian kode suhu tersebut akan
digunakan untuk menampilkan hasil pada program html web. Data suhu dapat dilihat pada serial monitor Arduino IDE untuk
mengetahui suhu yang ditampilkan sensor sesuai dengan tampilan yang berada di web.
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection:
close");
client.println();
client.print("<HEAD>");
client.print("<meta http-equiv=\"refresh\"
content=\"2\">");
client.print("<TITLE />Zoomkat's meta-refresh test</title>");
client.print("</head>");
|
Tampilan yang akan
dimunculkan pada web masih sederhana
dengan menggunakan tampilan awal html. Web
ini menggunakan sistem reflesh otomatis
yang berguna untuk mengetahui suhu yang telah terupdate data suhu ruangan tersebut.
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head><body><h1>Monitoring
Suhu
Ruangan</h1><h3>Temperatur
dalam Celsius: ");
client.println(t);//celsiusTemp
client.println("*C</h3><h3>Temperatur dalam Fahrenaheit: ");
client.println(f);//fahrenheitTemp
client.println("*F</h3><h3>");
client.println("</body></html>");
|
Kodingan html tersebut
adalah tampilan web yang akan
ditampilkan sebernarnya pada web browser.
Pada bagian atas halaman menampilkan “ Monitoring Suhu Ruangan “ dan dibawahnya
temperatur celsius beserta data suhu dan temperatur fahrenheit beserta data
suhu.
client.print("Pendingin: ");
if(value == 1) {
client.print("Nyala");
}
else
{
client.print("Mati");
}
client.println("<br><br>");
client.println("<a
href=\"/KIPAS=ON\"\"><button style=\"display:
block; width: 25%;\">Turn On </button></a>");
client.println("</h3><h3>");
client.println("<a
href=\"/KIPAS=OFF\"\"><button style=\"display:
block; width: 25%;\">Turn Off </button></a><br
/>");
client.println("</html>");
|
Pada tampilan web juga
menampilkan kondisi pendingin ruangan dalam keadaan nyala atau mati beserta
tombol mengdalikan kipas nyala dan matinya pada web dengan ukuran 25% dari besarnya halaman web.
break;
}
if (c == '\n') {
blank_line = true;
}
else if (c != '\r') {
blank_line = false;
}
}
}
delay(1);
}
}
|
Kodingan tersebut untuk
membaca kondisi program yang berjalan menampilkan tampilan web dan mengakhiri program dalam keadaan tidak terhubung ataupun
matinya perangkat.