Halo Sahabat Indobot! Kali ini kita akan membuat sebuah monitoringn suhu dan kelembaban untuk budidaya jamur tiram
Tau ga? Budidaya Jamur Tiram tidak bisa sembarangan lo. Budidaya jamur tiram membutuhkan perawatan yang cukup ekstra. Salah satu yang harus tetap dipantau adalah suhu dan kelembaban dari ruangannya. Bagian ini terkadang dapat berubah-ubah tergantung dengan kondisi di lingkungannya. Ketika kita berada dalam 1 wilayah budidaya, kita tidak bisa untuk terus memantau kondisi ke lokasinya secara langsung. Jadi kita membutuhkan informasi suhu dan kelembaban yang dapat di update di smartphone atau kompeter di kantor budidaya tersebut.
Monitoring Suhu dan Kelembapan Jamur Tiram
Nah. Untuk mengatasi hal tersebut, kita dapat menggunakan webserver untuk memantau suhu dan kelembaban. Webserver ini akan dihubungkan dengan NodeMCU ESP8266 yang dapat membaca sensor DHT 11 sebagai sensor suhu dan kelembaban. Webserver ini, nantinya dapat dipantau melalui smartphone atau komputer oleh siapapun yang mengetahui IP Address dari NodeMCU. Bagaimana caranya? yuk kita simak.
Alat dan Bahan
Alat dan bahan untuk project ini adalah sebagai berikut.
- Software Arduino ID
- NodeMCU ESP8266 1
- DHT22 1
- Projectboard 1
- Kabel jumper Secukupnya
Belajar Elektronika, Arduino, dan IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO
Rangkaian
Susun device di atas menjadi rangkaian seperti berikut. Pastikan semua terhubung dengan baik.
baca juga: Monitoring Suhu dan Kelembaban Ruangan Budidaya Jamur Tiram dengan Sensor DHT22
Program
Tahap selanjutnya adalah penulisan program pada Arduino IDE. Buatlah program seperti berikut. Perhatikan keterangan (comment) untuk memahami program dengan baik.
Jangan lupa untuk memasukkan terlebih dahulu library DHT, Adafruit Sensor, ESPAsyncWebServer, dan ESPAsyncTCP.
/********* Menampilkan Suhu dan kelembaban dengan webserver oleh Rui Santos *********/ #include <Arduino.h> #include <ESP8266WiFi.h> #include <Hash.h> #include <ESPAsyncTCP.h> #include <ESPAsyncWebServer.h> #include <Adafruit_Sensor.h> #include <DHT.h> // Masukan hotspot dan passwordnya const char* ssid = "***************"; const char* password = "***********"; #define DHTPIN A0 // pin DHT menggunakan pin A0 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); // Variabel untuk suhu dan kelembaban float t = 0.0; float h = 0.0; AsyncWebServer server(80); unsigned long previousMillis = 0; // update pembacaan DHT const long interval = 5000; const char index_html[] PROGMEM = R"rawliteral( <!DOCTYPE HTML><html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cstyle%3E%0A%20%20%20%20html%20%7B%0A%20%20%20%20%20font-family%3A%20Arial%3B%0A%20%20%20%20%20display%3A%20inline-block%3B%0A%20%20%20%20%20margin%3A%200px%20auto%3B%0A%20%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20%7D%0A%20%20%20%20h2%20%7B%20font-size%3A%203.0rem%3B%20%7D%0A%20%20%20%20p%20%7B%20font-size%3A%203.0rem%3B%20%7D%0A%20%20%20%20.units%20%7B%20font-size%3A%201.2rem%3B%20%7D%0A%20%20%20%20.dht-labels%7B%0A%20%20%20%20%20%20font-size%3A%201.5rem%3B%0A%20%20%20%20%20%20vertical-align%3Amiddle%3B%0A%20%20%20%20%20%20padding-bottom%3A%2015px%3B%0A%20%20%20%20%7D%0A%20%20%3C%2Fstyle%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<style>" title="<style>" /> </head> <body> <h2>Ruang Jamur Tiram</h2> <p> <i class="fas fa-thermometer-half" style="color:#059e8a;"></i> <span class="dht-labels">Temperature</span> <span id="temperature">%TEMPERATURE%</span> <sup class="units">°C</sup> </p> <p> <i class="fas fa-tint" style="color:#00add6;"></i> <span class="dht-labels">Humidity</span> <span id="humidity">%HUMIDITY%</span> <sup class="units">%</sup> </p> </body> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0AsetInterval(function%20(%20)%20%7B%0A%20%20var%20xhttp%20%3D%20new%20XMLHttpRequest()%3B%0A%20%20xhttp.onreadystatechange%20%3D%20function()%20%7B%0A%20%20%20%20if%20(this.readyState%20%3D%3D%204%20%26%26%20this.status%20%3D%3D%20200)%20%7B%0A%20%20%20%20%20%20document.getElementById(%22temperature%22).innerHTML%20%3D%20this.responseText%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%20%20xhttp.open(%22GET%22%2C%20%22%2Ftemperature%22%2C%20true)%3B%0A%20%20xhttp.send()%3B%0A%7D%2C%2010000%20)%20%3B%0A%0AsetInterval(function%20(%20)%20%7B%0A%20%20var%20xhttp%20%3D%20new%20XMLHttpRequest()%3B%0A%20%20xhttp.onreadystatechange%20%3D%20function()%20%7B%0A%20%20%20%20if%20(this.readyState%20%3D%3D%204%20%26%26%20this.status%20%3D%3D%20200)%20%7B%0A%20%20%20%20%20%20document.getElementById(%22humidity%22).innerHTML%20%3D%20this.responseText%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%20%20xhttp.open(%22GET%22%2C%20%22%2Fhumidity%22%2C%20true)%3B%0A%20%20xhttp.send()%3B%0A%7D%2C%2010000%20)%20%3B%0A%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" /> </html>)rawliteral"; // menampilkan temperatur dan kelembaban String processor(const String& var){ //Serial.println(var); if(var == "TEMPERATURE"){ return String(t); } else if(var == "HUMIDITY"){ return String(h); } return String(); } void setup(){ // serial monitor menggunakan 115200 Serial.begin(115200); dht.begin(); // konek dengan wifi WiFi.begin(ssid, password); Serial.println("Connecting to WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("."); } // menampilkan IP Address Serial.println(WiFi.localIP()); server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html, processor); }); server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/plain", String(t).c_str()); }); server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/plain", String(h).c_str()); }); // mengawali server server.begin(); } void loop(){ //millis digunakan untuk menjalankan program tanpa mempengaruhi //kecepatan program lain unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; float newT = dht.readTemperature(); if (isnan(newT)) { Serial.println("Failed to read from DHT sensor!"); } else { t = newT; Serial.println(t); } // Read Humidity float newH = dht.readHumidity(); if (isnan(newH)) { Serial.println("Failed to read from DHT sensor!"); } else { h = newH; Serial.println(h); } } } |
Masukkan ssid dan passwordnya dengan hotspot yang anda gunakan. Setelah program selesai di upload, buka bagian serial monitor untuk melihat nilai IP Address untuk mengakses NodeMCU. Copy IP Address tersebut, kemudian di paste ke website untuk menampilkan webserver. Variabel h dan t adalah variabel yang digunakan untuk membaca hasil dari sensor suhu dan kelembaban yang ada pada ruangan budidaya jamur.
baca juga: Tutorial Keamanan Rumah dengan ArduCam dan NodeMCU ESP8266
Hasil pembacaan ini dapat memantau kondisi suhu dan kelembaban ruangan. Jadi jika ada yang tidak sesuai dengan kondisi seharusnya, kita bisa langsung ke lokasi untuk menyesuaikan suhu dan kelembabannya.
Bagaimana? tertarik untuk mencoba? kuy langsung bikin.
Mau belajar elektronika dasar? Arduino? atau Internet of Things? Ikuti kursus online Indobot Academy!