Integrar una ESP32-CAM con ESPHome

Hoy aprendemos a integrar una ESP32-CAM con ESPHome, un componente más valioso que nunca gracias a la Inteligencia Artificial!

¿Qué es una ESP32-CAM?

Si ya estás en este mundillo, el nombre no engaña. Las ESP32-CAM son unas pequeñas cámaras que funcionan sobre una placa ESP32 y, por tanto, las podemos integrar en Home Assistant utilizando ESPHome.

La principal ventaja es que funcionan totalmente en local, pero la mala noticia es que no puedes esperar de ellas una gran calidad de imagen. Estos componentes no son nuevos, pero se han «revalorizado» gracias al uso que podemos hacer de la Inteligencia Artificial en HA. Con esto en mente, vas a poder utilizarlas para cualquier uso que implique tomar una captura y pedirle a una IA que la analice.

Requisitos previos

Para integrar una ESP32-CAM con ESPHome necesitas:

  • Una ESP32-CAM. Ojo que no todas son iguales! Como cualquier placa ESP32, las hay con más o menos PSRAM (mínimo 4 MB), con distintos procesadores (mejor si es ESP32-S3) y diferentes cámaras (el módulo típico es el OV2640, de 2 megapixeles).
  • Un cable USB para alimentar la placa de DATOS (con un cable de carga no vas a poder instalar el software).
  • Haber instalado ESPHome en Home Assistant.

*Algún precio puede haber cambiado desde la ultima revision

Montaje del ESP32-CAM

En este caso no vas a necesitar usar el soldador, ya que el montaje es bastante intuitivo. Básicamente, tienes que encajar las patillas de la placa ESP32-CAM con el módulo que incorpora un puerto USB (necesario para ‘flashear’ el firmware).

Respecto a la cámara, primero tienes que levantar la «pestañita» negra que encontrarás más o menos en la mitad, introduce con cuidado el conector de la cámara y baja de nuevo la pestaña. Y eso es todo!

Configuración de ESPHome

Ahora tenemos que ‘flashear’ la placa con ESPHome y la configuración correspondiente. Para ello sigue estos pasos:

  1. Conecta la placa a tu ordenador a través del puerto USB.
  2. En Home Assistant, accede al complemento de ESPHome desde el menú lateral y pulsa en “New device”. Pulsa en “Continue” y dale un nombre (por ejemplo, “ESP32-CAM”).
  3. Pulsa en “Next” y a continuación selecciona la opción “ESP32” (o ESP32-S3, si fuera tu caso) como tipo de dispositivo. Verás que en el fondo se ha creado un nuevo dispositivo.
  4. Pulsa en “Skip” y haz clic en el enlace “Edit” del bloque correspondiente al dispositivo que acabas de crear.
  5. Añade las siguientes líneas al final del código, que he extraído directamente de la documentación oficial.
captive_portal:

# Configuración PSRAM para ESP32-CAM (4MB)
psram:
  mode: quad
  speed: 80MHz

# Configuración de la cámara
esp32_camera:
  name: esp32cam
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_pins:
    sda: GPIO26
    scl: GPIO27
  data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
  vsync_pin: GPIO25
  href_pin: GPIO23
  pixel_clock_pin: GPIO22
  power_down_pin: GPIO32
  vertical_flip: False
  horizontal_mirror: False

output:
  - platform: ledc
    pin: GPIO4
    channel: 2 
    id: led

light:
  - platform: monochromatic
    output: led
    name: espcam_02 light
  1. Cuando hayas terminado de editar el código, pulsa en “Save” e “Install”. Selecciona la opción “Manual download” y espera a que el código se compile.
  2. Cuando termine, selecciona la opción “Factory format (Previously Modern)” para descargar el fichero ‘.bin’ correspondiente.
  3. Ahora ve a la página de ESPHome y pulsa en “Connect”. En la ventana emergente selecciona tu placa y pulsa en “Conectar”.
  4. Ahora pulsa en “Install” y selecciona el fichero ‘.bin’ obtenido en el paso 7. De nuevo, pulsa en “Install”.
  5. Vuelve a Home Assistant y ve a Configuración > Dispositivos y servicios. Lo normal es que tu dispositivo haya sido descubierto y aparezca en la parte superior, esperando únicamente a que pulses el botón de “Configurar”.
  1. Si accedes al dispositivo, encontrarás tanto la entidad de la imagen como el control del LED incorporado.
  2. Como siempre, te recomiendo que asignes una IP fija en tu router para evitar fallos en el futuro si esta cambia.

Configuración de la imagen

Si has echado un vistazo a la imagen que te proporciona, quizás quieras hacer algunos ajustes, por ejemplo:

  • Para rotar la imagen verticalmente (si te ves al revés), asigna ‘true’ al siguiente parámetro.
esp32_camera:
  vertical_flip: True
  • Si quieres modificar la resolución de la imagen (por defecto, 640×480), incluye y adapta este parámetro.
esp32_camera:
  resolution: 640x480

En la documentación oficial encontrarás estos y muchos otros ajustes (calidad, brillo, saturación, contraste…), por lo que te invito a repasarla si echas en falta algo en tu imagen.

Procesar la imagen con IA

Como te conté recientemente, la Inteligencia Artificial ya está disponible como una función nativa en Home Assistant. Además, también tienes opciones disponibles para explotar sus funciones de forma totalmente gratuita (como la integración de OpenRouter o Gemini).

En la práctica, esto te permite de una forma sencilla obtener información de la imagen proporcionada por tu ESP32-CAM. Puedes hacer la prueba desde Herramientas para desarrolladores > Acciones, buscando ‘ai_task.generate_data’.

En el campo «Instrucciones» dale un comando del tipo «Dime qué ves en la imagen» y en «Adjuntos» selecciona la entidad de la cámara. En la parte inferior recibirás la respuesta!

Ideas de automatización

Integrar una ESP32-CAM con ESPHome combinado con el uso de la IA es más útil que nunca! Algunas ideas que puedes llevar a cabo:

  • Utilízalas como sensores de presencia o vigilancia avanzados.
  • Monitoriza el consumo de tus contadores (como el del agua o el gas), obteniendo las lecturas cada X minutos.
  • Vigila tus impresiones 3D, para que te avise si algo ha ido mal y detenga la impresión.

Por cierto, si quieres ver cómo te lo cuenta nuestro amigo Luis del Valle de Programar Fácil, echa un ojo a este video!