ESP32-CAM es un módulo de cámara compacto que combina la popular placa de desarrollo Wi-Fi ESP32 con el sensor de cámara OV2640. La cámara forma parte de la serie ESP32 de dispositivos de sistema en chip (SoC) habilitados para Wi-Fi y Bluetooth desarrollados por Espressif Systems.
ESP32 es un microcontrolador de doble núcleo de 32 bits con capacidades integradas de Bluetooth y Wi-Fi, basado en Espressif IoT Development Framework (ESP-IDF). El módulo de cámara combinado OV2640 ofrece una resolución de dos megapíxeles, lo que ofrece un dispositivo asequible para capturar imágenes y vídeos en una aplicación integrada o en un dispositivo de Internet de las cosas (IoT).
ESP32-CAM tiene una ranura para tarjeta MicroSD, que se puede utilizar para almacenamiento de imágenes y vídeos. También proporciona suficientes pines de entrada y salida de uso general (GPIO) en el módulo para interactuar directamente con sensores y otros periféricos.
El módulo se puede programar fácilmente utilizando el IDE de Arduino con el paquete de soporte de placa ESP32 adecuado o el ESP-IDF para un desarrollo más avanzado. La programación cuenta con el respaldo de una comunidad amplia, activa y de código abierto, con numerosas bibliotecas y ejemplos en línea.
Sin embargo, a pesar de sus ventajas, ESP32-CAM también tiene algunas desventajas. En este artículo, revisaremos algunos problemas comunes al trabajar con este módulo de cámara y ofreceremos posibles soluciones.
¿Por qué elegir ESP32-CAM?
La cámara ESP32 ofrece varias ventajas para agregar funcionalidad de transmisión de imágenes o video a aplicaciones integradas. El módulo de la cámara es compacto, con Wi-Fi y Bluetooth integrados. Se integra fácilmente con cualquier red de IoT y puede funcionar en modo de suspensión para extender la vida útil de la batería en proyectos portátiles.
Este módulo de bajo costo tiene una ranura para tarjetas MicroSD con conexiones internas a su GPIO para almacenamiento local de imágenes y videos. Ofrece suficiente GPIO para conectar directamente sensores o periféricos adicionales con el módulo. También se puede programar desde Arduino IDE y cuenta con una gran comunidad de código abierto, lo que lo hace ideal para aplicaciones principiantes o intermedias.
Limitaciones del módulo
ESP32-CAM es atractivo porque es fácil de usar y asequible. Sin embargo, no es ideal para tareas computacionales intensivas, como ejecutar algoritmos complejos de aprendizaje automático. La RAM disponible en el módulo no es suficiente para tareas de procesamiento de imágenes de alta resolución. La resolución de la cámara del sensor OV2640 integrado es de sólo dos megapíxeles.
Una gran desventaja del ESP32-CAM es que no tiene un puerto USB en la mayoría de las placas de conexión, por lo que es necesario utilizar un programador FTDI externo o una placa Arduino para flashear el código en el módulo. El módulo tampoco tiene medidas de seguridad integradas al conectarse a una red, que deben agregarse al firmware integrado si es necesario.
Además, las placas de conexión ESP32-CAM se calientan, especialmente con la transmisión de video, lo que potencialmente requiere disipadores de calor. Aunque existe un buen soporte comunitario para ESP32-CAM, la documentación no es la ideal. La transición a ESP-IDF para crear proyectos avanzados utilizando ESP32-CAM es una curva de aprendizaje pronunciada.
Formularios
El ESP32-CAM es un módulo versátil gracias a sus capacidades integradas de Bluetooth, Wi-Fi y tarjeta MicroSD. Es útil en proyectos de IoT como domótica, monitoreo ambiental, seguridad y vigilancia. También es útil para proyectos de aprendizaje automático, como detección de objetos, reconocimiento facial y otras tareas basadas en imágenes de simples a intermedias. El módulo se puede utilizar incluso para el seguimiento de la vida silvestre y la fotografía a intervalos.
Problemas comunes con ESP32-CAM
- Problemas con el suministro de energía
- No se pudo conectar a ESP32
- Falló la inicialización de la cámara
- Detector de corte de energía
- Problemas de memoria
- Placa COMX no disponible
- error de psram
- Conectividad Wi-Fi
- No hay dirección IP en el monitor serie Arduino IDE
- No se puede abrir el servidor web
- Calidad de la imagen
- Latencia de imagen
- Calentamiento excesivo
- Seguridad
- esp_camera_fb_get: ¡No se pudo obtener el cuadro a tiempo!
Analicemos estos problemas y sus posibles soluciones.
Problemas de suministro de energía
Es posible que el ESP32–CAM no se encienda o se reinicie con frecuencia. Esto suele deberse a un suministro de energía inadecuado o inestable. Asegúrese de que una fuente de alimentación estable con una capacidad de corriente de al menos 500 mA alimente el módulo. Además, utilice un cable USB y una fuente de alimentación de calidad, evitando cables más largos si es posible.
El flash LED de la cámara normalmente consume energía adicional y alimentarlo desde el ESP32-CAM puede causar caídas de voltaje. Lo ideal es utilizar una batería externa, que también es buena para la portabilidad. Si alimenta el módulo a través de un programador FTDI, use una fuente de 5V en lugar de 3V3.
Error de conexión: se agotó el tiempo de espera mientras se esperaba el encabezado del paquete
Este error ocurre al cargar un boceto en el ESP32-CAM e indica que el módulo no está en modo flash o no está conectado correctamente al programador FTDI.
El diagrama del circuito para cargar correctamente un boceto en el ESP32-CAM a través del programador FTDI es el siguiente.
El diagrama del circuito para enviar el boceto a ESP32-CAM a través de Arduino es el siguiente.
Si usa un programador FTDI, el programador puede tener un puente para seleccionar entre 5 y 3,3 V. Si es así, asegúrese de que el puente esté colocado de modo que se seleccionen 5 V y que la GPIO0 -CAM del ESP32 esté correctamente conectada a tierra. De lo contrario, el módulo no entrará en modo intermitente.
Además, cualquier programador FTDI basado en el modelo CH340 no funcionará con la cámara ESP32. Elija un programador FTDI compatible con ESP32-CAM o código flash usando Arduino. Si usa Arduino, asegúrese de que su pin de reinicio también esté conectado a tierra.
Después de realizar las conexiones de circuito adecuadas entre el ESP32-CAM y el programador FTDI/Arduino, asegúrese de seleccionar las configuraciones adecuadas. Por ejemplo, seleccione 'ESP32 Wrover Module' o 'AI-Thinker ESP32-CAM' según el modelo de su cámara ESP32 en Herramientas->Tablero. Además, elija el puerto correcto para el programador Arduino o FTDI y asegúrese de que esté conectado en Herramientas->Puerto. Cuando se hace clic en el botón de carga y se muestra 'Conectando...' en la ventana de depuración, presione el botón de reinicio ESP32-CAM. El boceto debería comenzar a cargarse en el módulo de la cámara.
Falló la inicialización de la cámara
Este problema indica que la asignación del pin del código es incorrecta o que la cámara OVX no está conectada correctamente a la placa ESP32. A veces, el problema se puede resolver reiniciando repetidamente la placa o desconectando y conectando el programador FTDI.
Sin embargo, existe más de una posible razón para este mensaje de error. La cámara tiene un conector pequeño, así que asegúrese de que esté conectado de forma segura. Además, verifique que esté seleccionado el modelo de cámara correcto en el código y que la definición del pin ESP32-CAM sea correcta dentro del boceto. En sus proyectos, elija el módulo de cámara adecuado. Cada módulo de cámara debe estar "comentado", pero deje el correcto "sin comentar".
Es importante tener en cuenta que el cableado entre el ESP32 y la cámara OV en muchas placas se considera "placas ficticias", por lo que existe la posibilidad de que elegir el módulo de cámara correcto sea insuficiente. Es posible que deba comparar la configuración de pines de su tarjeta con cada declaración GPIO.
También es posible que el programador FTDI esté defectuoso o que el puerto USB de su computadora no esté proporcionando suficiente energía al módulo de la cámara. Considere utilizar otro programador FTDI o puerto USB.
Este error también ocurre cuando el sensor de la cámara no está conectado correctamente al módulo. Es posible que la cinta de la cámara esté rota o que el sensor OV2640 esté defectuoso.
Detector de corte de energía
Después de enviar el boceto al ESP32-CAM, desconecte GPIO0 de tierra en el módulo de la cámara. Después de cargar el boceto, abra el Monitor serie Arduino y presione el botón de reinicio en el módulo.
Si recibe el mensaje de error "Se ha activado el detector de corte de energía" repetidamente en la consola serie, la razón típica es porque:
- El cable USB es demasiado largo o de mala calidad.
- El puerto USB de la computadora no funciona correctamente
- El puerto USB no proporciona suficiente energía
- La placa esta defectuosa
Intente utilizar un cable USB diferente o un puerto USB diferente. Por ejemplo, considere utilizar un concentrador USB con una fuente de alimentación externa. O intente usar una fuente de 5 V en lugar de 3,3 V para el ESP32-CAM. Si ninguna de estas soluciones funciona, desactive la detección de caídas de tensión agregando las siguientes líneas de código a su boceto.
#incluye “soc/soc.h”
#incluye “soc/rtc_cntl_reg.h”
configuración vacía {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
}
Problemas de memoria
El ESP32-CAM tiene RAM limitada, por lo que pueden ocurrir problemas relacionados con la memoria al trabajar con imágenes grandes o programas complejos. La gestión eficiente de la memoria es crucial para evitar fallos.
Es posible que encuentre el error "Boceto demasiado grande" al enviar el boceto. Asegúrese de seleccionar el esquema de partición correcto. Vaya a Herramientas->Esquema de partición y seleccione 'Aplicación enorme (3 MB sin OTA)'.
Placa COMX no disponible
Si se produce el error "La placa en COMX no está disponible", probablemente no seleccionó el puerto COM Arduino correcto. Navegue a Herramientas->Puerto y el puerto COM al que está conectado su ESP32. Un problema con el cable USB o el puerto USB de tu computadora también puede generar este error.
Error de PSRAM: el servicio GPIO ISR no está instalado
Este error ocurrirá si su placa ESP32-CAM no tiene PSRAM. Las tareas basadas en imágenes, como el reconocimiento facial y la detección de objetos, son imposibles con estas tarjetas.
Lo ideal es elegir un modelo ESP32-CAM que tenga PSRAM. Pero si tienes una placa sin PSRAM, una solución alternativa es bajar la resolución de la imagen en el boceto.
Agregue las siguientes líneas de código al boceto.
si(psramEncontrado){
config.frame_size=FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} otro {
config.frame_size=FRAMESIZE_SVGA;
config.jpeg_qualidade = 12;
config.fb_count = 1;
}
Conectividad Wi-Fi
Pueden ocurrir problemas con la red Wi-Fi debido a credenciales incorrectas, intensidad de la señal o interferencias. Vuelva a verificar la intensidad de su señal Wi-Fi y actualice el firmware si es necesario.
Además, pruebe con diferentes posiciones de antena para obtener una mejor recepción. El ESP32-CAM se puede configurar para usar una antena externa o incorporada, que se puede usar si la señal de Wi-Fi es débil.
De lo contrario, verifique que la resistencia del puente 0K cerca del conector de la antena esté colocada correctamente. Tres pequeños cuadrados blancos están dispuestos como “<”, siendo la posición media la más popular. La resistencia debe estar en la posición superior para usar la antena de PCB y en la posición inferior para usar el conector de antena. Para activar la antena integrada, desoldar la resistencia que está conectada a ella y soldar las dos conexiones.
No hay dirección IP en el monitor serie Arduino IDE
Si hay una señal de Wi-Fi confiable, pero aún aparecen puntos (como '……...') en la consola serie, entonces el ESP32-CAM no está conectado correctamente a la red Wi-Fi. Esto podría deberse a varias razones. .
Vuelva a verificar lo siguiente, asegurándose:
- Ingresaste las credenciales de red Wi-Fi correctas en el boceto.
- La velocidad de transmisión de ESP32-CAM es de 115.200 bps.
- Los pines TX y RX del ESP32-CAM están conectados de forma segura a los pines TX y RX del programador Arduino o FTDI.
Conectar el TX del ESP32-CAM con el Arduino o el RX del programador FTDI y/o el RX del ESP32-CAM con el Arduino o el ESP32-CAM del programador FTDI es un error común. "TX" debe estar conectado a "TX" y "RX" debe estar conectado a "RX" para una comunicación serie adecuada. A veces, presionar repetidamente el botón de reinicio en el módulo de la cámara también resuelve el problema.
No se puede abrir el servidor web
Cuando ESP32-CAM informa la dirección IP en el IDE de Arduino Serial Monitor, pero aparece una pantalla en blanco al abrir el servidor web en un navegador, es posible que esté accediendo al servidor web a través de varias pestañas.
El ESP32-CAM solo puede manejar solicitudes HTTP de un único cliente, así que intente acceder al servidor web desde una única pestaña del navegador.
Mala calidad de imagen
Si está conectado a un servidor web pero recibe imágenes borrosas o distorsionadas, intente ajustar la configuración de su cámara, incluida la resolución, la velocidad de fotogramas y el balance de blancos. Asegure el enfoque adecuado ajustando la lente. Además, intente limpiar la lente de su cámara para obtener imágenes claras.
Latencia de imagen
Puede haber latencia al visualizar imágenes o transmisiones de video en el servidor web con algunos módulos. Esto se puede resolver utilizando una fuente de alimentación independiente de 5 V para el módulo de la cámara. En algunos casos, resulta útil utilizar una antena externa.
Si todavía hay problemas de latencia, intente reducir el tamaño del fotograma agregando la siguiente línea de código al boceto.
config.frame_size = SVGA_FRAME_SIZE
O alternativamente, prueba esto:
config.frame_size = VGA_FRAME_SIZE
Calentamiento excesivo
El ESP32-CAM puede sobrecalentarse, especialmente durante la transmisión de video. Intente reducir la resolución del video y la velocidad de fotogramas. Agregue un disipador de calor para disipar el calor, especialmente para tareas exigentes, y garantice una ventilación adecuada en la caja del proyecto.
Seguridad
Existen posibles vulnerabilidades de seguridad con el ESP32-CAM cuando se conecta a Internet. Estos fallos de seguridad se pueden evitar mediante el uso de contraseñas y cifrado seguros. También puede implementar mecanismos de autenticación y autorización si es necesario. Mantenga siempre actualizado el firmware para parches de seguridad.
esp_camera_fb_get: ¡No se pudo obtener el cuadro a tiempo!
Este error suele ocurrir con los modelos M5 y aquellos sin PSRAM. Para el modelo M5, el problema se puede resolver agregando asignaciones de pines en el boceto.
Considere agregar esta línea de código al esquema principal.
#definir CAMERA_MODEL_M5STACK_WITHOUT_PSRAM
Luego, en la pestaña camera_pins.h, agregue las siguientes líneas de código:
#elif definido(CAMERA_MODEL_M5STACK_NO_PSRAM)
#definir PWDN_GPIO_NUM -1
#definir RESET_GPIO_NUM 15
#definir XCLK_GPIO_NUM 27
#definir SIOD_GPIO_NUM 25
#definir SIOC_GPIO_NUM 23
#definir Y9_GPIO_NUM 19
#definir Y8_GPIO_NUM 36
#definir Y7_GPIO_NUM 18
#definir Y6_GPIO_NUM 39
#definir Y5_GPIO_NUM 5
#definir Y4_GPIO_NUM 34
#definir Y3_GPIO_NUM 35
#definir Y2_GPIO_NUM 17
#definir VSYNC_GPIO_NUM 22
#definir HREF_GPIO_NUM 26
#definir PCLK_GPIO_NUM 21
Esto debería resolver el problema.
Conclusión
Para tareas sencillas de procesamiento de imágenes en dispositivos IoT y aplicaciones integradas, ESP32-CAM es una buena opción. Es eficiente, asequible y fácil de integrar. Sin embargo, pueden ocurrir algunos problemas con este módulo. Afortunadamente, la mayoría de ellos se pueden resolver siguiendo sencillas sugerencias.