Programar fácil con Arduino

Programar fácil con Arduino, entiende cómo funciona el mundo.

  • Blog
  • ¿Quién soy?
  • Podcast
  • Curso Arduino [GRATIS]
  • Curso Domótica [GRATIS]
  • Acceder
Usted está aquí: Inicio / ESP32 / ESP32 CAM introducción y primeros pasos

ESP32 CAM introducción y primeros pasos

Charly Pascual

ESP32-CAM, es un dispositivo que puede llamarse un todo en uno. Aparte de la conectividad Wifi y Bluetooth que viene de fábrica, pines GPIO, se le han añadido dos opciones más. Lleva integrado una pequeña cámara de video y una conexión para una tarjeta MicroSD, donde podremos almacenar fotos o videos.

La tercera es su bajo precio, lo que le pone la puntilla para que sea un dispositivo muy utilizado en IoT, además, conectarlo a Home Assistant y que forme parte de tu sistema domótico, es muy fácil.

Aplicaciones típicas:

  • Toma de fotos.
  • Streaming de video.
  • Reconocimiento facial.
  • Detector de movimiento.

Todo esto con un peso de 20 gramos y unas pequeñas dimensiones.

Empezamos.

Indice de contenidos

  • 1 Características ESP32 CAM
  • 2 Como programar tu ESP32 CAM
  • 3 Proyecto Cámara Web con ESP32 CAM
  • 4 Conclusión sobre ESP32 CAM
ESP32-CAM

Características ESP32 CAM

Tiene menos pines GPIO que un módulo ESP32 normal, ya que muchos de esos pines se utilizan para la gestión de la cámara y el conector microSD, aun así tienes a tu disposición 9 pines. Verás a continuación que serán algunos menos.

Esquema ESP32 CAM

ESP32-CAM-Diagrama

Lógicamente, tanta concentración de posibilidades en tan poco espacio provoca que se vayan perdiendo pines, por ejemplo, este dispositivo no tiene puerto USB, que comúnmente es la vía que utilizamos para cargar los programas a los distintos dispositivos ESPxx, Arduino etc.

Al no tener este puerto USB debemos de utilizar 6 pines para poder trabajar con el ESP32 CAM, dos para subir datos al ESP32 CAM, dos para transmitir datos TX/RX entre ordenador y ESP32 CAM, y dos para alimentar la placa. Todo esto te lo explico más adelante.

Una cámara de 2 Megapíxel, la posibilidad de añadir una tarjeta microSD de hasta 4 GB, más la opción de antena Wi-Fi externa cierran las características más importantes de este dispositivo

Partes más importantes de ESP32-CAM

parte-sectores-ESP32-CAM

Especificaciones

  • Módulo ESP32-S: junto con la antena Wifi incorporada componen el ESP32
  • Wi-Fi: 802.11b/g/n/e/i
  • Seguridad: WPA/WPA2/WPA2-Enterprise/WPS
  • CPU: 32-bit CPU de bajo consumo (2 cores).
  • Velocidad de reloj: hasta 160 MHz.
  • Bluetooth: Bluetooth 4.2 con BLE.
  • Interfaces: UART, SPI, I2C and PWM. Hasta 9 pines GPIO
  • RAM: 520 KB SRAM, externa 4 MB PSRAM
  • Soporte microSD: hasta 4GB
  • Múltiples modos de reposo (sleep modes):
    • Deep-sleep: máximo bajo consumo que puede alcanzar 6mA@5V.
    • Moderm-sleep: hasta 20mA@5V.
    • Light-sleep: hasta 6.7mA@5V.
  • Firmware actualizable a través de OTA (Over-The-Air).
  • Flash incorporado.
  • Voltaje de alimentación: 5 V.
  • Conector de antena externa: en situación de comunicaciones poco estables se puede añadir una antena externa.
  • Cámara:
    • Soporte para cámaras OV2640 y OV7670.
    • JPEG (OV2640 soportada), BMP, GRAYSCALE.
    • Sensor 2 Megapixel.
    • Resolución UXGA 1622×1200 px.
    • Transferencia de imagen entre 15 y 60 FPS.
ESP32-reconocimiento-facial

Configuración de pines ESP32 CAM

GPIO 0

Este pin determina si el ESP32 está en modo carga (flashing mode) o no, esto es, si puedo o no subir código a mi ESP32 CAM. Internamente, está conectado a una resistencia pull-up interna de 10k ohmios.

