Proyek ini akan memandumu untuk membuat sebuah saklar pintar sederhana. Kamu akan bisa menyalakan atau mematikan perangkat listrik (seperti lampu atau kipas angin) dari jarak jauh melalui browser di HP atau laptop, selama terhubung ke jaringan WiFi yang sama dengan ESP32.
1. Kebutuhan Proyek
Sebelum memulai, pastikan kamu memiliki semua komponen yang diperlukan.
Perangkat Keras (Hardware) 🔌
- ESP32 Development Board: Otak dari proyek ini.
- Modul Relay 1 Channel: Berfungsi sebagai saklar elektronik. Pastikan modul ini kompatibel dengan tegangan 3.3V atau memiliki sirkuit pemicu yang sesuai.
- Kabel Jumper: Untuk menghubungkan ESP32 ke modul relay.
- Kabel Micro USB: Untuk memprogram ESP32 dan sebagai sumber daya.
Perangkat Lunak (Software) 💻
- Arduino IDE: Pastikan sudah ter-install dan sudah ditambahkan dukungan untuk board ESP32. Jika belum, ikuti petunjuk di sini.
2. Rangkaian Proyek
Hubungkan modul relay ke board ESP32 menggunakan kabel jumper seperti pada diagram berikut.
- VCC pada modul relay → VIN atau 5V pada ESP32.
- GND pada modul relay → GND pada ESP32.
- IN (Input) pada modul relay → GPIO 2 (Pin D2) pada ESP32.
Penting: Pin IN
pada relay adalah pin sinyal yang akan dikontrol oleh ESP32. Pin yang digunakan dalam kode adalah GPIO 2
, namun kamu bisa menggantinya jika perlu.
3. Program Dasar
C++
#include <WiFi.h> #include <WebServer.h> const char* ssid = "NAMA_WIFI"; // Ganti dengan SSID WiFi kamu const char* password = "PASSWORD"; // Ganti dengan password WiFi kamu const int relayPin = 2; // Relay dihubungkan ke pin GPIO 2 (bisa ubah sesuai kebutuhan) WebServer server(80); void setup() { Serial.begin(115200); // Inisialisasi relay pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); // default mati // Koneksi ke WiFi Serial.print("Menghubungkan ke WiFi: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi tersambung!"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // Endpoint untuk cek status server.on("/", []() { server.send(200, "text/plain", "ESP32 Relay Server Aktif"); }); // Endpoint relay ON server.on("/relay/on", []() { digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "Relay ON"); Serial.println("Relay ON"); }); // Endpoint relay OFF server.on("/relay/off", []() { digitalWrite(relayPin, LOW); server.send(200, "text/plain", "Relay OFF"); Serial.println("Relay OFF"); }); server.begin(); Serial.println("Web server dimulai..."); } void loop() { server.handleClient(); }
4. Penjelasan Kode Program
Mari kita bedah kode yang kamu berikan baris per baris agar lebih mudah dipahami.
Bagian 1: Inisialisasi dan Konfigurasi
C++
#include <WiFi.h> #include <WebServer.h> // --- GANTI BAGIAN INI --- const char* ssid = "NAMA_WIFI"; // Ganti dengan nama (SSID) WiFi kamu const char* password = "PASSWORD"; // Ganti dengan password WiFi kamu // ------------------------- const int relayPin = 2; // Relay dihubungkan ke pin GPIO 2 WebServer server(80); // Membuat objek server pada port 80 (HTTP)
#include <WiFi.h>
&#include <WebServer.h>
: Memanggil library yang dibutuhkan agar ESP32 bisa terhubung ke WiFi dan membuat web server.ssid
&password
: Ini bagian terpenting yang harus kamu ubah. Isi dengan nama dan password jaringan WiFi di lokasimu.relayPin
: Mendefinisikan bahwa kita menghubungkan pin sinyal relay ke GPIO 2.WebServer server(80)
: Membuat sebuah server yang akan mendengarkan permintaan masuk pada port 80, yang merupakan port standar untuk komunikasi web (HTTP).
Bagian 2: Fungsi setup()
Fungsi ini berjalan sekali saat ESP32 pertama kali dinyalakan atau di-reset.
C++
void setup() { Serial.begin(115200); // Inisialisasi relay pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); // Set relay mati saat pertama kali nyala // Koneksi ke WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi tersambung!"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // Cetak IP Address ESP32 // ... (lanjutan di bawah)
Serial.begin(115200)
: Mengaktifkan komunikasi serial untuk debugging. Kamu bisa melihat pesan status di Serial Monitor Arduino IDE.pinMode(relayPin, OUTPUT)
: Mengatur pin relay sebagai output.digitalWrite(relayPin, LOW)
: Memastikan relay dalam kondisi mati (LOW) saat program dimulai. Ini penting agar perangkat yang terhubung tidak tiba-tiba menyala.WiFi.begin(...)
: Memulai proses koneksi ke WiFi.while (WiFi.status() != WL_CONNECTED)
: Loop ini akan terus berjalan sampai ESP32 berhasil terhubung ke WiFi. Tanda titik.
akan muncul di Serial Monitor selama proses koneksi.Serial.println(WiFi.localIP())
: Setelah terhubung, kode ini akan mencetak alamat IP yang didapat ESP32. Alamat inilah yang akan kita gunakan untuk mengakses server.
Bagian 3: Endpoint Web Server (di dalam setup()
)
Endpoint adalah alamat URL spesifik yang akan direspons oleh server.
C++
// Endpoint untuk cek status server.on("/", []() { server.send(200, "text/plain", "ESP32 Relay Server Aktif"); }); // Endpoint relay ON server.on("/relay/on", []() { digitalWrite(relayPin, HIGH); // Nyalakan relay server.send(200, "text/plain", "Relay ON"); Serial.println("Relay ON"); }); // Endpoint relay OFF server.on("/relay/off", []() { digitalWrite(relayPin, LOW); // Matikan relay server.send(200, "text/plain", "Relay OFF"); Serial.println("Relay OFF"); }); server.begin(); // Mulai web server Serial.println("Web server dimulai..."); }
server.on("/", ...)
: Jika kita mengakses alamat IP utama (contoh:http://192.168.1.10
), server akan merespons dengan teks “ESP32 Relay Server Aktif”. Kode200
artinya “OK” atau sukses.server.on("/relay/on", ...)
: Jika kita mengakses alamat IP diikuti/relay/on
(contoh:http://192.168.1.10/relay/on
), server akan menjalankandigitalWrite(relayPin, HIGH)
untuk menyalakan relay dan mengirim balasan “Relay ON”.server.on("/relay/off", ...)
: Jika kita mengakses alamat IP diikuti/relay/off
(contoh:http://192.168.1.10/relay/off
), server akan menjalankandigitalWrite(relayPin, LOW)
untuk mematikan relay dan mengirim balasan “Relay OFF”.server.begin()
: Perintah ini secara resmi mengaktifkan web server.
Bagian 4: Fungsi loop()
Fungsi ini berjalan terus-menerus setelah setup()
selesai.
C++
void loop() { server.handleClient(); // Menangani permintaan yang masuk ke server }
server.handleClient()
: Baris ini sangat penting. Tugasnya adalah terus-menerus memeriksa apakah ada browser (klien) yang mencoba mengakses salah satu endpoint yang telah kita daftarkan di setup()
.
5. Langkah-Langkah Penggunaan
- Siapkan Rangkaian: Hubungkan ESP32 dan modul relay sesuai diagram di atas.
- Buka Arduino IDE: Salin dan tempel kode program di atas ke Arduino IDE.
- Ubah Kredensial WiFi: Ganti
NAMA_WIFI
danPASSWORD
dengan nama dan password WiFi-mu. - Pilih Board & Port: Di menu
Tools
, pilih board “ESP32 Dev Module” (atau yang sesuai) dan Port COM yang benar. - Upload Kode: Klik tombol Upload.
- Buka Serial Monitor: Setelah selesai upload, buka Serial Monitor (
Tools > Serial Monitor
). Atur baud rate ke 115200. Tunggu beberapa saat hingga muncul pesan “WiFi tersambung!” diikuti dengan IP Address. Catat alamat IP tersebut. - Kontrol Relay: Buka browser (Chrome, Firefox, dll.) di HP atau laptop yang terhubung ke jaringan WiFi yang sama.
- Untuk menyalakan relay, ketik di address bar:
http://<IP_ADDRESS_ESP32>/relay/on
(ganti<IP_ADDRESS_ESP32>
dengan IP yang kamu catat). - Untuk mematikan relay, ketik di address bar:
http://<IP_ADDRESS_ESP32>/relay/off
.
- Untuk menyalakan relay, ketik di address bar:
Selamat! Kamu sekarang bisa mengontrol relay dari browser.
6. Integrasi Dengan UnIoT
Untuk bisa mengontrol relay dengan UnIoT hanya dengan memasukkan address ke textbox HTTP URL Device tanpa nilai (0N/OFF): http://<IP_ADDRESS_ESP32>/relay

7. Pengembangan Lanjutan 🚀
Proyek ini adalah dasar yang bagus. Berikut beberapa ide untuk pengembangannya:
- Buat Antarmuka Web (HTML): Alih-alih hanya teks, kamu bisa membuat halaman web dengan tombol “ON” dan “OFF” yang lebih ramah pengguna.
- Kontrol Banyak Relay: Tambahkan lebih banyak relay dan buat endpoint baru untuk masing-masing relay (misalnya
/relay2/on
,/relay2/off
). - Gunakan MQTT: Untuk kontrol melalui internet (bukan hanya jaringan lokal), kamu bisa mempelajari protokol MQTT.
- Tambah Sensor: Gabungkan dengan sensor (misalnya sensor suhu) untuk menyalakan kipas angin secara otomatis saat suhu ruangan panas.
Tinggalkan Balasan