Pendahuluan Dalam era digital saat ini, teknologi Internet of Things (IoT) semakin banyak digunakan untuk mengotomatisasi berbagai perangkat elektronik di rumah maupun industri. Salah satu proyek IoT yang paling sederhana namun bermanfaat adalah mengontrol lampu menggunakan NodeMCU ESP32 yang terhubung dengan server berbasis web PHP Native. Dengan proyek ini, kita dapat menyalakan dan mematikan lampu secara real-time melalui aplikasi berbasis web.
Peralatan yang Dibutuhkan
- NodeMCU ESP32
- LED atau Lampu Relay (jika ingin mengontrol lampu AC)
- Resistor 220Ω (jika menggunakan LED)
- Kabel jumper
- Breadboard
- Software Arduino IDE
- Server dengan PHP Native dan MySQL
Arsitektur Sistem Sistem ini terdiri dari tiga komponen utama:
- NodeMCU ESP32: Berfungsi sebagai microcontroller yang menerima perintah dari server dan mengontrol lampu.
- Web Server (PHP Native & MySQL): Menyediakan antarmuka pengguna untuk mengontrol lampu dan menyimpan statusnya di database.
- Koneksi WiFi: Menghubungkan ESP32 dengan server untuk komunikasi data.
Langkah-langkah Implementasi
1. Membuat Database dan API di PHP
Buat database dengan tabel bernama lampu_status
:
CREATE DATABASE iot_db;
USE iot_db;
CREATE TABLE lampu_status (
id INT AUTO_INCREMENT PRIMARY KEY,
status ENUM('on', 'off') NOT NULL
);
INSERT INTO lampu_status (status) VALUES ('off');
Buat API PHP untuk mengontrol lampu (server.php
):
<?php $koneksi = new mysqli("localhost", "root", "", "iot_db"); if ($koneksi->connect_error) { die("Koneksi gagal: " . $koneksi->connect_error); } if ($_SERVER['REQUEST_METHOD'] === 'GET') { $result = $koneksi->query("SELECT status FROM lampu_status WHERE id=1"); $row = $result->;fetch_assoc(); echo json_encode(["status" => $row['status']]); } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $status = $_POST['status']; $koneksi->query("UPDATE lampu_status SET status='$status' WHERE id=1"); echo json_encode(["message" => "Status lampu diubah menjadi $status"]); } $koneksi->close(); ?>
2. Menghubungkan ESP32 dengan Server
Unggah kode berikut ke ESP32 menggunakan Arduino IDE:
<h1>include <WiFi.h></h1> <h1>include <HTTPClient.h></h1> const char* ssid = "Nama SSID kamu"; const char* password = "Password SSD kamu"; const char* serverUrl = "http://yourserver.com/server.php"; int lampu = 12; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); pinMode(lampu, OUTPUT); digitalWrite(lampu, LOW); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi Connected!"); } void loop() { if (WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin(serverUrl); int httpResponseCode = http.GET(); if (httpResponseCode > 0) { String payload = http.getString(); if (payload.indexOf("\"status\":\"on\"") > 0) { digitalWrite(lampu, HIGH); } else { digitalWrite(lampu, LOW); } } http.end(); } delay(2000); }

3. Membuat Web Interface
Buat halaman web (index.php
) untuk mengontrol lampu:
<!DOCTYPE html> <html> <head> <title>Kontrol Lampu IoT</title> </head> <body> <h2>Kontrol Lampu</h2> <button onclick="kontrolLampu('on')">Nyalakan</button> <button onclick="kontrolLampu('off')">Matikan</button> <script><br /> function kontrolLampu(status) {<br /> let xhr = new XMLHttpRequest();<br /> xhr.open("POST", "server.php", true);<br /> xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");<br /> xhr.send("status=" + status);<br /> xhr.onload = function () {<br /> alert(xhr.responseText);<br /> };<br /> }<br /> </script> </body> </html>
Kesimpulan Dengan menggunakan NodeMCU ESP32 dan server berbasis PHP Native, kita dapat mengontrol lampu dari mana saja melalui jaringan internet. Proyek ini bisa dikembangkan lebih lanjut dengan fitur seperti autentikasi pengguna, integrasi dengan sensor, atau bahkan pengendalian berbasis suara.
Semoga bermanfaat! 🚀
Tag: iot, micro controller, pemrograman jaringan