Si conectas el pin GPIO 0 a GND, el ESP32 CAM pasa al modo carga y puedes proceder a subir tu código al dispositivo, una vez subido, desconectamos este pin de GND, pulsamos el botón de RESET y podemos trabajar con el ESP32 CAM normalmente con tu código subido.

Comunicación Serie GPIO 1 y GPIO 3

GPIO 1 y GPIO 3 son los pines preparados para una comunicación serie (GPIO 1 ⇒ TX y GPIO 3 ⇒ RX). Como el ESP32 CAM no tiene un convertidor USB-Serial incorporado tienes que utilizar un adaptador que realiza esta comunicación entre el ESP32 CAM y tu ordenador.

Hay muchos en el mercado. Para este artículo yo he utilizado Adaptador Serie USB a TTL con chip FTDI FT232RL. Empleé este modelo porque va protegido por una caja transparente, puedes usar el que más te convenga, por ejemplo, este se emplea más comúnmente. La operativa es similar.

Componentes y pines del adaptador FTDI

FTDI-partes

Conexión tarjeta MicroSD

En la siguiente tabla puedes ver los pines usados con la tarjeta microSD cuando está en funcionamiento, esto quiere decir que si no utilizas esta funcionalidad puedes utilizar estos pines para otros menesteres.

Por ejemplo, para comunicaciones con el protocolo I2C: GPIO14 ⇒ SDA y GPIO 15 ⇒ SCL

MicroSDESP32 CAM
CLKGPIO 14
CMDGPIO 15
DATA0GPIO 2
DATA1 / FLASHGPIO 4
DATA2GPIO 12
DATA3GPIO 13

GPIO 4

ESP32 CAM tiene un LED muy brillante que puede actuar de como flash para la cámara. Internamente, está conectado a GPIO 4.

GPIO 33

Este pin hace referencia a un LED incluido en la ESP32 CAM, cerca del regulador de tensión y el botón de reset. Un LED siempre es útil para ayudarnos a ver, de una manera visual, lo que está pasando.

Trabaja con la lógica invertida, es decir, si envías un LOW se enciende y si envías un HIGH se apaga.

Conexiones de la cámara

Conexiones entre la cámara y el ESP32 CAM

OV2640ESP32 CAMNOMBRE DE LA VARIABLE
PARA SU USO EN EL CODIGO
D0GPIO 5Y2_GPIO_NUM
D1GPIO 18Y3_GPIO_NUM
D2GPIO 19Y4_GPIO_NUM
D3GPIO 21Y5_GPIO_NUM
D4GPIO 36Y6_GPIO_NUM
D5GPIO 39Y7_GPIO_NUM
D6GPIO 34Y8_GPIO_NUM
D7GPIO 35Y9_GPIO_NUM
XCLKGPIO 0XCLK_GPIO_NUM
PCLKGPIO 22PCLK_GPIO_NUM
VSYNCGPIO 25VSYNC_GPIO_NUM
HREFGPIO 23HREF_GPIO_NUM
SDAGPIO 26SIOD_GPIO_NUM
SCLGPIO 27SIOC_GPIO_NUM
POWER PINGPIO 32PWDN_GPIO_NUM

Material necesario ESP32 CAM

ESP32-cam-modulo

Aviso a navegantes, hay muchos ESP32 CAM por internet que son clónicos, personalmente tengo de ambos y no he tenido problemas relevantes.

¿Cómo se diferencian? Por el logotipo que aparece en el módulo ESP32-S, en los buenos aparece el logotipo de Ai-Thinker, empresa que utiliza los chips ESPxx de Espressif para añadirle funcionalidades como en este caso, la cámara de video y el conector de tarjetas microSD, aparte de la memoria FLASH, cristal oscilador y la antena WiFi en placa.

ANTENA ESP32 CAM

Este componente es optativo, solo es interesante si tienes mala calidad en la comunicación Wifi. Tiene un pero… y es que hay que utilizar el soldador en la propia placa para cambiar de lugar una resistencia.

Antena externa conectada al conector IPEX del ESP32 CAM

Antena-ESP32

Tengo cierta experiencia soldando placas, un buen soldador, estaño de calidad, mesa preparada, pasta flux, incluso me compré un microscopio digital. Pero soldar componentes SMD es un tema aparte y si le añadimos que el componente es de tamaño micro, el tema se complica mucho.

Te paso este enlace que me ayudó bastante.

Hay que tener mucho cuidado con los grados del soldador, estaño y flux de calidad, punta fina y pulso firme.

