Wednesday 25 July 2018

Perancangan dan Pembuatan Program

Alat Pengamat dan Kendali Suhu Melalui Web Browser

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.
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.


0 komentar:

Post a Comment