Alvoria Neura


Cara Menggunakan Wifi Untuk Mengontrol Relay Esp8266 Nodemcu V3

Tutorial Menggunakan WiFi untuk Mengontrol Relay dengan ESP8266 NodeMCU V3

Berikut adalah tutorial lengkap tentang Menggunakan WiFi untuk Mengontrol Relay dengan ESP8266 NodeMCU V3 termasuk konsep, wiring, kode program, dan cara menggunakannya.

ESP8266 NodeMCU V3 adalah modul mikrokontroler yang dilengkapi dengan WiFi, sehingga sangat cocok untuk proyek IoT. Dalam tutorial ini, kita akan membuat Web Server menggunakan ESP8266, yang memungkinkan kita untuk mengontrol relay dari browser (Chrome, Firefox, dll.) di perangkat apa pun yang terhubung ke jaringan WiFi yang sama.


Apa Itu Relay?

Relay adalah saklar elektronik yang dikendalikan oleh sinyal listrik kecil untuk mengontrol arus listrik yang lebih besar. Relay digunakan untuk mengontrol lampu, kipas, pompa air, dan perangkat elektronik lainnya.

1. Peralatan yang Dibutuhkan

Sebelum kita mulai, pastikan Anda memiliki:

  • ESP8266 NodeMCU V3
  • Modul Relay 5V
  • Kabel Jumper
  • Power Supply (Micro USB untuk ESP8266, 5V untuk relay jika diperlukan)

2. Wiring (Diagram Koneksi)

Hubungkan ESP8266 ke modul relay seperti berikut:

ESP8266 Relay
3.3V / 5V VCC
GND GND
D1 (GPIO 5) IN

Catatan:

  • Jika relay Anda aktif LOW, maka relay akan menyala saat sinyal LOW (0V) dikirimkan.
  • Jika relay aktif HIGH, maka relay akan menyala saat sinyal HIGH (3.3V/5V) dikirimkan.

3. Instalasi dan Persiapan

Sebelum menulis kode, pastikan Anda sudah:

  1. Menginstal Arduino IDE
  2. Menambahkan Board ESP8266 ke Arduino IDE (Panduan Instalasi ESP8266 di Arduino IDE)
  3. Menginstal library ESP8266WiFi (sudah tersedia di Arduino IDE)

4. Kode Program ESP8266 untuk Kontrol Relay via WiFi

Kode berikut akan membuat ESP8266 menjadi web server, yang memungkinkan kita mengontrol relay melalui halaman web.


#include <ESP8266WiFi.h>

const char* ssid = "Nama_WiFi";      // Ganti dengan SSID WiFi Anda
const char* password = "Password_WiFi"; // Ganti dengan Password WiFi Anda

WiFiServer server(80);  // Web server berjalan di port 80

const int relayPin = 5;  // Pin D1 (GPIO 5) digunakan untuk relay

void setup() {
    Serial.begin(115200);
    pinMode(relayPin, OUTPUT);
    digitalWrite(relayPin, LOW);  // Pastikan relay dalam keadaan mati saat awal

    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi...");
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.print(".");
    }
    Serial.println("\nConnected to WiFi");
    Serial.print("ESP8266 IP Address: ");
    Serial.println(WiFi.localIP()); // Menampilkan alamat IP di Serial Monitor

    server.begin(); // Memulai server
}

