ESP32-CAM är en kraftfull, billig mikrokontroller med en inbyggd kameramodul, som kan ta bilder och strömma livevideo. Genom att utnyttja sina bearbetningsfunktioner och integrera externa maskininlärningsbibliotek eller ramverk kan du aktivera objektdetektering direkt på ESP32-CAM. Denna handledning kommer att vägleda dig genom att ställa in grundläggande objektdetektering med ESP32-CAM med hjälp av förutbildade modeller.
Vad du behöver
- ESP32-CAM-modul
- FTDI-programmerare (USB-till-seriell adapter)
- Bulttrådar
- Breadboard (valfritt)
- En dator med Arduino Ide installerad
- Kantimpuls eller tensorflow lite för objektdetekteringsmodeller
Steg 1: Ställa in Arduino IDE
1. Installera ESP32 -kortpaketet
-
Öppna Arduino IDE.
-
Gå till Fil > Inställningar.
-
I fältet "Ytterligare styrelsechefer", lägg till:
https://dl.espressif.com/dl/package_esp32_index.json
-
Klick OK.
-
Gå till Verktyg > Styrelse > Styrelseschef.
-
Sök efter "ESP32" och installera paketet med Espressif Systems.
2. Installera obligatoriska bibliotek
- Installera biblioteket "ESP32 Camera".
- För objektdetekteringsmodeller installerar du "Tensorflow Lite Micro" (eller liknande bibliotek).
Steg 2: Koppling av ESP32-CAM
Esp32-cam stift | FTDI -programmerare |
---|---|
Gard | Gard |
5V | VCC (5V) |
U0r | Tx |
U0t | Rx |
Gard | GND (IO0 till GND för blinkning) |
Viktig: Anslut IO0-stiftet till GND för att sätta ESP32-CAM i flash-läge.
Steg 3: Ladda upp en grundläggande objektdetekteringsskiss
1. Välj brädet och porten
- Gå till Verktyg > Styrelse och välj AI-Thinker ESP32-CAM.
- Under Verktyg, välj rätt Hamn För din FTDI -programmerare.
2. Förbereda koden
Använd ett grundläggande exempel för att ladda en förutbildad objektdetekteringsmodell (t.ex. TensorFlow Lite-modell). Nedan följer ett provavdrag för att integrera objektdetektering:
#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. Ladda upp koden
- Trycka på Återställa Knapp på ESP32-CAM medan IO0 är ansluten till GND.
- Klick Ladda upp i Arduino IDE.
- När uppladdningen är klar kopplar du bort IO0 från GND och tryck på Återställa knapp igen.
Steg 4: Åtkomst till resultat av objektdetektering
- Öppna seriell monitor (Verktyg > Serieövervakare) och ställ in baudhastigheten till
115200
. - Visa upptäckte objekt och deras förtroendepoäng i seriell monitor.
- Du kan utöka detta genom att visa resultat i ett webbgränssnitt med HTML eller integrera med IoT -plattformar som MQTT.
Steg 5: Förbättra objektdetektering
- Modelloptimering: Använd Edge Impulse eller TensorFlow Lite för att träna anpassade modeller optimerade för ESP32-CAM.
- Webbgränssnitt: Förbättra projektet genom att visa de detekterade objekten direkt i ett webbläsargränssnitt.
- IoT -integration: Skicka detekteringsresultat till molntjänster för ytterligare bearbetnings- eller varningssystem.
Felsökning
- Modellen för stor: Se till att modellstorleken passar i ESP32-CAM: s minne.
- Kamera inte upptäckt: Kontrollera ledningar och se till att kameran är ansluten säkert.
- Låg noggrannhet: Träna eller finjustera modellen med mer relevant data.
Tillämpningar av objektdetektering med ESP32-CAM
- Säkerhetskameror med rörelse eller objektdetektering
- Smart Home Automation (t.ex. upptäckt leveranser eller husdjur)
- Industriella övervakning och räkningssystem
- Djurlivsövervakning och forskning
Slutsats
Du har framgångsrikt skapat grundläggande objektdetektering med ESP32-CAM. Denna kraftfulla modul, i kombination med maskininlärningsmodeller, öppnar oändliga möjligheter för verkliga applikationer. Experimentera med olika modeller, förbättra noggrannheten och utöka funktionaliteten så att de passar dina projektbehov!