Tutorial dasar untuk pemrograman pada ESP8266 dengan contoh sensor DHT11 dan HTTP(S) Request


  1. Instalasi driver dan development environment
    1. Contoh board ESP8266 yang digunakan dalam tutorial ini menggunakan USB serial CH340G. Sistem operasi yang digunakan mungkin telah datang bersama driver ini. Apabila tidak, misal, untuk Windows, bisa download instalasi driver dengan nama file CH341SER.EXE. Jalankan dan lakukan instalasi driver.
      1. Siapkanlah kabel mikro USB (dengan data transfer), dan hubungkanlah antara board dan komputer.
      2. Pastikanlah sistem operasi mengenali koneksi device ke serial port.
    2. Penulisan kode program, upload ke board, dan serial monitor dapat menggunakan Arduino IDE. Versi yang digunakan adalah tutorial ini adalah 1.8.19. Downloadlah dari https://www.arduino.cc/en/software/ dan lakukanlah instalasi.
    3. Board manager:
      1. Jalankanlah Arduino IDE.
      2. Bukalah menu File → Preferences.
        1. Pada Additional Boards Manager URLs, isikanlah: https://arduino.esp8266.com/stable/package_esp8266com_index.json
        2. Klik OK untuk menutup dialog.
      3. Bukalah menu Tools → Board → Boards Manager....
        1. Ketikkanlah pencarian: esp8266
        2. Klik tombol Install pada esp8266 by ESP8266 Community. Tutorial ini mengasumsikan versi 3.1.2.
        3. Klik Close untuk menutup dialog.
  2. Contoh Program
    1. Pastikanlah tahapan sebelumnya telah berhasil. Di Arduino IDE, dengan board terhubung, pilihlah NodeMCU 1.0 (ESP-12E Module) di Tools → Board.
    2. Pastikanlah Port telah sesuai/dikenal pada menu Tools → Port.
    3. Bukalah menu File → Examples → 01.Basics → Blink.
    4. Pada editor yang terbuka, kliklah tombol Upload pada toolbar.
    5. Tunggulah proses kompilasi dan upload. Setelah itu, pastikan LED pada board berkedip.
  3. Sensor suhu dan kelembaban DHT11
    1. Pastikanlah contoh sebelumnya telah berfungsi dengan baik.
    2. Gunakanlah sensor DHT11 dan kabel konektor:
      1. Hubungkanlah DAT pada sensor ke D1 pada board.
      2. Hubungkanlah GND pada sensor ke G pada board.
      3. Hubungkanlah VCC pada sensor ke 3V pada board.
      4. Catatan: sesuaikanlah apabila terdapat perbedaan label pada sensor.
    3. Instalasi pustaka:
      1. Bukalah menu Tools → Manage Libraries....
      2. Carilah dht11 dan lakukanlah instalasi untuk DHT sensor library. Tutorial ini mengasumsikan versi 1.4.4.
    4. Uploadlah contoh program berikut:
      #include "DHT.h"
      
      #define DHTPIN 5
      #define DHTTYPE DHT11
      DHT dht(DHTPIN, DHTTYPE);
      
      void setup() {
          Serial.begin(9600);
          dht.begin();
      }
      
      void loop() {
          delay(2000);
          
          float h = dht.readHumidity();
          float t = dht.readTemperature();
          
          if (isnan(h) || isnan(t)) {
              Serial.println(F("Failed to read from DHT sensor!"));
              return;
          }
          
          Serial.print(F("Humidity: "));
          Serial.print(h);
          Serial.print(F("% Temperature: "));
          Serial.print(t);
          Serial.print(F("??C "));
          Serial.println();
      }
      
    5. Bukalah Tools → Serial Monitor dan perhatikanlah setiap 2 detik, informasi terkait humidity dan temperature akan ditampilkan.
      Catatan:
      • Pin D1 pada board adalah GPIO 5, dan oleh karenanya, DHTPIN adalah 5.
      • Pin D0 adalah GPIO 16, D2 adalah GPIO 4, D3 adalah GPIO 0, D4 adalah GPIO 2.
  4. Tugas: koneksikan ke WiFi dan lakukan HTTPS Request ke backend untuk contoh temperatur sebelumnya.
    1. Include:
      #include <ESP8266WiFi.h>
      #include <ESP8266HTTPClient.h>
      #include <WiFiClientSecureBearSSL.h>
      
    2. Setup: Koneksi WiFi (sesuaikan variabel SSID dan password):
      WiFi.begin(SSID, password);
      while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.print(".");
      }
      Serial.println();
      
      Serial.print("IP Address: ");
      Serial.println(WiFi.localIP());
      Serial.print("Mac Address: ");
      Serial.println(WiFi.macAddress());
      WiFi.setAutoReconnect(true);
      WiFi.persistent(true);
      
    3. Loop: request ketika terhubung saja:
      if (WiFi.status() == WL_CONNECTED) {
          Serial.println("CONNECTED, requesting...");
          WiFiClientSecure client;
          client.setInsecure();
      
          HTTPClient http;
          String url = "";
      }
      
    4. Catatan HTTP Request:
      1. Untuk melakukan HTTP request: http.begin(client, url);
      2. Untuk menambahkan header, contoh: http.addHeader("Content-Type", "application/x-www-form-urlencoded");
      3. Untuk mendapatkan status GET Request: int res = http.GET();
      4. Untuk mendapatkan string hasil request: String body = http.getString();
      5. Ketika request selesai: http.end();
    5. Catatan tambahan: apabila pin tertentu digunakan untuk kebutuhan input atau output, gunakanlah fungsi pinMode(pin, mode), dimana mode misal berupa INPUT atau OUTPUT.

Terima kasih telah membaca :)