اكتشاف الكائنات مع ESP32-CAM

Detecting Objects with the ESP32-CAM

يعد ESP32-CAM متحكمًا قويًا منخفض التكلفة مع وحدة كاميرا مدمجة ، قادر على التقاط الصور وتدفق الفيديو المباشر. من خلال الاستفادة من قدرات المعالجة الخاصة بها ودمج مكتبات التعلم الآلي الخارجي أو الأطر ، يمكنك تمكين اكتشاف الكائن مباشرة على ESP32-CAM. سيوجهك هذا البرنامج التعليمي من خلال إعداد اكتشاف الكائنات الأساسية باستخدام ESP32-CAM باستخدام النماذج التي تم تدريبها مسبقًا.


ماذا ستحتاج

  1. وحدة ESP32-CAM
  2. مبرمج FTDI (محول USB-to-Serial)
  3. الأسلاك الطائر
  4. لوح (اختياري)
  5. جهاز كمبيوتر مع Arduino IDE مثبت
  6. دافع الحافة أو tensorflow lite لنماذج الكشف عن الكائنات

الخطوة 1: إعداد Arduino IDE

1. قم بتثبيت حزمة لوح ESP32

  1. افتح Arduino IDE.

  2. اذهب إلى ملف > التفضيلات.

  3. في حقل "عنوان URL الخاص بمدير اللوحة الإضافية" ، أضف:

    https://dl.espressif.com/dl/package_esp32_index.json
    
  4. انقر نعم.

  5. اذهب إلى أدوات > سبورة > مدير المجالس.

  6. ابحث عن "ESP32" وقم بتثبيت الحزمة بواسطة أنظمة Espressif.

2. تثبيت المكتبات المطلوبة

  • قم بتثبيت مكتبة "ESP32 Camera".
  • بالنسبة لنماذج اكتشاف الكائنات ، قم بتثبيت "TensorFlow Lite Micro" (أو مكتبات مماثلة).

الخطوة 2: توصيل ESP32-CAM

esp32-cam pin FTDI مبرمج دبوس
GND GND
5V VCC (5V)
u0r تكساس
U0T RX
GND GND (IO0 إلى GND للومض)

مهم: قم بتوصيل دبوس IO0 بـ GND لوضع ESP32-CAM في وضع الفلاش.


الخطوة 3: تحميل رسم أساسي للكشف عن الكائنات

1. حدد اللوحة والميناء

  1. اذهب إلى أدوات > سبورة واختيار AI-Hinker ESP32-CAM.
  2. تحت أدوات، حدد الصحيح ميناء كوم لمبرمج FTDI الخاص بك.

2. إعداد الرمز

استخدم مثالًا أساسيًا لتحميل نموذج اكتشاف الكائنات المدربين مسبقًا (على سبيل المثال ، نموذج TensorFlow Lite). يوجد أدناه مقتطف عينة لدمج الكشف عن الكائنات:

#include <esp_camera.h>
#include <TensorFlowLite_ESP32.h>

// Replace with your specific model and labels
#include "model.h"
#include "labels.h"

void setup() {
  Serial.begin(115200);

  // Initialize the camera
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;

  if (!esp_camera_init(&config)) {
    Serial.println("Camera initialized successfully!");
  } else {
    Serial.println("Camera initialization failed!");
    while (1);
  }

  // Load the TensorFlow Lite model
  TfLiteStatus model_status = tflite::InitModel(model);
  if (model_status != kTfLiteOk) {
    Serial.println("Failed to initialize the model");
    while (1);
  }
}

void loop() {
  // Capture a frame
  camera_fb_t *frame = esp_camera_fb_get();
  if (!frame) {
    Serial.println("Camera capture failed");
    return;
  }

  // Run object detection
  tflite::RunInference(frame->buf, frame->len);

  // Display detected objects
  for (int i = 0; i < NUM_CLASSES; i++) {
    float confidence = tflite::GetConfidence(i);
    if (confidence > 0.5) {
      Serial.print("Detected: ");
      Serial.print(labels[i]);
      Serial.print(" with confidence: ");
      Serial.println(confidence);
    }
  }

  esp_camera_fb_return(frame); // Free the frame buffer
  delay(200);
}

3. تحميل الرمز

  1. اضغط على إعادة ضبط زر على ESP32-CAM بينما يتم توصيل IO0 بـ GND.
  2. انقر رفع في Arduino IDE.
  3. بمجرد اكتمال التحميل ، افصل IO0 من GND واضغط على إعادة ضبط زر مرة أخرى.

الخطوة 4: الوصول إلى نتائج اكتشاف الكائنات

  1. افتح الشاشة التسلسلية (أدوات > المراقبة التسلسلية) وتعيين معدل باود 115200.
  2. عرض الكائنات المكتشفة وعشرات ثقتها في الشاشة التسلسلية.
  3. يمكنك توسيع هذا من خلال عرض النتائج في واجهة ويب باستخدام HTML أو الاندماج مع منصات إنترنت الأشياء مثل MQTT.

الخطوة 5: تعزيز الكشف عن الكائنات

  • تحسين النموذج: استخدم الحافة الدافعة أو Tensorflow Lite لتدريب النماذج المخصصة المحسّنة لـ ESP32-Cam.
  • واجهة الويب: تعزيز المشروع من خلال عرض الكائنات المكتشفة مباشرة في واجهة المتصفح.
  • تكامل إنترنت الأشياء: أرسل نتائج الكشف إلى الخدمات السحابية لمزيد من المعالجة أو أنظمة التنبيه.

استكشاف الأخطاء وإصلاحها

  • نموذج كبير جدًا: تأكد من أن حجم النموذج يناسب ذاكرة ESP32-CAM.
  • لم يتم اكتشاف الكاميرا: تحقق من الأسلاك وتأكد من توصيل الكاميرا بشكل آمن.
  • دقة منخفضة: تدريب أو ضبط النموذج مع بيانات أكثر صلة.

تطبيقات اكتشاف الكائنات مع ESP32-CAM

  1. الكاميرات الأمنية مع الكشف عن الحركة أو الكائنات
  2. أتمتة المنزل الذكية (على سبيل المثال ، اكتشاف عمليات التسليم أو الحيوانات الأليفة)
  3. أنظمة المراقبة والعد الصناعية
  4. مراقبة الحياة البرية والبحث

خاتمة

لقد نجحت في إعداد اكتشاف الكائنات الأساسية باستخدام ESP32-CAM. هذه الوحدة القوية ، إلى جانب نماذج التعلم الآلي ، تفتح إمكانيات لا نهاية لها للتطبيقات في العالم الحقيقي. جرب نماذج مختلفة ، وتحسين الدقة ، وتوسيع الوظائف لتناسب احتياجات مشروعك!

اترك تعليقًا

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.