Perkembangan Internet of Things (IoT) membuat berbagai perangkat rumah dapat dikendalikan melalui jaringan internet maupun Wi‑Fi lokal. Salah satu mikrokontroler yang paling populer untuk mempelajari IoT adalah ESP32. Harganya terjangkau, memiliki Wi‑Fi dan Bluetooth bawaan, serta didukung oleh komunitas yang sangat besar. Pada artikel ini kita akan membangun proyek smart home sederhana yang mampu mengendalikan sebuah lampu lewat smartphone menggunakan relay 1 channel . Walaupun proyek ini terlihat sederhana, konsep yang dipelajari merupakan dasar bagi sistem smart home yang lebih kompleks seperti pengendalian banyak lampu, kipas, pompa air, pintu otomatis, hingga monitoring sensor secara real-time
cara kerja ESP32
1. ESP32 Terhubung ke Jaringan Wi-Fi
2. ESP32 Membuat Web Server
3. Pengguna Membuka Dashboard Web Server
4. Pengguna Menekan Tombol ON atau OFF
5. Relay Mulai Bekerja
6. Lampu Menyala
7. ESP32 Memperbarui Tampilan Dashboard Web Server
| No | Komponen | Jumlah | Fungsi |
|---|---|---|---|
| 1 | 🖥️ ESP32 DevKit V1 | 1 Buah | Mikrokontroler utama yang menjalankan program, membuat web server, dan mengendalikan relay. |
| 2 | ⚡ Relay Module 1 Channel 5V | 1 Buah | Berfungsi sebagai sakelar elektronik untuk menghubungkan atau memutus aliran listrik ke beban. |
| 3 | 🔌 Kabel Jumper | Secukupnya | Menghubungkan pin ESP32 dengan modul relay. |
| 4 | 🔋 Kabel USB | 1 Buah | Digunakan untuk mengunggah program ke ESP32 sekaligus memberikan daya dari komputer. |
| 5 | 💡 Lampu LED / Lampu AC | 1 Buah | Perangkat atau beban listrik yang akan dikendalikan menggunakan relay. |
| 6 | 📶 Router / Access Point Wi-Fi | 1 Buah | Menghubungkan ESP32 dengan smartphone atau komputer melalui jaringan Wi-Fi. |
| 7 | 📱 Smartphone / Laptop | 1 Unit | Digunakan untuk mengakses dashboard Smart Home melalui browser. |
| 8 | 💻 Arduino IDE | Software | Menulis, mengompilasi, dan mengunggah program ke ESP32. |
| 9 | 🧰 Breadboard (Opsional) | 1 Buah | Mempermudah proses perakitan rangkaian tanpa penyolderan. |
| Pin ESP32 | → | Pin Relay | Keterangan |
|---|---|---|---|
| VIN (5V) | → | VCC / DC+ | Memberikan tegangan 5V ke modul relay. |
| GND | → | GND / DC− | Menghubungkan ground ESP32 dengan ground relay. |
| GPIO 27 | → | IN | Pin kontrol untuk mengaktifkan atau menonaktifkan relay. |
#includeconst char* ssid = "NAMA WIFI"; const char* password = "PASSWORD WIFI"; WiFiServer server(80); const int relayPin = 27; bool relayState = false; void setup() { Serial.begin(115200); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); // Relay OFF WiFi.begin(ssid, password); Serial.print("Menghubungkan ke WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi Terhubung!"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server.available(); if (!client) { return; } while (client.connected() && !client.available()) { delay(1); } String request = client.readStringUntil('\r'); client.flush(); // Relay ON if (request.indexOf("/ON") != -1) { relayState = true; digitalWrite(relayPin, HIGH); } // Relay OFF if (request.indexOf("/OFF") != -1) { relayState = false; digitalWrite(relayPin, LOW); } client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); client.println(""); client.println(""); client.println(""); client.println(""); client.println(""); client.println(" ESP32 Smart Home "); client.println(""); client.println(""); client.println(""); client.println(""); client.println(""); client.println(""); client.stop(); }

EmoticonEmoticon