El ESP32-CAM es un potente microcontrolador de bajo costo con un módulo de cámara incorporado, capaz de capturar imágenes y transmitir videos en vivo. Al aprovechar sus capacidades de procesamiento e integrar bibliotecas o marcos de aprendizaje automático externos, puede habilitar la detección de objetos directamente en la cámara ESP32. Este tutorial lo guiará a través de la configuración de la detección básica de objetos con la CAM ESP32 utilizando modelos previamente capacitados.
Lo que necesitarás
- Módulo ESP32-CAM
- Programador FTDI (adaptador USB a serial)
- Cables de jersey
- Paneles (opcional)
- Una computadora con el Arduino IDE instalado
- Impulso de borde o tensorflow lite para modelos de detección de objetos
Paso 1: Configuración del Arduino IDE
1. Instale el paquete de placa ESP32
-
Abra el IDE Arduino.
-
Ir a Archivo > Preferencias.
-
En el campo "URL de Administrador de placa adicional", agregue:
https://dl.espressif.com/dl/package_esp32_index.json
-
Hacer clic DE ACUERDO.
-
Ir a Herramientas > Junta > Gerente de tableros.
-
Busque "ESP32" e instale el paquete por los sistemas Espressif.
2. Instale bibliotecas requeridas
- Instale la biblioteca "Cámara ESP32".
- Para los modelos de detección de objetos, instale "TensorFlow Lite Micro" (o bibliotecas similares).
Paso 2: Cableado la cámara ESP32
Alfiler | Pin de programador FTDI |
---|---|
Gnd | Gnd |
5V | VCC (5V) |
U0R | Tx |
U0T | Rx |
Gnd | GND (IO0 a GND para flashear) |
Importante: Conecte el pin IO0 a GND para poner la cámara ESP32 en modo Flash.
Paso 3: Cargar un boceto básico de detección de objetos
1. Seleccione el tablero y el puerto
- Ir a Herramientas > Junta y seleccionar AI-Pensador ESP32-CAM.
- Bajo Herramientas, seleccione el correcto Puerto para su programador FTDI.
2. Preparando el código
Use un ejemplo básico para cargar un modelo de detección de objetos previamente capacitado (por ejemplo, modelo TensorFlow Lite). A continuación se muestra un fragmento de muestra para integrar la detección de objetos:
#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. Sube el código
- Presione el Reiniciar botón en la cámara ESP32 mientras IO0 está conectado a GND.
- Hacer clic Subir en el Arduino IDE.
- Una vez que se complete la carga, desconecte IO0 de GND y presione el Reiniciar botón de nuevo.
Paso 4: Acceso a los resultados de detección de objetos
- Abra el monitor en serie (Herramientas > Monitor en serie) y establecer la tasa de baudios en
115200
. - Ver objetos detectados y sus puntajes de confianza en el monitor en serie.
- Puede expandir esto mostrando resultados en una interfaz web utilizando HTML o integrarse con plataformas IoT como MQTT.
Paso 5: Mejora de la detección de objetos
- Optimización del modelo: Use el impulso de borde o el tensorflow lite para entrenar modelos personalizados optimizados para la cámara ESP32.
- Interfaz web: Mejore el proyecto mostrando los objetos detectados directamente en una interfaz del navegador.
- Integración de IoT: Envíe los resultados de detección a los servicios en la nube para su posterior procesamiento o sistemas de alerta.
Solución de problemas
- Modelo demasiado grande: Asegúrese de que el tamaño del modelo se ajuste dentro de la memoria de ESP32-CAM.
- Cámara no detectada: Verifique el cableado y asegúrese de que la cámara esté conectada de forma segura.
- Baja precisión: Entrene o ajuste el modelo con datos más relevantes.
Aplicaciones de detección de objetos con ESP32-CAM
- Cámaras de seguridad con movimiento o detección de objetos
- Automatización inteligente del hogar (por ejemplo, detectar entregas o mascotas)
- Sistemas de monitoreo y conteo industrial
- Monitoreo e investigación de la vida silvestre
Conclusión
Has configurado con éxito la detección básica de objetos con la CAM ESP32. Este poderoso módulo, combinado con modelos de aprendizaje automático, abre infinitos posibilidades para aplicaciones del mundo real. ¡Experimente con diferentes modelos, mejore la precisión y expanda la funcionalidad para satisfacer las necesidades de su proyecto!