void loop() {
    WiFiClient client = server.available();
    if (client) {
        Serial.println("New Client Connected.");
        String request = "";
        while (client.connected()) {
            if (client.available()) {
                char c = client.read();
                request += c;
                if (c == '\n') break; // Baca permintaan sampai akhir baris
            }
        }
        
        Serial.println(request);

        // Mengontrol relay berdasarkan request
        if (request.indexOf("/relay/on") != -1) {
            digitalWrite(relayPin, HIGH);
            Serial.println("Relay ON");
        } else if (request.indexOf("/relay/off") != -1) {
            digitalWrite(relayPin, LOW);
            Serial.println("Relay OFF");
        }

        // Membuat halaman HTML sederhana untuk kontrol relay
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println("Connection: close");
        client.println();
        client.println("<!DOCTYPE html>");
        client.println("<html><head><title>ESP8266 Relay Control</title></head><body>");
        client.println("<h1>ESP8266 Relay Control</h1>");
        client.println("<p><a href=\"/relay/on\"><button>Turn ON</button></a></p>");
        client.println("<p><a href=\"/relay/off\"><button>Turn OFF</button></a></p>");
        client.println("</body></html>");

        client.stop();
        Serial.println("Client Disconnected.");
    }
}

Penjelasan Kode

  1. Menghubungkan ESP8266 ke WiFi
    WiFi.begin(ssid, password);

    ESP8266 akan terhubung ke jaringan WiFi yang diberikan.

  2. Menampilkan Alamat IP
    Serial.println(WiFi.localIP());

    Setelah tersambung, ESP8266 akan mendapatkan IP Address yang digunakan untuk mengakses server.

  3. Menjalankan Web Server di Port 80
    WiFiServer server(80);

    Web server berjalan di port 80 untuk menerima permintaan dari browser.

  4. Membaca Request dari Client
    if (request.indexOf("/relay/on") != -1) { digitalWrite(relayPin, HIGH); }

    Jika browser mengakses IP/relay/on, relay akan menyala. Jika mengakses IP/relay/off, relay akan mati

  5. Membuat Halaman HTML
    client.println("<p><a href=\"/relay/on\"><button>Turn ON</button></a></p>");</code></pre>

    Halaman web akan menampilkan tombol ON/OFF untuk mengontrol relay.

5. Cara Menguji



Upload Kode ke ESP8266

  • Hubungkan ESP8266 ke komputer.
  • Pilih board "NodeMCU 1.0 (ESP-12E Module)" di Arduino IDE.
  • Pilih port yang sesuai.
  • Tekan Upload dan tunggu hingga selesai.

Hubungkan ESP8266 ke WiFi

  • Buka Serial Monitor (115200 baud).
  • Jika sukses, akan muncul IP Address ESP8266 (contoh: 192.168.1.100).

Akses Web Server dari Browser

  • Buka browser di HP/PC.
  • Masukkan alamat http://192.168.1.100/
  • Klik tombol "Turn ON" untuk menyalakan relay.
  • Klik tombol "Turn OFF" untuk mematikan relay.

6. Pengembangan Lebih Lanjut

Anda bisa mengembangkan proyek ini dengan:

  • Menambahkan lebih dari satu relay untuk kontrol beberapa perangkat
  • Membuat tampilan UI lebih menarik menggunakan JavaScript/CSS
  • Menambahkan autentikasi untuk keamanan
  • Menggunakan MQTT untuk kontrol dari mana saja via Internet

Troubleshooting (Mengatasi Masalah)

  1. ESP8266 Tidak Terdeteksi di Arduino IDE

    • Pastikan driver CH340 sudah terinstal.
    • Coba gunakan kabel USB yang berbeda.
  2. Relay Tidak Menyala

    • Periksa wiring, pastikan VCC-GND tersambung dengan benar.
    • Gunakan relay aktif LOW jika perlu membalik logika HIGH/LOW.
    • Pastikan pin D1 (GPIO 5) bisa mengendalikan relay.
  3. Web Server Tidak Bisa Diakses

    • Cek alamat IP di Serial Monitor.
    • Pastikan perangkat terhubung ke jaringan WiFi yang sama.
    • Pastikan kode telah diunggah dengan benar.

Kesimpulan

Dalam tutorial ini, kita telah membuat web server dengan ESP8266 untuk mengontrol relay via WiFi. Proyek ini bisa digunakan untuk smart home atau otomatisasi rumahtanpa internet.


Semoga tutorial ini bermanfaat! 🚀 Jika ada pertanyaan, silakan tinggalkan komentar. 😃