Tutorial: Mengontrol Relay via WiFi dengan ESP32

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 & passwordIni 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”. Kode 200 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 menjalankan digitalWrite(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 menjalankan digitalWrite(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

  1. Siapkan Rangkaian: Hubungkan ESP32 dan modul relay sesuai diagram di atas.
  2. Buka Arduino IDE: Salin dan tempel kode program di atas ke Arduino IDE.
  3. Ubah Kredensial WiFi: Ganti NAMA_WIFI dan PASSWORD dengan nama dan password WiFi-mu.
  4. Pilih Board & Port: Di menu Tools, pilih board “ESP32 Dev Module” (atau yang sesuai) dan Port COM yang benar.
  5. Upload Kode: Klik tombol Upload.
  6. 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.
  7. 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.

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.


Diterbitkan

dalam

oleh

Tags:

Comments

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *