
Hello Everyone, pernah kepikiran ga sih kalian pengen matiin atau hidupin lampu tapi mager? Aku punya ide sekaligus inovasi nihhh bagi kalian kaum mageran, ide ini merupakan prototype dari rancang bangun sistem kendali menggunakan Artificial Intelegence (AI). Temen Temen sendiri pasti ga asing kan dengan yang Namanya AI? Di era Teknologi ini AI sudah merambah ke berbagai bidang baik seni, pembelajaran, Teknik mesin industry dan sebagainya. Di sisi lain AI bisa menjadi hal yang menakutkan untuk Sebagian pekerja karena peran pekerja tersebut bisa saja tergantikan oleh AI. Namun jangan takut, selama kita mau berinovasi dan terus belajar. Karena pada dasarnya AI hanyalah sekumpulan code dari library Bahasa pemrograman seperty PYTHON.
Ngomong ngomong ini saya menggunakan python sebagai pengolahnya menggunakan library Open CV Dimana saya akan membuat HITBOX dan memproses/membaca objek Tangan. yang Ketika tangan berada di area HITBOX maka lampu akan mati/menyala. Penasaran caranya? Ikuti Langkah berikut ya
Temen temen perlu Visual Studio Code untuk compiling dan runing program pythonnya, dan juga Arduino IDE untuk compile dan upload program ke ESP-8266
berikut adalah program Arduino IDE
#include
const char* ssid = "ganti dengan nama wifi kalian"; // Ganti dengan SSID WiFi
const char* password = "ganti dengan password wifi kalian"; // Ganti dengan password WiFi
WiFiServer server(80);
int lampPin = 5; // Pin lampu (GPIO 5 pada ESP8266)
void setup() {
Serial.begin(115200);
pinMode(lampPin, OUTPUT);
digitalWrite(lampPin, LOW); // Mulai dengan lampu mati
// Menghubungkan ke WiFi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected to WiFi");
Serial.println(WiFi.localIP()); // Alamat IP ESP8266
// Memulai server
server.begin();
}
void loop() {
WiFiClient client = server.available(); // Cek apakah ada client yang terhubung
if (!client) {
return;
}
// Baca HTTP request dari client
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Menghidupkan atau mematikan lampu berdasarkan request
if (request.indexOf("/lamp/on") != -1) {
digitalWrite(lampPin, HIGH); // Nyalakan lampu
}
if (request.indexOf("/lamp/off") != -1) {
digitalWrite(lampPin, LOW); // Matikan lampu
}
// Kirim HTTP response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("");
client.println("");
client.println("<h1>Lampu telah diperbarui</h1>");
client.println("");
client.stop(); // Tutup koneksi
}
Komponen
- ESP-8266
- 2 Kabel Jumeper
- Trainer Kit Edutic.id
- LED Lamp
Diagram Wiring Dengan Trainer Kit Edutic.id

Jika kalian menggunakan Trainer kit dari edutic.id maka tidak perlu lagi menggunakan lampu LED. karena di trainer kit ini sudah tersedia Lampu LED nya, Tegolong lengkap komponennya, mudah digunakan bagi kalian yang ingin belajar karena mudah di pahami. berikut Langkah Langkah menyambungkan Pin nya
- Pin D1 – Pin Led 1
- Pin 5v – Pin IN
Wiring Tanpa menggunakan Trainer kit Eduti.id

- Pin D1 dihubungkan dengan kaki LED anode
- Pin G/Ground dihubungkan dengan kali LED katode
Instalasi
- Buka Arduino IDE
- install dependencies dan board ESP-8266
- http://arduino.esp8266.com/stable/package_esp8266com_index.json copy paste link ini

- Jika sudah jangan lupa install Board ESP-8266 di bagian menu tools dan Boards Manager

- Lalu pilih bagian tools dan pilih port yang terhubung dengan esp8266

- jika sudah maka Silahkan compile terlebih dahulu untuk mengetahui apakah programnya sudah bisa di upload, jika dirasa sudah maka langsung upload program ke ESP-8266
- jika sudah di-Upload ke ESP-8266 maka pilih bagian tools dan klik serial monitor, catat IP dari ESP-8266 untuk nanti di letakkan di program python

- Jika sudah maka buka VScode anda dan copy Paste Program Python berikut jangan lupa untuk di save
import cv2
import mediapipe as mp
import requests
# Alamat IP ESP8266
ESP8266_IP = "Ganti dengan IP addres ESP-8266 Kalian"
# Inisialisasi MediaPipe Hands dan OpenCV
mp_hands = mp.solutions.hands
mp_drawing = mp.solutions.drawing_utils
# Hitbox coordinates
hitbox_top_left = (100, 100)
hitbox_bottom_right = (300, 300)
# Inisialisasi status lampu
lamp_status = False
hand_in_hitbox = False
# Fungsi untuk memeriksa apakah titik tangan menyentuh hitbox
def is_hand_in_hitbox(x, y):
return hitbox_top_left[0] <= x <= hitbox_bottom_right[0] and hitbox_top_left[1] <= y <= hitbox_bottom_right[1]
# Fungsi untuk menggambar hitbox pada frame
def draw_hitbox(frame):
color = (0, 255, 0) if lamp_status else (0, 0, 255)
cv2.rectangle(frame, hitbox_top_left, hitbox_bottom_right, color, 2)
label = "ON" if lamp_status else "OFF"
cv2.putText(frame, label, (hitbox_top_left[0], hitbox_top_left[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2)
# Fungsi untuk mengontrol lampu melalui ESP8266
def control_lamp(status):
try:
if status:
requests.get(f"{ESP8266_IP}/lamp/on") # Kirim perintah untuk menyalakan lampu
else:
requests.get(f"{ESP8266_IP}/lamp/off") # Kirim perintah untuk mematikan lampu
except requests.exceptions.RequestException as e:
print(f"Error controlling lamp: {e}")
# Inisialisasi kamera
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
# Gunakan MediaPipe untuk deteksi tangan
with mp_hands.Hands(max_num_hands=1, min_detection_confidence=0.7, min_tracking_confidence=0.5) as hands:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print("Tidak dapat membaca frame dari kamera.")
break
# Membalikkan gambar untuk kemudahan
frame = cv2.flip(frame, 1)
# Konversi ke RGB
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
results = hands.process(rgb_frame)
# Menggambar hitbox
draw_hitbox(frame)
# Jika ada tangan yang terdeteksi
if results.multi_hand_landmarks:
for hand_landmarks in results.multi_hand_landmarks:
index_finger_tip = hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP]
# Konversi koordinat dari normalisasi (0-1) ke piksel
h, w, _ = frame.shape
x = int(index_finger_tip.x * w)
y = int(index_finger_tip.y * h)
# Periksa apakah tangan berada di dalam hitbox
if is_hand_in_hitbox(x, y):
if not hand_in_hitbox: # Jika tangan baru saja masuk ke hitbox
lamp_status = not lamp_status # Ubah status lampu
control_lamp(lamp_status) # Kirim perintah ke ESP8266
hand_in_hitbox = True # Tandai bahwa tangan berada di hitbox
else:
# Jika tangan keluar dari hitbox, reset flag
hand_in_hitbox = False
# Gambar landmarks dan koneksi pada frame
mp_drawing.draw_landmarks(frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
# Tampilkan hasil frame
cv2.imshow('Lampu Control', frame)
# Keluar jika menekan tombol 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Bersihkan dan release resource
cap.release()
cv2.destroyAllWindows()
- Pada Terminal Visual Studio Code install Library berikut
- pip install opencv-python
- pip install mediapipe
- pip install requests
- copy paste satu satu 3 code diatas untuk install library Python
- Jangan Lupa pada program python diatas untuk IP diisi alamat IP dari ESP-826 yang kamu gunakan
FAQ
Apa Itu Artificial Intelegence (AI)
AI, atau Artificial Intelligence (Kecerdasan Buatan), adalah bidang dalam ilmu komputer yang berfokus pada pembuatan sistem yang dapat melakukan tugas-tugas yang biasanya memerlukan kecerdasan manusia. AI dirancang untuk meniru kemampuan berpikir, belajar, dan memecahkan masalah seperti yang dilakukan manusia. Teknologi ini memungkinkan komputer dan mesin untuk “memahami” lingkungan mereka, menganalisis data, dan membuat keputusan atau rekomendasi yang cerdas.
Kenapa tiba-tiba error saat upload code Arduino IDE?
Pastikan install Library, Boards, dan Port dengan benar. compile ulang code dan jika masih ada error maka copy saja error messagenya untuk mengetahui errornya dimana
Bagaimana cara mengetahui IP Address ESP-8266?
Pada menu tools kalian pilih bagian serial monitor pastikan ESP-8266 Terhubung dengan koneksi wifi yang kalian tulis di code
Kenapa Proses inisialisasi On/Off lampunya lama?
Karena Python membutuhkan waktu untuk memproses Library dari code tersebut dan spek komputer/laptop yang kalian gunakan juga bisa mempengaruhi kinerja programnya. dan pastikan laptop dan ESP-8266 terhubung dengan koneksi internet
Kesimpulan
Berikut adalah project prototype control lampu menggunakan AI, tentu ini bisa dikembangkan lebih jauh lagi. mengingat teknologi yang selalu maju, besar kemungkinan ini akan menjadi teknologi tepat guna untuk masa depan.
Tertarik Belajar Lebih mengenai Internet of Things? Coba deh ikutan Online Course Pra Bootcamp Industrial Internet of Things (IIoT) di academy.edutic.id. Course-nya gratis, lho! Selamat belajar dan semoga makin seru dengan proyek-proyek kamu!