De ESP32-CAM is een krachtige, goedkope microcontroller met een ingebouwde cameramodule, in staat om afbeeldingen te maken en live video te streamen. Door gebruik te maken van de verwerkingsmogelijkheden en het integreren van externe machine learning-bibliotheken of frameworks, kunt u objectdetectie rechtstreeks op de ESP32-CAM inschakelen. Deze zelfstudie zal u begeleiden door het instellen van basisobjectendetectie met de ESP32-CAM met behulp van vooraf opgeleide modellen.
Wat u nodig hebt
- ESP32-cam module
- FTDI Programmer (USB-naar-serial adapter)
- Jumper draden
- Breadboard (optioneel)
- Een computer met de Arduino Ide geïnstalleerd
- Randimpuls of tensorflow lite voor objectdetectiemodellen
Stap 1: het instellen van de Arduino IDE
1. Installeer het ESP32 -bordpakket
-
Open de Arduino Ide.
-
Gaan naar Bestand > Voorkeuren.
-
Voeg in het veld "Extra board manager urls" toe:
https://dl.espressif.com/dl/package_esp32_index.json
-
Klikken OK.
-
Gaan naar Hulpmiddelen > Bord > Boards Manager.
-
Zoek naar "ESP32" en installeer het pakket per espressifystemen.
2. Installeer de vereiste bibliotheken
- Installeer de bibliotheek "ESP32 Camera".
- Installeer voor objectdetectiemodellen "TensorFlow Lite Micro" (of vergelijkbare bibliotheken).
Stap 2: De ESP32-CAM bedraden
ESP32-cam pin | FTDI -programmeerpin |
---|---|
GND | GND |
5V | VCC (5V) |
U0r | Tx |
U0t | RX |
GND | GND (io0 naar GND voor knipperen) |
Belangrijk: Sluit de IO0-pin aan op GND om de ESP32-CAM in de flash-modus te plaatsen.
Stap 3: Een basisschets voor objectdetectie uploaden
1. Selecteer het bord en de poort
- Gaan naar Hulpmiddelen > Bord en selecteren AI-DENTER ESP32-CAM.
- Onder Hulpmiddelen, selecteer het juiste Com port voor uw FTDI -programmeur.
2. De code voorbereiden
Gebruik een basisvoorbeeld om een vooraf getraind objectdetectiemodel te laden (bijv. TensorFlow Lite-model). Hieronder is een voorbeeldfragment om objectdetectie te integreren:
#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. Upload de code
- Druk op de Resetten Knop op de ESP32-CAM terwijl IO0 is verbonden met GND.
- Klikken Uploaden In de Arduino Ide.
- Zodra de upload is voltooid, koppel IO0 los van GND en druk op de Resetten knop opnieuw.
Stap 4: Resultaten voor objectdetecties
- Open de seriële monitor (Hulpmiddelen > Serie -monitor) en stel het baudrates in op
115200
. - Bekijk gedetecteerde objecten en hun betrouwbaarheidsscores in de seriële monitor.
- U kunt dit uitbreiden door resultaten in een webinterface weer te geven met behulp van HTML of integreren met IoT -platforms zoals MQTT.
Stap 5: Verbetering van het objectdetectie
- Modeloptimalisatie: Gebruik randimpuls of tensorflow lite om aangepaste modellen te trainen die zijn geoptimaliseerd voor de ESP32-CAM.
- Webinterface: Verbeter het project door de gedetecteerde objecten rechtstreeks in een browserinterface weer te geven.
- IoT -integratie: Stuur detectieresultaten naar cloudservices voor verdere verwerkings- of waarschuwingssystemen.
Problemen oplossen
- Model te groot: Zorg ervoor dat de modelgrootte binnen het geheugen van de ESP32-CAM past.
- Camera niet gedetecteerd: Controleer de bedrading en zorg ervoor dat de camera veilig is aangesloten.
- Lage nauwkeurigheid: Het model trainen of verfijnen met meer relevante gegevens.
Toepassingen van objectdetectie met ESP32-CAM
- Beveiligingscamera's met beweging of objectdetectie
- Smart Home Automation (bijv. Leveringen of huisdieren detecteren)
- Industriële monitoring- en telsystemen
- Wildlife monitoring en onderzoek
Conclusie
U hebt succesvol basisobjectendetectie ingesteld met de ESP32-CAM. Deze krachtige module, gecombineerd met modellen voor machine learning, biedt eindeloze mogelijkheden voor echte toepassingen. Experimenteer met verschillende modellen, verbeteren de nauwkeurigheid en breid de functionaliteit uit om aan uw projectbehoeften te voldoen!