ESP32-CAM เป็นไมโครคอนโทรลเลอร์ราคาประหยัดที่ทรงพลังพร้อมโมดูลกล้องในตัวสามารถจับภาพและสตรีมวิดีโอสดได้ ด้วยการใช้ประโยชน์จากความสามารถในการประมวลผลและการรวมไลบรารีการเรียนรู้ของเครื่องภายนอกหรือเฟรมเวิร์กคุณสามารถเปิดใช้งานการตรวจจับวัตถุโดยตรงบน ESP32-CAM บทช่วยสอนนี้จะแนะนำคุณผ่านการตั้งค่าการตรวจจับวัตถุพื้นฐานด้วย ESP32-CAM โดยใช้โมเดลที่ผ่านการฝึกอบรมมาก่อน
สิ่งที่คุณต้องการ
- โมดูล ESP32-CAM
- โปรแกรมเมอร์ FTDI (อะแดปเตอร์ USB-to-Serial)
- สายจัมเปอร์
- กระดานข่าว (ไม่บังคับ)
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
- Edge Impulse หรือ Tensorflow Lite สำหรับแบบจำลองการตรวจจับวัตถุ
ขั้นตอนที่ 1: การตั้งค่า Arduino IDE
1. ติดตั้งแพ็คเกจบอร์ด ESP32
-
เปิด Arduino IDE
-
ไป ไฟล์ > การตั้งค่า.
-
ในฟิลด์ "URL Manager Manager เพิ่มเติม" เพิ่ม:
https://dl.espressif.com/dl/package_esp32_index.json
-
คลิก ตกลง.
-
ไป เครื่องมือ > กระดาน > ผู้จัดการบอร์ด.
-
ค้นหา "esp32" และติดตั้งแพ็คเกจโดยระบบ Espressif
2. ติดตั้งไลบรารีที่ต้องการ
- ติดตั้งไลบรารี "ESP32 Camera"
- สำหรับรุ่นตรวจจับวัตถุให้ติดตั้ง "TensorFlow Lite Micro" (หรือไลบรารีที่คล้ายกัน)
ขั้นตอนที่ 2: เดินสาย ESP32-CAM
pin esp32-cam | พินโปรแกรมเมอร์ ftdi |
---|---|
gnd | gnd |
5V | VCC (5V) |
U0R | TX |
u0t | RX |
gnd | GND (IO0 ถึง GND สำหรับการกะพริบ) |
สำคัญ: เชื่อมต่อ IO0 PIN กับ GND เพื่อนำ ESP32-CAM เข้าสู่โหมดแฟลช
ขั้นตอนที่ 3: การอัปโหลดภาพร่างการตรวจจับวัตถุพื้นฐาน
1. เลือกบอร์ดและพอร์ต
- ไป เครื่องมือ > กระดาน และเลือก Ai-Thinker ESP32-CAM.
- ภายใต้ เครื่องมือเลือกที่ถูกต้อง พอร์ต com สำหรับโปรแกรมเมอร์ 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. อัปโหลดรหัส
- กด รีเซ็ต ปุ่มบน ESP32-CAM ในขณะที่ IO0 เชื่อมต่อกับ GND
- คลิก อัพโหลด ใน Arduino IDE
- เมื่อการอัปโหลดเสร็จสมบูรณ์แล้วให้ถอด IO0 ออกจาก GND แล้วกด รีเซ็ต ปุ่มอีกครั้ง
ขั้นตอนที่ 4: การเข้าถึงผลการตรวจจับวัตถุ
- เปิดมอนิเตอร์อนุกรม (เครื่องมือ > จอภาพอนุกรม) และตั้งค่าอัตราการรับส่งข้อมูลเป็น
115200
. - ดูวัตถุที่ตรวจพบและคะแนนความมั่นใจในจอภาพอนุกรม
- คุณสามารถขยายสิ่งนี้ได้โดยการแสดงผลลัพธ์ในเว็บอินเตอร์เฟสโดยใช้ HTML หรือรวมเข้ากับแพลตฟอร์ม IoT เช่น MQTT
ขั้นตอนที่ 5: เพิ่มการตรวจจับวัตถุ
- การเพิ่มประสิทธิภาพแบบจำลอง: ใช้ Edge Impulse หรือ TensorFlow Lite เพื่อฝึกอบรมโมเดลที่กำหนดเองที่ปรับให้เหมาะสมสำหรับ ESP32-CAM
- เว็บอินเตอร์เฟส: ปรับปรุงโครงการโดยการแสดงวัตถุที่ตรวจพบโดยตรงในส่วนต่อประสานเบราว์เซอร์
- การรวม IoT: ส่งผลการตรวจจับไปยังบริการคลาวด์สำหรับการประมวลผลหรือระบบแจ้งเตือนเพิ่มเติม
การแก้ไขปัญหา
- รุ่นใหญ่เกินไป: ตรวจสอบให้แน่ใจว่าขนาดของรุ่นพอดีภายในหน่วยความจำของ ESP32-CAM
- ไม่ตรวจพบกล้อง: ตรวจสอบการเดินสายและตรวจสอบให้แน่ใจว่ากล้องเชื่อมต่ออย่างปลอดภัย
- ความแม่นยำต่ำ: ฝึกอบรมหรือปรับแต่งโมเดลด้วยข้อมูลที่เกี่ยวข้องมากขึ้น
แอปพลิเคชันของการตรวจจับวัตถุด้วย esp32-cam
- กล้องรักษาความปลอดภัยพร้อมการตรวจจับการเคลื่อนไหวหรือวัตถุ
- ระบบอัตโนมัติในบ้านอัจฉริยะ (เช่นการตรวจจับการส่งมอบหรือสัตว์เลี้ยง)
- ระบบตรวจสอบและนับ
- การตรวจสอบและวิจัยสัตว์ป่า
บทสรุป
คุณตั้งค่าการตรวจจับวัตถุพื้นฐานด้วย ESP32-CAM สำเร็จแล้ว โมดูลที่ทรงพลังนี้รวมกับโมเดลการเรียนรู้ของเครื่องเปิดโอกาสที่ไม่มีที่สิ้นสุดสำหรับแอปพลิเคชันในโลกแห่งความเป็นจริง ทดลองกับโมเดลที่แตกต่างกันปรับปรุงความแม่นยำและขยายการทำงานเพื่อให้เหมาะกับความต้องการของโครงการของคุณ!