Alvoria Neura


Cara Menggunakan Wifi Untuk Mengontrol Relay Esp32 Devkit V1

Tutorial Menggunakan WiFi untuk Mengontrol Relay dengan ESP32 DevKit V1

Berikut adalah tutorial lengkap tentang Menggunakan WiFi untuk Mengontrol Relay dengan ESP32 DevKit V1, termasuk konsep, wiring, kode program, dan cara menggunakannya.

ESP32 DevKit V1 adalah mikrokontroler yang memiliki fitur WiFi dan Bluetooth bawaan, sehingga cocok untuk berbagai proyek IoT. Dalam tutorial ini, kita akan menggunakan WiFi Web Server untuk mengontrolrelay menggunakan browser di perangkat yang terhubung ke jaringan WiFi yang sama.

1. Peralatan yang Dibutuhkan

Sebelum kita mulai, pastikan Anda memiliki:

ESP32 DevKit V1

Modul Relay 5V

Kabel Jumper

Power Supply (Micro USB untuk ESP32, 5V untuk relay jika diperlukan)

2. Wiring (Diagram Koneksi)

Hubungkan ESP32 ke modul relay seperti berikut:

ESP32 Relay
3.3V / 5V VCC
GND GND
GPIO 23 IN

Catatan:

  • Jika relay 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:

Menginstal Arduino IDE

Menambahkan Board ESP32 ke Arduino IDE (Panduan Instalasi ESP32 di Arduino IDE)

Menginstal library WiFi (sudah tersedia di Arduino IDE)

4. Kode Program ESP32 untuk Kontrol Relay via WiFi

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


#include <WiFi.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 = 23;  // Pin GPIO 23 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("ESP32 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>ESP32 Relay Control</title></head><body>");
        client.println("<h1>ESP32 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 ESP32 ke WiFi
    WiFi.begin(ssid, password);

    ESP32 akan terhubung ke jaringan WiFi yang diberikan.

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

    Setelah tersambung, ESP32 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); }

    ka 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>");

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

5. Cara Menguji



Upload Kode ke ESP32

  • Hubungkan ESP32 ke komputer.
  • Pilih board "ESP32 Dev Module" di Arduino IDE.
  • Pilih port yang sesuai.
  • Tekan Upload dan tunggu hingga selesai.

Hubungkan ESP32 ke WiFi

  • BukaSerial Monitor (115200 baud).
  • Jika sukses, akan muncul IP Address ESP32 (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. ESP32 Tidak Terdeteksi di Arduino IDE

    • Pastikan driver CP2102 sudah terinstal.
    • Coba gunakan kabel USB yang berbeda.
  2. Web Server Tidak Bisa Diakses

    • Cek alamat IP di Serial Monitor.
    • Pastikan perangkat terhubung ke jaringan WiFi yang sama.
  3. Relay Tidak Menyala

    • Periksa wiring, pastikan VCC-GND tersambung dengan benar.
    • Gunakan relay aktif LOW jika perlu membalik logika HIGH/LOW.
    • Pastikan pin GPIO 23 bisa mengendalikan relay.
  4. Tidak Bisa Terhubung ke WiFi

    • Pastikan SSID dan password WiFi benar.
    • Pastikan router mendukung 2.4GHz WiFi (ESP32 tidak mendukung 5GHz).

Kesimpulan

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

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