Monitoring Suhu dan Kelembaban Menggunakan DHT11, NodeMCU, MQTT, Node-Red dan MySQL

[DRAFT]
Pada artikel kali ini, disini saya akan menyampaikan mengenai bagaimana memonitor suhu ruangan menggunakan DHT11, NodeMCU, NodeRed MQTT dan MySQL/MariaDB Database. Barang-barang yang perlu disiapkan :
  1. Arduino IDE
  2. NodeMCU
  3. Kabel Jumper (male-male) 3 pcs
  4. Sensor DHT11
  5. Breadboard (optional) 
  6. Kabel microusb (untuk power)
  7. Wifi Connection (Mobile Tethering dll)
  8. Termux/VM/Container yang menjalankan
    • MQTT Broker / mosquitto (apt install mosquitto (debian/termux based), yum install mosquitto (redhat based), apk add mosquitto (alpine))
    • MySQL/MariaDB (cara install sudah pernah dibahas)
    • NodeRed (cara install sudah pernah dibahas)

Berikut tahap-tahapnya :
  1. Konfigurasikan board NodeMCU dan DHT11 menjadi berikut :
    • Pin + pada DHT11 dihubungkan ke pin 3v3 pada NodeMCU
    • Pin - pada DHT11 dihubungkan ke pin Ground pada NodeMCU
    • Pin tengah pada DHT11 dihubungkan ke pin D5 pada NodeMCU
      Image result for nodemcu dht11
      https://circuits4you.com/wp-content/uploads/2019/01/NodeMCU-DHT11-DHT22.png
  2. Hubungkan NodeMCU ke laptop dengan menggunakan kabel microusb.
  3. Install arduino IDE di laptop/komputer teman-teman dengan mendownload installernya di sini.
  4. Setelah arduino ide terinstall, buka aplikasi Arduino IDE, kemudian klik preferences.
  5. Pada window yang muncul, masukkan https://arduino.esp8266.com/stable/package_esp8266com_index.json di bagian Additional Board Manager URL.
  6. Buka Board Manager dari menu Tools > Board. Lalu cari dan install esp8266 platform. Jangan lupa ubah konfigurasi Board di Arduino IDE menjadi ESP8266 dengan memilih di menu Tools->Board.
  7. Download library DHT11 dari link ini.
  8. Install DHT11 library dari adafruit dengan membuka menu Sketch->Include Library->Add .ZIP Library dan masukkan file library yang tadi didownload.
  9. Install MQTT Client library dengan membuka menu Sketch->Include Library->Manage Libraries. Cari PubSubClient dan klik install.
  10. Selanjutnya copy code berikut :
    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    #include <dht.h>
    #define sensor D5
    dht DHT;

    const char* ssid = "SSID WiFi";
    const char* password =  "Password WiFi";
    const char* mqttServer = "IP/Hostname MQTT Server";
    const int mqttPort = 1883;
    const char* mqttUser = "MQTT User";
    const char* mqttPassword = "MQTT Client";

    WiFiClient  jarkomSensor;
    PubSubClient client(jarkomSensor);

    void setup() {
      Serial.begin(9600);
      initNetwork();
      client.setServer(mqttServer, mqttPort);
    }

    void loop() {
      if(!client.connected()){
        initMqtt();
      }
      client.loop();
      DHT.read11(sensor);
      float hum = DHT.humidity;
      float temp = DHT.temperature;
      Serial.print("Humidity : ");
      Serial.println(hum);
      Serial.print("Temperatur : ");
      Serial.println(temp);
      char h[8];
      char t[8];
      itoa(hum, h, 10);
      itoa(temp, t, 10);
      client.publish("jarkom/dht11/hum", h);
      client.publish("jarkom/dht11/temp", t);
      delay(5000);
    }

    void initNetwork(){
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print("..");
      }
      Serial.println("Wifi berhasil terhubung");
      Serial.print("IP Address : ");
      Serial.println(WiFi.localIP());
    }

    void initMqtt() {
      while (!client.connected()) {
        Serial.println("Menghubungkan ke MQTT...");
        String idClient = "ESP8266Client-";
        idClient += String(random(0xffff), HEX);
        if (client.connect(idClient.c_str(), mqttUser, mqttPassword )) {
          Serial.println("Terhubung ke MQTT Server");
        } else {
          Serial.print("Gagal terhubung ke MQTT dengan status ");
          Serial.println(client.state());
          delay(2000);
        }
      }
    }
  11.  

Komentar

Posting Komentar

Postingan populer dari blog ini

Bagian-Bagian Motherboard(Mainboard) dan Fungsinya

[Termux] Nginx sebagai Load Balancer dan Web Server

[Termux] Install NGINX dan PHP-FPM