ESP32-CAM to potężny, tani mikrokontroler z wbudowanym modułem aparatu, zdolnym do przechwytywania obrazów i przesyłania strumieniowego wideo na żywo. Wykorzystując jego możliwości przetwarzania i integrację zewnętrznych bibliotek lub frameworków uczenia maszynowego, możesz włączyć wykrywanie obiektów bezpośrednio w ESP32-CAM. Ten samouczek poprowadzi Cię przez konfigurowanie podstawowego wykrywania obiektów za pomocą ESP32-CAM za pomocą modeli wstępnie wyszkolonych.
Czego będziesz potrzebować
- Moduł ESP32-CAM
- Programator FTDI (adapter USB-Serial)
- Przewody zworki
- Breadboard (opcjonalnie)
- Komputer z zainstalowanym Arduino IDE
- Impuls krawędzi lub Tensorflow Lite dla modeli wykrywania obiektów
Krok 1: Konfigurowanie Arduino IDE
1. Zainstaluj pakiet płyty ESP32
-
Otwórz Arduino IDE.
-
Idź do Plik > Preferencje.
-
W polu „Dodatkowe adresy URL menedżerskich” dodaj:
https://dl.espressif.com/dl/package_esp32_index.json
-
Trzask OK.
-
Idź do Narzędzia > Tablica > Menedżer tablic.
-
Wyszukaj „ESP32” i zainstaluj pakiet według systemów Espressif.
2. Zainstaluj wymagane biblioteki
- Zainstaluj bibliotekę „ESP32 Camera”.
- W przypadku modeli wykrywania obiektów zainstaluj „TensorFlow Lite Micro” (lub podobne biblioteki).
Krok 2: Okablowanie ESP32-CAM
Pin ESP32-CAM | FTDI PIN |
---|---|
GND | GND |
5v | VCC (5v) |
U0R | TX |
U0T | Rx |
GND | GND (IO0 do GND do migania) |
Ważny: Podłącz pin IO0 do GND, aby umieścić ESP32-CAM w trybie Flash.
Krok 3: Przesłanie podstawowego szkicu wykrywania obiektów
1. Wybierz płytę i port
- Idź do Narzędzia > Tablica i wybierz AI-Thinker ESP32-CAM.
- Pod Narzędzia, Wybierz poprawne COM Port Dla programisty FTDI.
2. Przygotowanie kodu
Użyj podstawowego przykładu, aby załadować wstępnie wyszkolony model wykrywania obiektów (np. Model Tensorflow Lite). Poniżej znajduje się przykładowy fragment w celu zintegrowania wykrywania obiektów:
#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. Prześlij kod
- Naciśnij Nastawić Przycisk na ESP32-CAM, gdy IO0 jest podłączony do GND.
- Trzask Wgrywać W Arduino IDE.
- Po zakończeniu przesłania odłącz IO0 od GND i naciśnij Nastawić Znowu przycisk.
Krok 4: Dostęp do wyników wykrywania obiektów
- Otwórz monitor szeregowy (Narzędzia > Monitor szeregowy) i ustaw wskaźnik transmisji na
115200
. - Widok wykryte obiekty i ich wyniki zaufania w monitor szeregowych.
- Możesz to rozwinąć, wyświetlając wyniki w interfejsie internetowym za pomocą HTML lub integrując się z platformami IoT, takimi jak MQTT.
Krok 5: Ulepszanie wykrywania obiektów
- Optymalizacja modelu: Użyj impulsu Edge lub TensorFlow Lite, aby szkoli niestandardowe modele zoptymalizowane dla ESP32-CAM.
- Interfejs internetowy: Ulepsz projekt, wyświetlając wykryte obiekty bezpośrednio w interfejsie przeglądarki.
- Integracja IoT: Wyślij wyniki wykrywania do usług w chmurze w celu dalszego przetwarzania lub powiadomień.
Rozwiązywanie problemów
- Model za duży: Upewnij się, że rozmiar modelu mieści się w pamięci ESP32-CAM.
- Aparat nie wykryty: Sprawdź okablowanie i upewnij się, że kamera jest bezpiecznie podłączona.
- Niska dokładność: Trenuj lub dostosuj model bardziej odpowiednimi danymi.
Zastosowania wykrywania obiektów za pomocą ESP32-CAM
- Kamery bezpieczeństwa z wykrywaniem ruchu lub obiektów
- Automatyzacja inteligentnej domu (np. Wykrywanie dostaw lub zwierząt)
- Systemy monitorowania i liczenia przemysłowego
- Monitorowanie i badania nad dziką przyrodą
Wniosek
Z powodzeniem skonfigurowałeś podstawowe wykrywanie obiektów za pomocą ESP32-CAM. Ten potężny moduł, w połączeniu z modelem uczenia maszynowego, otwiera nieskończone możliwości aplikacji w świecie rzeczywistym. Eksperymentuj z różnymi modelami, poprawiaj dokładność i poszerz funkcjonalność, aby odpowiadała potrzebom projektu!