Ang ESP32-CAM ay isang malakas, murang microcontroller na may built-in na module ng camera, na may kakayahang makunan ng mga imahe at streaming live na video. Sa pamamagitan ng pag-agaw ng mga kakayahan sa pagproseso nito at pagsasama ng mga panlabas na aklatan ng pag-aaral ng makina o mga frameworks, maaari mong paganahin ang pagtuklas ng object nang direkta sa ESP32-cam. Ang tutorial na ito ay gagabay sa iyo sa pamamagitan ng pag-set up ng pangunahing object detection kasama ang ESP32-cam gamit ang mga pre-sanay na modelo.
Ano ang kakailanganin mo
- Module ng ESP32-CAM
- FTDI Programmer (USB-To-Serial Adapter)
- Jumper wires
- Breadboard (Opsyonal)
- Isang computer na may naka -install na Arduino IDE
- Gilid salpok o tensorflow lite para sa mga modelo ng pagtuklas ng object
Hakbang 1: Pag -set up ng Arduino IDE
1. I -install ang package ng ESP32 board
-
Buksan ang Arduino IDE.
-
Pumunta sa File > Kagustuhan.
-
Sa patlang na "Karagdagang Board Manager URL", idagdag:
https://dl.espressif.com/dl/package_esp32_index.json
-
Mag -click Ok.
-
Pumunta sa Mga tool > Lupon > Manager ng board.
-
Maghanap para sa "ESP32" at i -install ang package ng mga sistema ng ESPRESFIF.
2. I -install ang mga kinakailangang aklatan
- I -install ang library ng "ESP32 Camera".
- Para sa mga modelo ng pagtuklas ng object, i -install ang "TensorFlow Lite Micro" (o mga katulad na aklatan).
Hakbang 2: Ang mga kable ng ESP32-cam
ESP32-CAM PIN | FTDI programmer pin |
---|---|
Gnd | Gnd |
5v | VCC (5V) |
U0r | TX |
U0t | RX |
Gnd | Gnd (io0 hanggang gnd para sa pag -flash) |
Mahalaga: Ikonekta ang IO0 PIN sa GND upang ilagay ang ESP32-cam sa flash mode.
Hakbang 3: Pag -upload ng isang pangunahing sketch ng pagtuklas ng object
1. Piliin ang board at port
- Pumunta sa Mga tool > Lupon at piliin AI-Thinker ESP32-CAM.
- Sa ilalim ng Mga tool, piliin ang tama Com port Para sa iyong programmer ng FTDI.
2. Paghahanda ng code
Gumamit ng isang pangunahing halimbawa upang mai-load ang isang pre-sanay na modelo ng pagtuklas ng object (hal., TensorFlow Lite model). Nasa ibaba ang isang halimbawang snippet upang pagsamahin ang pagtuklas ng object:
#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. I -upload ang code
- Pindutin ang I -reset Button sa ESP32-cam habang ang IO0 ay konektado sa GND.
- Mag -click Mag -upload sa Arduino IDE.
- Kapag kumpleto ang pag -upload, idiskonekta ang IO0 mula sa GND at pindutin ang I -reset Button muli.
Hakbang 4: Pag -access sa mga resulta ng pagtuklas ng object
- Buksan ang serial monitor (Mga tool > Serial monitor) at itakda ang rate ng baud sa
115200
. - Tingnan ang mga napansin na mga bagay at ang kanilang mga marka ng kumpiyansa sa serial monitor.
- Maaari mong palawakin ito sa pamamagitan ng pagpapakita ng mga resulta sa isang web interface gamit ang HTML o pagsasama sa mga platform ng IoT tulad ng MQTT.
Hakbang 5: Pagpapahusay ng pagtuklas ng object
- Pag -optimize ng Model: Gumamit ng gilid na salpok o tensorflow lite upang sanayin ang mga pasadyang mga modelo na na-optimize para sa ESP32-cam.
- Web Interface: Pagandahin ang proyekto sa pamamagitan ng pagpapakita ng mga napansin na mga bagay nang direkta sa isang interface ng browser.
- Pagsasama ng IoT: Magpadala ng mga resulta ng pagtuklas sa mga serbisyo ng ulap para sa karagdagang mga sistema ng pagproseso o alerto.
Pag -aayos
- MODEL MALAKI: Tiyakin na ang laki ng modelo ay umaangkop sa loob ng memorya ng ESP32-cam.
- Hindi nakita ang camera: Patunayan ang mga kable at tiyakin na ang camera ay konektado nang ligtas.
- Mababang katumpakan: Sanayin o pinong-tune ang modelo na may mas may-katuturang data.
Ang mga aplikasyon ng pagtuklas ng object na may ESP32-cam
- Mga security camera na may paggalaw o pagtuklas ng object
- Smart Home Automation (hal., Pag -alis ng Mga Paghahatid o Mga Alagang Hayop)
- Mga sistema ng pagsubaybay at pagbibilang sa industriya
- Pagsubaybay at pananaliksik ng wildlife
Konklusyon
Matagumpay kang nag-set up ng pangunahing pagtuklas ng object sa ESP32-CAM. Ang malakas na module na ito, na sinamahan ng mga modelo ng pag-aaral ng makina, ay nagbubukas ng walang katapusang mga posibilidad para sa mga application ng real-world. Eksperimento sa iba't ibang mga modelo, pagbutihin ang kawastuhan, at palawakin ang pag -andar upang umangkop sa iyong mga pangangailangan sa proyekto!