ESP32-CAM adalah mikrokontroler berbiaya rendah dengan kamera bawaan, yang mampu menangkap gambar dan streaming video. Ketika dikombinasikan dengan pustaka pemrosesan gambar Python yang kuat, Anda dapat menerapkan deteksi objek untuk berbagai aplikasi seperti pengawasan, otomatisasi rumah, dan robotika. Tutorial ini akan memandu Anda melalui menggunakan ESP32-Cam dengan Python untuk melakukan deteksi objek.
Apa yang Anda Butuhkan
- Modul ESP32-CAM
- Programmer FTDI (Adaptor USB-to-Serial)
- Papan tempat memotong papan dan kabel jumper
- Python terpasang di komputer Anda (versi 3.6 atau lebih baru)
- Perpustakaan: Opencv, numpy, dan permintaan
- Model terlatih (mis., yolov5, tensorflow lite)
Langkah 1: Menyiapkan ESP32-CAM
1. Flash ESP32-CAM dengan Camerawebserver
-
Hubungkan ESP32-CAM ke programmer FTDI Anda:
- Gnd ke gnd
- 5V ke VCC
- U0t ke rx
- U0R ke TX
- Io0 ke gnd (Untuk mode berkedip)
-
Buka IDE Arduino dan instal Paket Papan ESP32:
- Pergi ke File> Preferensi dan tambahkan URL:
https://dl.espressif.com/dl/package_esp32_index.json
- Pergi ke Alat> Board> Boards Manager, cari ESP32, dan instal paket.
- Pergi ke File> Preferensi dan tambahkan URL:
-
Muat contoh Camerawebserver:
- Pergi ke File> Contoh> ESP32> Kamera> Camerawebserver.
- Perbarui
ssid
Danpassword
Variabel dengan kredensial Wi-Fi Anda:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- Memilih AI-pemikir ESP32-Cam di bawah Alat> papan.
-
Unggah kode ke ESP32-Cam. Lepaskan IO0 dari GND dan tekan tombol Reset.
2. Akses stream video ESP32-CAM
- Buka monitor serial dan atur baud rate ke
115200
. - Temukan alamat IP ESP32-CAM di output monitor serial (mis.,
http://192.168.1.100
). - Buka alamat IP di browser untuk memverifikasi streaming langsung.
Langkah 2: Menyiapkan Lingkungan Python
1. Instal perpustakaan yang diperlukan
Instal perpustakaan Python yang diperlukan menggunakan PIP:
pip install opencv-python numpy requests
2. Verifikasi Instalasi OpenCV
Jalankan kode berikut untuk memastikan OpenCV diinstal:
import cv2
print(cv2.__version__)
Langkah 3: Mengambil aliran video
Gunakan Python untuk menangkap bingkai dari aliran video ESP32-CAM.
Contoh Kode: Mengambil Bingkai
import cv2
import requests
import numpy as np
# ESP32-CAM URL
url = "http://192.168.1.100/capture"
while True:
# Capture image from ESP32-CAM
img_resp = requests.get(url)
img_array = np.array(bytearray(img_resp.content), dtype=np.uint8)
frame = cv2.imdecode(img_array, -1)
# Display the frame
cv2.imshow("ESP32-CAM", frame)
# Exit on pressing 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
Langkah 4: Menambahkan Deteksi Objek
Integrasi deteksi objek ke dalam aliran video yang ditangkap menggunakan model pra-terlatih, seperti YOLOV5.
1. Unduh model pra-terlatih
Anda dapat menggunakan model YOLOV5 pra-terlatih:
- Unduh dari Repositori Yolov5 GitHub.
2. Contoh Kode: Deteksi Objek dengan YOLOV5
import cv2
import requests
import numpy as np
import torch
# Load YOLOv5 model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
# ESP32-CAM URL
url = "http://192.168.1.100/capture"
while True:
# Capture image from ESP32-CAM
img_resp = requests.get(url)
img_array = np.array(bytearray(img_resp.content), dtype=np.uint8)
frame = cv2.imdecode(img_array, -1)
# Perform object detection
results = model(frame)
detections = results.xyxy[0] # Bounding boxes
# Draw bounding boxes
for *xyxy, conf, cls in detections:
label = f"{model.names[int(cls)]} {conf:.2f}"
cv2.rectangle(frame, (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3])), (255, 0, 0), 2)
cv2.putText(frame, label, (int(xyxy[0]), int(xyxy[1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
# Display the frame
cv2.imshow("ESP32-CAM Object Detection", frame)
# Exit on pressing 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
Langkah 5: Meningkatkan Deteksi Objek
- Model khusus: Latih model YOLOV5 Anda sendiri untuk objek tertentu menggunakan platform seperti Roboflow atau Google Colab.
- Pemrosesan tepi: Menggunakan model ringan seperti TensorFlow Lite untuk pemrosesan di perangkat.
- Integrasi: Kirim hasil deteksi ke server atau tindakan pemicu dalam sistem IoT.
Aplikasi deteksi objek ESP32-CAM
- Sistem keamanan dan pengawasan rumah
- Pemantauan dan Pelacakan Satwa Liar
- Otomatisasi pabrik dan kontrol kualitas
- Proyek Robotika Interaktif
- Bel pintu pintar dengan pengakuan wajah
Pemecahan masalah
- Latensi stream: Kurangi resolusi atau laju bingkai untuk streaming yang lebih halus.
- Masalah Koneksi: Pastikan ESP32-Cam dan komputer Anda berada di jaringan yang sama.
- Akurasi Model: Menyempurnakan model pra-terlatih untuk hasil yang lebih baik pada dataset Anda.
Kesimpulan
Menggabungkan ESP32-Cam dengan Python membuka kemungkinan yang kuat untuk deteksi objek dan pemrosesan video real-time. Dengan mengikuti panduan ini, Anda dapat mengintegrasikan deteksi objek ke dalam proyek Anda untuk aplikasi pintar. Eksperimen dengan berbagai model dan optimisasi untuk membuat sistem canggih dan efisien!