ESP32-CAM como servidor Web con cámara

Se puede configurar a la ESP32-CAM para funcionar como un servidor web que permita visualizar una imagen tomada con la cámara OV2640 conectada al ESP32. En este tutorial te mostraré un programa que permite visualizar una imagen tomada desde la cámara de la ESP32-CAM y te la muestra en una url local. 

El código es bastante sencillo, para configurarlo basta con indicar la red y contraseña de la red que se utilizara, esto se puede modificar en las variables ssid y password.  Adicionalmente existe una variable llamada dns, esta sirve para cambiar el nombre del dns de la esp32. Un DNS es un nombre que se le asignará al dispositivo, aunque solo lo reconocen computadoras con Linux o IOs instalado y en caso de usar windows, se requiere instalar un software adicional que permita reconocer los DNS locales. En este caso el dns configurado se llama “cámara” por lo que para acceder a la imagen de la cámara, se utilizará la siguiente URL http://camara.local/imagen.jpg. Entonces esta es la URL que se utilizará para probar el codigo. En caso de que no tengas Linux o IOs, entonces tendrás que abrir el monitor serial de Arduino para averiguar que IP te asignó la red y en ese caso tendrás que acceder a http://IP-que-asigno-la-red/imagen.jpg. En la Figura E2.1, se muestra un ejemplo de esta configuración. 

Monitor serial del servidor de la esp32-cam.
Figura E2.1. Monitor serial del programa al iniciar la configuración, en este caso la red asignó la dirección 192.168.100.169, aunque cabe resaltar que esta IP cambia de acuerdo a las condiciones de su propia red.

Resoluciones válidas de la ESP32-CAM

En este caso las resoluciones probadas con la ESP32-CAM son las siguientes:

  • HQVGA ( 240px x 160px).
  • QVGA (320px, 240px).
  • WQVGA (400px 240px).
  • VGA(640px, 480px).
  • SVGA(800px,600px);

Existen otras resoluciones que se podrían compilar pero sin embargo no producen una buena calidad de imagen, como lo es la UXGA 1600px 1200px, la XGA(1024px x 768px). En teoría para aplicaciones de machine learning es posible utilizar las resoluciones anteriores con la ESP32-CAM.

Funciones

  • conectaWiFi(). Permite realizar la conexión con la red wifi y las variables públicas ssid y password.
  • error404(). Es la función que se ejecuta cuando el servidor detecta que se quiere ingresar a una url que el servidor de la ESP32 no reconoce.
  • servirImagen(). En esta función está el código necesario para suministrar al servidor web de una imagen en formato jpg. Se toma la imagen y se le proporciona al cliente. 
  • setup(). Configuraciones iniciales del programa, como la url donde puede verse la imagen, la configuración del wifi y de la cámara. 

loop(). Es el loop principal donde se está esperando por las conexiones entrantes.

Configuración de setup

Para poder utilizar la camara de la esp32, se realizan las siguientes instrucciones:

  •  using namespace esp32cam; . Es el nombre del espacio de las funciones y clases de la biblioteca esp32cam.h.
  •   Config configuracion; La variable de configuración. 
  •   configuracion.setPins(pins::AiThinker); Se configuran los pines de conexión de la ESP32-CAM.
  •   configuracion.setResolution(QVGA); Se establece la resolución. 
  •   configuracion.setBufferCount(5);  . Establece el número de imágenes en el buffer
  •   configuracion.setJpeg(80); Se configura la calidad de la imagen.
  •   bool ok = Camera.begin(configuracion);. Se establece la configuración a la cámara. 

Código

Autor: Dr. Rubén Estrada Marmolejo

Fecha de creación: 2 de Octubre del 2021

Guadalajara, Jalisco, México.

Versión en PDF:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *