يعد ESP32-CAM متحكم متعدد التكلفة منخفض التكلفة مع كاميرا مدمجة ، قادر على التقاط الصور ودفق الفيديو. عندما يتم دمجها مع مكتبات Python القوية لتجهيز الصور ، يمكنك تنفيذ اكتشاف الكائنات لمجموعة متنوعة من التطبيقات مثل المراقبة وأتمتة المنزل والروبوتات. سيوجهك هذا البرنامج التعليمي من خلال استخدام ESP32-CAM مع Python لإجراء اكتشاف الكائنات.
ماذا ستحتاج
- وحدة ESP32-CAM
- مبرمج FTDI (محول USB-to-Serial)
- الأسلاك الأسلاك والبلوز
- بيثون مثبت على جهاز الكمبيوتر الخاص بك (الإصدار 3.6 أو لاحقًا)
- المكتبات: OpenCV ، Numpy ، وطلبات
- نموذج مدرب (على سبيل المثال ، Yolov5 ، Tensorflow Lite)
الخطوة 1: إعداد ESP32-CAM
1.
-
قم بتوصيل ESP32-CAM بمبرمج FTDI الخاص بك:
- GND إلى GND
- 5V إلى VCC
- U0T إلى RX
- U0R إلى تكساس
- IO0 إلى GND (لوضع الوميض)
-
افتح Arduino IDE وقم بتثبيت حزمة لوحة ESP32:
- اذهب إلى ملف> تفضيلات وأضف عنوان URL:
https://dl.espressif.com/dl/package_esp32_index.json
- اذهب إلى أدوات> لوحة> مدير المجالس، ابحث عن ESP32 ، وتثبيت الحزمة.
- اذهب إلى ملف> تفضيلات وأضف عنوان URL:
-
قم بتحميل مثال Cameraweberver:
- اذهب إلى ملف> أمثلة> ESP32> الكاميرا> Camerawebserver.
- تحديث
ssid
وpassword
المتغيرات مع بيانات اعتماد Wi-Fi الخاصة بك:const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD";
- يختار AI-Hinker ESP32-CAM تحت أدوات> لوحة.
-
قم بتحميل الرمز إلى ESP32-CAM. افصل IO0 من GND واضغط على زر إعادة الضبط.
2. الوصول إلى دفق الفيديو ESP32-CAM
- افتح الشاشة التسلسلية وضبط معدل الباود
115200
. - ابحث عن عنوان IP الخاص بـ ESP32-CAM في إخراج الشاشة التسلسلية (على سبيل المثال ،
http://192.168.1.100
). - افتح عنوان IP في متصفح للتحقق من الدفق المباشر.
الخطوة 2: إنشاء بيئة بيثون
1. تثبيت المكتبات المطلوبة
قم بتثبيت مكتبات Python اللازمة باستخدام PIP:
pip install opencv-python numpy requests
2. تحقق من تثبيت OpenCV
قم بتشغيل الكود التالي لضمان تثبيت OpenCV:
import cv2
print(cv2.__version__)
الخطوة 3: التقاط دفق الفيديو
استخدم Python لالتقاط الإطارات من دفق الفيديو ESP32-CAM.
رمز مثال: التقاط الإطارات
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()
الخطوة 4: إضافة اكتشاف الكائن
دمج اكتشاف الكائن في دفق الفيديو الذي تم التقاطه باستخدام نموذج تم تدريبه مسبقًا ، مثل YOLOV5.
1. قم بتنزيل نموذج مسبقًا مدربًا
يمكنك استخدام نموذج YOLOV5 المدرب مسبقًا:
- قم بتنزيله من yolov5 مستودع جيثب.
2. رمز المثال: اكتشاف الكائن مع 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()
الخطوة 5: تعزيز الكشف عن الكائنات
- نماذج مخصصة: قم بتدريب نموذج YOLOV5 الخاص بك لكائنات محددة باستخدام منصات مثل Roboflow أو Google Colab.
- معالجة الحافة: نشر نماذج خفيفة الوزن مثل Tensorflow Lite لمعالجة الجهاز.
- اندماج: أرسل نتائج الكشف إلى خادم أو إجراء إجراءات في أنظمة إنترنت الأشياء.
تطبيقات الكشف عن كائن ESP32-CAM
- أنظمة الأمن والمراقبة المنزلية
- مراقبة وتتبع الحياة البرية
- أتمتة المصنع ومراقبة الجودة
- مشاريع الروبوتات التفاعلية
- جرس الباب الذكي مع التعرف على الوجه
استكشاف الأخطاء وإصلاحها
- دفق زمن انتقال: تقليل الدقة أو معدل الإطارات للبث الأكثر سلاسة.
- قضايا الاتصال: تأكد من أن ESP32-CAM وجهاز الكمبيوتر الخاص بك على نفس الشبكة.
- دقة النموذج: صقل النموذج الذي تم تدريبه مسبقًا للحصول على نتائج أفضل على مجموعة البيانات الخاصة بك.
خاتمة
يفتح الجمع بين ESP32-CAM مع Python إمكانيات قوية للكشف عن الكائنات ومعالجة الفيديو في الوقت الفعلي. باتباع هذا الدليل ، يمكنك دمج اكتشاف الكائنات في مشاريعك للتطبيقات الذكية. جرب نماذج وتحسينات مختلفة لإنشاء أنظمة متقدمة وفعالة!