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
- Menghubungkan ESP32 ke WiFi
WiFi.begin(ssid, password);
ESP32 akan terhubung ke jaringan WiFi yang diberikan.
- Menampilkan Alamat IP
Serial.println(WiFi.localIP());
Setelah tersambung, ESP32 akan mendapatkan IP Address yang digunakan untuk mengakses server..
- Menjalankan Web Server di Port 80
WiFiServer server(80);
Web server berjalan di port 80 untuk menerima permintaan dari browser.
- 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.
- 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)
- ESP32 Tidak Terdeteksi di Arduino IDE
- Pastikan driver CP2102 sudah terinstal.
- Coba gunakan kabel USB yang berbeda.
- Web Server Tidak Bisa Diakses
- Cek alamat IP di Serial Monitor.
- Pastikan perangkat terhubung ke jaringan WiFi yang sama.
- 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.
- 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. 😃