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 https://youtu.be/PS_MGMkKBaQ 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!