Az ESP32-CAM egy nagy teljesítményű, olcsó mikrokontroller, beépített kameramodullal, amely képes képeket rögzíteni és élő videókat streaming. A feldolgozási képességek kihasználásával és a külső gépi tanulási könyvtárak vagy keretek integrálásával engedélyezheti az objektumok észlelését közvetlenül az ESP32-CAM-on. Ez az oktatóanyag az alapvető objektum-észlelés beállításán keresztül az ESP32-CAM-szal előre kiképzett modellek segítségével.
Mire lesz szüksége
- ESP32-CAM modul
- FTDI programozó (USB-soros adapter)
- Jumper vezetékek
- Kenyérlemez (opcionális)
- Egy számítógép, amelyen az Arduino IDE telepített
- Edge impulzus vagy tensorflow lite objektumdetektálási modellekhez
1. lépés: Az Arduino IDE beállítása
1. Telepítse az ESP32 tábla csomagot
-
Nyissa meg az Arduino IDE -t.
-
Elindul Irat > Preferenciák.
-
A "További Board Manager URLS" mezőben adja hozzá:
https://dl.espressif.com/dl/package_esp32_index.json
-
Kattintás RENDBEN.
-
Elindul Szerszámok > Bizottság > Táblák menedzser.
-
Keressen az "ESP32" -re, és telepítse a csomagot az Espressif Systems segítségével.
2. Telepítse a szükséges könyvtárakat
- Telepítse az "ESP32 kamera" könyvtárat.
- Az objektumdetektálási modellekhez telepítse a "TensorFlow Lite Micro" (vagy hasonló könyvtárakat).
2. lépés: Az ESP32-CAM bekötése
ESP32-CAM PIN | FTDI programozó csap |
---|---|
GND | GND |
5 V -os | VCC (5V) |
U0R | Tx |
U0T | RX |
GND | GND (IO0 - GND a villogáshoz) |
Fontos: Csatlakoztassa az IO0 tűt a GND-hez, hogy az ESP32-CAM-ot flash módba tegye.
3. lépés: Az alapvető objektum -észlelési vázlat feltöltése
1. Válassza ki a táblát és a portot
- Elindul Szerszámok > Bizottság és válasszon Ai-thinker ESP32-CAM.
- Alatt Szerszámok, válassza ki a helyes Comport Az FTDI programozójához.
2. A kód előkészítése
Használjon egy alapvető példát egy előre kiképzett objektumdetektálási modell (például a TensorFlow Lite modell) betöltéséhez. Az alábbiakban egy mintarészlet található az objektum észlelésének integrálására:
#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. Töltse fel a kódot
- Nyomja meg a Visszaállít gomb az ESP32-CAM-on, míg az IO0 csatlakozik a GND-hez.
- Kattintás Feltöltés az Arduino Ide -ben.
- Miután a feltöltés befejeződött, válassza le az IO0 -t a GND -ből, és nyomja meg a Visszaállít ismét gomb.
4. lépés: Az objektumdetektálási eredmények elérése
- Nyissa meg a soros monitort (Szerszámok > Soros monitor) és állítsa be az adatátviteli sebességet
115200
. - Tekintse meg az észlelt tárgyakat és azok megbízhatósági pontszámait a soros monitorban.
- Bővítheti ezt az eredmények megjelenítésével egy webes felületen, HTML használatával, vagy integrálva az olyan tárgyak internetein, mint az MQTT.
5. lépés: Az objektum észlelésének javítása
- Modell optimalizálás: Használjon Edge Impulse vagy TensorFlow Lite-t az ESP32-CAM számára optimalizált egyedi modellek kiképzéséhez.
- Webes felület: Fokozza a projektet az észlelt objektumok közvetlenül a böngésző felületén történő megjelenítésével.
- IOT integráció: Küldje el az észlelési eredményeket a felhőalapú szolgáltatásoknak további feldolgozási vagy riasztási rendszerekhez.
Hibaelhárítás
- Túl nagy modell: Győződjön meg arról, hogy a modell mérete illeszkedik az ESP32-CAM memóriájába.
- A kamerát nem észlelték: Ellenőrizze a vezetékeket, és ellenőrizze, hogy a kamera biztonságosan csatlakoztatva van -e.
- Alacsony pontosság: Képzze meg vagy finomítsa a modellt relevánsabb adatokkal.
Az objektumdetektálás alkalmazása az ESP32-CAM segítségével
- Biztonsági kamerák mozgással vagy objektum észlelésével
- Intelligens otthoni automatizálás (például szállítások vagy háziállatok észlelése)
- Ipari megfigyelő és számláló rendszerek
- Vadon élő állatok megfigyelése és kutatása
Következtetés
Sikeresen beállította az alapvető objektumdetektálást az ESP32-CAM segítségével. Ez a hatalmas modul, a gépi tanulási modellekkel kombinálva, végtelen lehetőségeket nyit meg a valós alkalmazások számára. Kísérletezzen különböző modellekkel, javítsa a pontosságot, és bővítse a funkcionalitást a projekt igényeinek megfelelően!