Publicado el Deja un comentario

ESP32-S3-CAM: Tutorial para transmitir video por Wi-Fi

ESP32 S3 CAM

El ESP32-S3-CAM es una potente placa de desarrollo con una cámara OV3660 de 3 MP integrada, procesador Xtensa® LX7 dual-core a 240 MHz, 8 MB de PSRAM y conectividad Wi-Fi de 2.4 GHz; todo en un solo módulo listo para transmitir video por red. Si ya trabajaste con la familia de módulos ESP32, este tutorial te mostrará las diferencias clave y el procedimiento completo para levantar un stream de video accesible desde cualquier navegador.

El módulo se define como una placa de visión artificial compacta basada en el SoC ESP32-S3-WROOM-1 N16R8, diseñada para combinar captura de imagen, procesamiento local y transmisión inalámbrica sin componentes externos. A diferencia del modelo clásico (basado en ESP32-S), el S3 incorpora aceleración por hardware para redes neuronales, interfaz USB nativa y mayor capacidad de memoria, lo que amplía los casos de uso hacia Edge AI y reconocimiento de objetos en tiempo real.

Especificaciones técnicas del ESP32-S3-CAM

La siguiente tabla resume los datos más relevantes para proyectos de streaming de video IoT.

Parámetro ESP32-S3-CAM ESP32-CAM clásico
SoC ESP32-S3-WROOM-1 N16R8 ESP32-S (AI-Thinker)
CPU Xtensa® LX7 dual-core, 240 MHz Xtensa® LX6 dual-core, 240 MHz
PSRAM 8 MB 4 MB
Flash 16 MB 4 MB
Cámara OV3660, 3 MP OV2640, 2 MP
Wi-Fi 802.11 b/g/n, 2.4 GHz 802.11 b/g/n, 2.4 GHz
Bluetooth BT 5 + Mesh + BLE BT 4.2 + BLE
USB nativo Sí (USB OTG) No
Aceleración IA Sí (instrucciones de vector) No

La cámara OV3660 soporta resoluciones desde 96×96 hasta 2048×1536 (QXGA) y formatos de salida RGB565, YUV422 y JPEG. Para la transmisión de video por Wi-Fi con ESP32, la resolución más estable sin sacrificar la fluidez de fotogramas es VGA (640×480) o SVGA (800×600).

Requisitos antes de empezar

  • Placa ESP32-S3-CAM con cámara OV3660 montada.
  • Cable USB-C para alimentación y programación estable.
  • Arduino IDE 2.x (completamente recomendado) o versión 1.8.19.
  • Soporte de placas ESP32 versión 2.0.11 o superior instalado en el entorno.
  • Red Wi-Fi de 2.4 GHz (los chips ESP32 no detectan bandas de 5 GHz).
  • Navegador web (Chrome, Firefox o Edge) en el mismo segmento de red para ver el stream.

Nota técnica: A diferencia del modelo clásico que requería un módulo FTDI externo, el hardware S3 no requiere programador externo gracias a su USB OTG nativo. Si vas a realizar proyectos que no requieran captura de imagen, tal vez te interese revisar el ESP32 DevKitC V4 para proyectos sin cámara

Guía paso a paso para configurar la ESP32-S3-CAM

Sigue detenidamente estos pasos en orden secuencial para programar tu placa de manera correcta y evitar fallos de memoria en el despliegue.

Paso 1: Instalar el soporte de placas ESP32 en Arduino IDE

Si ya cuentas con el soporte de Espressif en tu IDE, verifica de inmediato que la versión sea la 2.0.11 o superior; las versiones previas sufren de bugs severos con la interfaz DVP de la cámara en arquitecturas S3.

  1. Abre el software y dirígete a Archivo → Preferencias.
  2. En el campo de texto URLs adicionales de gestor de tarjetas, copia y pega la siguiente dirección URL:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. Ve al menú lateral izquierdo en Herramientas → Gestor de tarjetas, busca la palabra esp32 de Espressif Systems e instala la versión más reciente.

Paso 2: Seleccionar los parámetros de la placa

El núcleo de Espressif incluye múltiples variantes para el chip S3. Para que el hardware responda de forma óptima, configura los parámetros en el menú Herramientas con los siguientes valores:

  • Placa (Board): ESP32S3 Dev Module
  • USB Mode: USB-OTG (TinyUSB)
  • Upload Mode: UART0 / Hardware CDC
  • PSRAM: OPI PSRAM (Ajuste crítico para el almacenamiento del frame buffer)
  • Flash Size: 16MB (128Mb)
  • Partition Scheme: Huge APP (3MB No OTA / 1MB SPIFFS)