Teniendo en cuenta que la resistencia es de 0 ohmios y que realmente se comporta como una simple conexión, hay seres humanos que se han decidido por realizar la nueva conexión con un cable y romper (literal) la antigua.

Mi única recomendación es que si tienes algún dispositivo roto, un sensor, otro ESPxx etc. que primero pruebes tu destreza. Es complicado, lo digo por experiencia.

Te pego esta imagen que he tomado con un microscopio digital para que veas en detalle la operativa.

Dibujo-sin-título-7

CÁMARA de ESP32 CAM

Tomar-una-foto-con-ESP32-cam

Modelo OV2640, puedes comprártelo con diferentes longitudes del conector y varios modelos, he probado dos modelos el normal que tiene una amplitud de visión de 66º y otro que tiene 120º, hace un efecto de ojo de pez.

Aliexpress

Solo-la-camara-del-ESP32-CAM

FDTI para ESP32 CAM

Como te he comentado anteriormente el ESP32 CAM no tiene puerto USB, literalmente no cabe, para comunicarnos (desde nuestro ordenador) con el ESP32 CAM tenemos que utilizar un adaptador FTDI (como el siguiente esquema).

Esquema de conexiones

Como-programar-ESP32-CAM-con-FTDI

Como ves en el dibujo he configurado a 5V la alimentación para el ESP32 CAM, las pruebas que he realizado con 3.3V me han dado problemas sobre todo si le añades al ESP32 CAM algún sensor como un sensor de movimiento (PIR) o temperatura (DHT22)

Si te fijas los pines de TX y RX van cruzados contra el ESP32 CAM para que el TX del adaptador se comunique con el RX del ESP32 CAM y viceversa.

Por último, para que el ESP32 CAM se ponga en modo programación y puedas subir tu código desde el ordenador, hay que conectar un puente entre GPIO 0 y GND.

Como programar tu ESP32 CAM

Sigue estos pasos para realizar un test de comunicaciones.

Paso 1. Selecciona la tarjeta Ai Thinker ESP 32 en tu IDE Arduino

Si la opción no aparece, ESP32 Arduino puede suceder que no esté instalada esta tarjeta en el IDE de Arduino. Debes entrar a las preferencias del IDE Arduino. Luego donde indica Gestor de URLs Adicionales de Tarjetas debes ingresar el siguiente enlace.

  • https://dl.espressif.com/dl/package_esp32_index.json

Paso 2. Prepara el código

Vacío, solo queremos ver si tenemos comunicación con el ESP32 CAM y seleccionar correctamente el puerto USB en tu entorno de programación.

1
2
3
4
5
6
7
8
9
void setup() {
  // put your setup code here, to run once:
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
}

Paso 3. Conectar los pines del adaptador USB como se muestra en la foto de Esquema de conexiones

Paso 4. Puentear GPIO 0 y GND

Paso 5. Pulsar el botón de RESET del ESP32 CAM

Paso 6. Subir el código

En rojo se puede ver el registro de un ejemplo de carga correcta del programa.

Si el código subido fuese útil, los siguientes pasos son:

  • Abres el Serial Monitor del IDE Arduino.
  • Quitas el puente entre GPIO 0 y GND.
  • Pulsas el botón RESET del ESP32 CAM.
  • El ESP32 CAM carga el programa subido y ves su ejecución a través del Serial Monitor.

Programador ESP32 CAM MB

Esta es la opción perfecta si no quieres meterte en muchos líos, sustituye completamente al anterior Adaptador FTDI. Esta placa se ajusta perfectamente al ESP32 CAM y provee al ESP32 CAM de un conector mini-USB hembra y un botón de RESET más accesible.

Es compatible con la cámara OV2640.

esp32cam-frente-y-dorso

Existen pequeños kits donde viene todo el pack completo: antena, cámara, ESP32-CAM, zócalo programador con USB.

En Aliexpress o en Amazon tú decides.

Proyecto Cámara Web con ESP32 CAM

CAmara-de-seguridad-con-ESP32-CAM

El proyecto que he elegido para este artículo, es un ejemplo que hace referencia sobre todo, a las posibilidades de configuración de la cámara de video. La cámara es el componente más importante de este dispositivo y es el motivo principal por el que lo comprarás.

Existe un ejemplo en el propio IDE Arduino que te viene de perlas para lanzarte a probar el ESP32 CAM.

Es el siguiente.

Es un servidor WEB desde donde puedes tomar instantáneas o ver video en streaming, aparte tiene un montón de controles para que puedas jugar con la cámara.

Vamos a ello.

