Incubator Telur Berbasis Web Server
LATAR BELAKANG
Seiring berkembangnya teknologi, yang dimana ditandai dengan mulainya kita memasuki masa revolusi industri 4.0, semua aspek kehidupan-pun harus ikut berkembang. Industri 4.0 adalah industri yang menggabungkan teknologi otomatisasi dengan teknologi cyber. Ini merupakan tren otomatisasi dan pertukaran data dalam teknologi manufaktur. Ini termasuk sistem cyber-fisik, Internet of Things (IoT), komputasi awan dan komputasi kognitif.
Dengan memanfaatkan teknologi-teknologi tersebut, kita mampu mempermudah berbagai aspek yang dibutuhkan dan penting bagi manusia, seperti komunikasi, industri, ekonomi, pangan, entertainment, hingga transportasi. Maupun begitu, sektor pangan, khususnya di Indonesia sering dianggap tidak terlalu membutuhkan penggunaan teknologi cyber tersebut, terutama sector peternakan. Karena banyak kalangan yang merasa keberadaan teknologi tersebut hanya memberatkan bagi para peternak dan membutuhkan biaya dan perawatan yang tinggi. Tentunya pandangan tersebut salah karena penggunaan teknologi cyber justru akan meningkatkan kualitas dan efisiensi kinerja dalam peternakan.
Salah satu contohnya adalah Inkubator, pada dahulunya incubator hanya didesain agar menghangatkan telur pada suhu tubuh ( 37 °C ), dan tetap harus diamati untuk melihat perkembangan inkubasi, yang dimana terbatas. Tetapi dengan teknologi cyber, kita tanya hanya mampu mengamati perkembangan inkubasi dari jarak jauh, tetapi juga dapat mengontrol kondisi dalam incubator agar sesuai dengan kondisi ideal inkubasi, dan memberikan pemberitahuan jika terdapat telur yang telah menetas.
TINJAUAN PUSTAKA
1. NodeMCU ESP8266 NodeMCU adalah sebuah platform IoT yang bersifat opensource. Terdiri dari perangkat keras berupa System On Chip ESP8266 dari ESP8266 buatan Espressif System, juga firmware yang digunakan, yang menggunakan bahasa pemrograman scripting Lua. Istilah NodeMCU secara default sebenarnya mengacu pada firmware yang digunakan daripada perangkat keras development kit.
Gambar II-1. NodeMcu Based ESP8266
2. DHT11
DHT11 adalah salah satu sensor yang dapat mengukur dua parameter lingkungan sekaligus, yakni suhu dan kelembaban udara (humidity). Dalam sensor ini terdapat sebuah thermistor tipe NTC (Negative Temperature Coefficient). DHT11 merupakan sensor tipe resistif dan sebuah mikrokontroller 8-bit yang mengolah kedua sensor tersebut dan mengirim hasilnya ke pin output dengan format single-wire bi-directional (kabel tinggal dua arah). Sehingga, dibalik bentuknya yang kecil, DHT11 bekerja dengan cukup kompleks.
Gambar II-2. DHT 11.
1. 3. HC-SR04
HC-SR04 adalah sensor ultasonik yang memiliki dua elemen, yaitu elemen pendeteksi gelombang ultrasonik, dan juga sekaligus elemen pembangkit gelombang ultrasonik, yaitu gelombang suara yang memiliki frekuensi ultrasonic atau frekuensi di atas kisaran frekuensi pendengaran manusia.
Gambar II-3. Range Frekuensi Ultrasonic.
Prinsip kerja system pengukuran berbasis sensor ultrasonic melakukan pengukuran pada sifat-sifat fisik gelombang suara utamanya pada ‘cepat-rambat’, pemantulanm dan efek Doppler gelombang suara.
Gambar II-4. Ilustrasi Kerja HC-SR04.
Pengukuran yang berbasis sensor ultrasonik bersifat non-destruktif atau tidak merusak, karena saat proses pengukuran tidak diperlukan kontak fisik antara sensor dengan objek. Pengukuran ini dapat mendektsi target yang bening atau berkilau yang tidak dapat terdeteksi oleh sensor berbasis cahaya. Namun, pengukuran ini sangat sensitif terhadap suhu dan sudut dari target.
Gambar II-5. Sensor Ultrasonic HC-SR04.
4. Web Server
Web server adalah perangkat lunak yang berfungsi sebagai penerima permintaan yang dikirimkan melalui browser kemudian memberikan tanggapan permintaan dalam bentuk halaman situs web atau lebih umumnya dalam dokumen HTML. Namun, web server dapat mempunyai dua pengertian berbeda, yaitu sebagai bagian dari perangkat keras (hardware) maupun sebagai bagian dari perangkat lunak (software).
Jika merujuk pada hardware, web server digunakan untuk menyimpan semua data seperti HTML dokumen, gambar, file CSS stylesheets, dan file JavaScript. Sedangkan pada sisi software, fungsi web server adalah sebagai pusat kontrol untuk memproses permintaan yang diterima dari browser.
Jadi sebenarnya semua yang berhubungan dengan website biasanya juga berhubungan dengan web server, karena tugas web server adalah mengatur semua komunikasi yang terjadi antara browser dengan server untuk memproses sebuah website.
Saat ini ada beberapa pilihan web server saat ini tersedia, nanti akan kami coba bahas satu persatu mengenai kelebihan masing-masing web server. Sebelumnya, mari kita coba bahas mengenai bagian lain dari web server.
PERANCANGAN SISTEM
Gambar III-1. Flowchart Sistem Incubator
3.1. Wiring Diagram
Gambar III-2. Wiring Diagram Sistem Incubator
3.2. Source Code
#include <DHT.h>
#define DHTPIN 0
#define DHTTYPE DHT11
#define TRIGGER_PIN 5
#define ECHO_PIN 4
#include <ESP8266WiFi.h>
#include <Servo.h>
Servo servo;
DHT dht(DHTPIN,DHTTYPE);
const char* ssid = "U50";
const char* password = "r.farhan";
WiFiServer server(80);
String header;
String output12State = "off";
const int output12 = 12; //gpio
uint8_t temperature, humidity;
//initialization buzzer
const int speakerPin = 14;
long duration;
//initialization HC-SR04
int distance;
//led
const int ledPin1 = 2;
const int ledPin2 = 13;
const int ledPin3 = 15;
void setup()
{
Serial.begin (115200);
servo.attach(12);
servo.write(0);
pinMode(output12, OUTPUT);
digitalWrite(output12, LOW);
//connect to wifi network
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.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
dht.begin();
delay(10);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(speakerPin,OUTPUT);
}
void loop()
{
WiFiClient client = server.available(); // Listen for incoming clients
if (client) { // If a new client connects,
Serial.println("New Client."); // print a message out in the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write(c); // print it out the serial monitor
header += c;
if (c == '\n') { // if the byte is a newline character
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
if (header.indexOf("GET /12/on") >= 0) {
Serial.println("GPIO 12 on");
output12State = "on";
servo.write(90);} //sensitif
else if (header.indexOf("GET /12/off") >= 0) {
Serial.println("GPIO 12 off");
output12State = "off";
servo.write(0);} //sensitif
// Display the HTML web page
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
// CSS to style the on/off buttons
// Feel free to change the background-color and font-size attributes to fit your preferences
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #77878A;}</style></head>");
client.println("<body><h1>Tubes Antarmuka dan Integrasi Sistem</h1>");
// Display current state, and ON/OFF buttons for GPIO 12
client.println("<p>GPIO 12 - State " + output12State + "</p>");
// If the output12State is off, it displays the ON button
if (output12State=="off") {
client.println("<p><a href=\"/12/on\"><button class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/12/off\"><button class=\"button button2\">OFF</button></a></p>");
}
client.println("</body></html>");
// The HTTP response ends with another blank line
client.println();
// Break out of the while loop
break;
} else { // if you got a newline, then clear currentLine
currentLine = "";
}
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
//dht11
static boolean data_state = false;
temperature = dht.readTemperature();
humidity = dht.readHumidity();
Serial.print("Temperature Value is :");
Serial.print(temperature);
Serial.println("C");
Serial.print("Humidity Value is :");
Serial.print(humidity);
Serial.println("%");
delay(1000);
//hc-sr04
long duration, distance;
digitalWrite(TRIGGER_PIN, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(TRIGGER_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
delay(1000);
if(distance<4&&distance>0)
{
for(int hz=800;hz<1000;hz++)
{
tone(speakerPin,hz,50);
delay(distance);
}
noTone(speakerPin);
}
if(temperature<=25)
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
}
else if (temperature>25 && temperature<35)
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
}
else if (temperature=35)
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
else
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
}
ANALISIS DAN KESIMPULAN
1. 4.1. Analisis
Sesuai dengan teori pendukung, masing-masing komponen yang digunakan memiliki fungsi tersendiri. Pada alat yang disebut egg-cubator ini, sensor suhu dan kelembaban DHT11 digunakan untuk mendeteksi perubahan suhu dan kelembaban di dalam egg-cubator. Nilai suhu dan kelembaban yang ada dapat dilihat melalui thingspeak.com, dari nilai yang tertera, lampu egg-cubator dapat dikontrol melalui smartphone dengan mengakses alamat IP yang diberikan.
Selain mengontrol lampu egg-cubator, alat ini juga dapat memonitor telur, apakan telur tersebut sudah menetas atau belum. Dengan menggunakan sensor ultrasonik HC-SR04 diharapkan terjadinya perubahan jarak dapat menjadi indicator bahwa telur yang diamati telah menetas.
Kekurangan dari alat ini adalah penggunaan sensor ultrasonik untuk memantau telur yang mudah terganggu oleh adanya noise. Akan lebih baik lagi jika yang digunakan adalah proximity sensor karena dapat mendeteksi pergerakan dengan baik. Sehingga yang dipantau bukanlah perubahan jarak sensor ke telur, melainkan ada atau tidaknya pergerakan di dalam egg-cubator.
Alat ini dapat diterapkan dikehidupan sehari-hari yang tentunya perlu dilakukan pengembangan lagi agar menjadi lebih baik.
2. 4.2. Kesimpulan
Egg-cubator merupakan alat yang berfungsi mirip dengan incubator pada umumnya. Perbedaan yang ada adalah pengendalian lampu incubator yang dilakukan dengan bantuan smartphone yang disesuaikan dengan suhu yang dapat dipantau melalui layanan thingspeak.com. Data yang tertera pada thingspeak merupakan data yang didapat dari output sensor DHT11 serta ultrasonik.
DOKUMENTASI
Gambar IV-3. Tampilan GUI
Video IV-4. Testing Kinerja Alat
0 Response to "Incubator Telur Berbasis Web Server"
Post a Comment