Habilitar la opción de OPI PSRAM es vital. Si se omite, el código compilará de forma exitosa pero la ejecución fallará lanzando un error en el monitor serial al intentar inicializar la cámara por falta de RAM dedicada.

Paso 3: Cargar el ejemplo Arduino IDE ESP32 cámara (CameraWebServer)

Utilizaremos la librería oficial de Espressif que monta un servidor HTTP dinámico con controles embebidos para video. Sigue estos pasos en el entorno del Arduino IDE:

  1. Accede mediante la ruta: Archivo → Ejemplos → ESP32 → Camera → CameraWebServer.
  2. En la pestaña del sketch principal, localiza el bloque superior con las definiciones de hardware. Comenta todas las líneas de modelos viejos y activa únicamente la siguiente línea:
    #define CAMERA_MODEL_ESP32S3_EYE
  3. Modifica las variables de red con tus credenciales locales de Wi-Fi:
    const char* ssid = "TU_RED_WIFI";
    const char* password = "TU_CONTRASEÑA";
  4. Conecta la tarjeta mediante el puerto USB-C, selecciona el puerto en Herramientas → Puerto y dale al botón de subir (Upload).

Paso 4: Obtener la dirección IP y acceder al stream

Terminada la subida del firmware, abre el Monitor Serie a una velocidad de 115200 baudios y oprime el botón físico de reset (RST). Visualizarás líneas de texto confirmando el enlace:

WiFi connected
Camera Ready! Use 'http://192.168.1.45' to connect

Ingresa esa misma dirección de IP dentro de tu navegador web. Se desplegará la interfaz nativa del script ESP32 CameraWebServer, permitiéndote interactuar con el módulo en tiempo real.

El flujo se transmite bajo la tecnología de MJPEG sobre HTTP (Motion JPEG), un estándar liviano compatible con navegadores de escritorio y smartphones sin extensiones de terceros. El endpoint directo para capturar el feed de video e integrarlo con software externo de domótica como Home Assistant o Node-RED es: http://<TU_IP>:81/stream.

Resoluciones y rendimiento esperado en FPS

Dependiendo de tu aplicación final, puedes alterar la resolución desde el panel web. A continuación, te mostramos el rendimiento estimado en pruebas locales:

Resolución Píxeles FPS estimado (Wi-Fi local) Uso típico recomendado
QQVGA 160×120 ~25 fps Detección de movimiento simple
QVGA 320×240 ~20 fps Reconocimiento facial básico
VGA 640×480 ~15 fps Vigilancia interior y proyectos IoT
SVGA 800×600 ~10 fps Monitoreo con detalle moderado
XGA 1024×768 ~5–7 fps Capturas periódicas o timelapse
QXGA 2048×1536 <2 fps Fotografía fija de alta resolución

Ten en cuenta que la tasa de cuadros por segundo (FPS) final se verá afectada por el nivel de compresión JPEG configurado, la saturación de los canales de tu router y los obstáculos físicos hacia la antena de la placa.

Errores frecuentes y soluciones rápidas

¿Es compatible con scripts creados para el ESP32-CAM original?

La lógica es idéntica, pero las conexiones internas varían. Los mapeos de pines para buses de datos DVP de la cámara cambiaron por completo, por ende, es necesario usar bloques de asignación específicos como el de la tarjeta de evaluación EYE de Espressif.

¿Puedo transmitir video fuera de mi red Wi-Fi local?

Sí, realizando técnicas de apertura de puertos en el módem (Port Forwarding) o implementando herramientas seguras tipo túneles VPN o ngrok. Recuerda que el ejemplo de fábrica carece de login, por lo que dejarlo público representa un fuerte riesgo informático.

¿Cuál es el consumo de corriente durante el streaming?

En plena labor de compresión y envío inalámbrico, demanda consumos promedios que oscilan entre 200 mA y 300 mA continuos, con picos de inicio que rebasan los 500 mA. Te aconsejamos disponer de fuentes robustas capaces de dar al menos 5V a 1A para resguardar la vida útil del silicio.

Si resides en Lima o requieres envíos express directo a provincias, el hardware completo original junto a su módulo óptico OV3660 está disponible en stock en MTLAB:

🛍️ Adquirir kit ESP32-S3-CAM con sensor OV3660 en MTLAB (Incluye soporte técnico post-venta integrado).

Puedes comunicarte inmediatamente vía WhatsApp al +51 961 589 585 para recibir atención personalizada de un especialista.

Deja una respuesta

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