Paso 1. Cargar el ejemplo CamaraWebServer

Una vez cargado el ejemplo CamaraWebServer en tu IDE Arduino solo tienes que cambiar dos cosas del código para adecuarlo a tu entorno.

  • El modelo ESP32 CAM a utilizar.
  • La configuración WiFi: el SSID y la clave.

Paso 2. Elige el puerto de comunicaciones

Elige el puerto USB donde has conectado tu dispositivo, en mi caso lo tengo conectado a un HUB USB con alimentación propia para no tener problemas con la alimentación del ordenador.

Si trabajas con Windows tu puerto será COMx

Paso 3. Subir el código

Subes el código a tu ESP32 CAM desde tu IDE Arduino (tardará un ratito).

Paso 4. Pulsa el boton RESET de ESP32 CAM

Paso 5. Abre el Serial Monitor de tu IDE Arduino

Esta imagen del Monitor Serial muestra una carga correcta del código, como puedes ver, se ha conectado vía WiFi con tu router, este le ha dado una dirección IP. Solo queda que añadas esta dirección que se muestra, en el navegador.

Paso 6. Acceso HTTP a la cámara

Y este es el resultado final, como ves hay un montón de configuraciones posibles sobre la cámara, abajo tienes dos botones: Get Still para tomar instantáneas y Start Stream para video.

ESP-32-CAM-software

¿Y ahora?

Hay innumerables aplicaciones donde puedes utilizar un ESP32 CAM:

  • Cámara de seguridad CCTV – Cámara IP.
  • Visión artificial embebida – Reconocimiento facial.
  • Visión remota para robots móviles .

Si le añades un sensor de presencia (PIR), programando el ESP32 CAM para que tome varias instantáneas en el momento de detectar presencia y las envíe a tu Home Assistant (o directamente a tu usuario de Telegram) conviertes al ESP32 CAM en un elemento de tu seguridad doméstica.

Como muestra, acabo de recibir mi prototipo que una empresa ha convertido en una placa para que pueda soldar los componentes.

Aparte del ESP32 CAM, tiene un sensor de presencia PIR AM312, un sensor de temperatura BME280, un LED rojo de 3 mm y un botón de reset en la parte posterior.

Incluso le he comprado una cajita, queda bien, ¿no?

ESP32-proyecto-final

Conclusión sobre ESP32 CAM

Supongo que no te has dado cuenta, pero hemos abierto un melón de un tamaño considerable, al añadir servicios web con ESP32 CAM hemos abierto la puerta a todo lo que hay detrás de un servicio web a nivel programación, es decir, HTML, CSS y JavaScript.

Es verdad que sobre este tema he pasado de puntillas, tiene miga. Es la unión de dos mundos, el poder interactuar con los controles de una cámara o simplemente poner un pin a HIGH o LOW a través de una interfaz web, es la leche.

El listón se pone cada vez más alto y debemos tener más conocimientos de más lenguajes. Que no te dé miedo. Dar un paso hacia atrás y dos hacia delante es como se avanza, no solo en este mundillo sino en cualquiera.

ESP32 CAM es perfecto para poner en práctica todo esto. Sé que la curva de aprendizaje se complica al sumar tantos lenguajes, pero merece la pena.

Desde añadirle un portal cautivo para que se pueda conectar a cualquier WiFi a través de tu móvil, hasta conectarlo a un sistema de seguridad de tu controlador favorito, (como Home Assistant) las posibilidades son muchas.

Para ello necesitas buenos profes que te orienten, enseñen y contesten a tus dudas, no te digo más…

Dale fuerte, un abrazo.

Gracias a Depositphotos por la cesión de las imágenes.

kicad

KiCad diseña y fabrica tu primera PCB

Si alguna vez has desmontado algún equipo electrónico, debes haber visto en su interior una tarjeta que soporta una gran cantidad de componentes. Se … [+ info...]

Fuentes-de-alimentación

Fuente de alimentación

Creo que estarás de acuerdo conmigo si digo que, para la subsistencia de un ser humano, después del aire, lo más importante es el agua y la comida; es … [+ info...]

Motor-AC-asincrono-sincrono-monofasico-trifasico

El mundo del Motor AC

Es incomprensible que uno de los mejores inventos del ser humano pase casi completamente desapercibido. Y es que si le preguntas a muchas personas si … [+ info...]

Copyright © 2023 · Programar Fácil · Aviso legal

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y experiencia de usuario. Si continua navegando, consideramos que acepta su uso.Aceptar Política de privacidad y cookies
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR