Ejemplo de desarrollo del proyecto ESP32 Cam en Ubuntu

Índice

ESP32-CAM camera development board

Acerca de ESP32-CAM

ESP32-CAM es un módulo de cámara de pequeño tamaño lanzado por Ai-Thinker Co., Ltd, que puede funcionar de forma independiente como el sistema más pequeño, con un tamaño de 27*40,5*4,5 mm y una corriente mínima en modo de suspensión profunda de 6 mA.

Características del ESP32 CAM

  • Interfaz de cámara (hasta 24 MP)
  • Conectividad Wi-Fi y Bluetooth
  • Procesador de doble núcleo ESP32-D0WDQ6
  • 520 KB de SRAM
  • Memoria flash de 4 MB
  • Módulo de cámara OV2640 de 2 MP
  • Compatible con formatos JPEG y BMP
  • Interfaz USB tipo C
  • Conector para batería LiPo
  • CPU de 32 bits, hasta 240 MHz
  • Transceptor Wi-Fi 802.11b/g/n HT40 integrado
  • Bluetooth de modo dual integrado (clásico y BLE)
  • Antena PCB integrada
  • PSRAM integrada de 8 MB
  • Cámara integrada
  • Conector externo para cámara
  • 5 GPIO programables
  • 2 UART, 2 SPI, I2C, I2S, IRDA, PWM, GPIO

Pinout de ESP32 CAM

ESP32 CAM Pinout
ESP32 CAM Pinout

ESP32-CAM tiene tres pines GND y dos pines para alimentación: 3,3 V o 5 V.

GPIO 1 y GPIO 3 son pines serie. Necesitas estos pines para cargar código en tu placa. Además, GPIO 0 desempeña un papel importante, ya que determina si el ESP32 está en modo parpadeo o no. Cuando GPIO 0 está conectado a GND, el ESP32 está en modo parpadeo.

Los siguientes pines están conectados internamente al lector de tarjetas microSD:

GPIO 14: CLK
GPIO 15: CMD
GPIO 2: Datos 0
GPIO 4: Datos 1 (también conectado al LED integrado)
GPIO 12: Datos 2
GPIO 13: Datos 3

Desarrollo del proyecto ESP32 Cam

Entorno de compilación

Hardware

  • Módulo ESP32-CAM
  • Cámara OV2640
  • Placa USB a puerto serie (USB-TTL)
  • Cable Dupont
  • Fuente de alimentación de 5 V y 2 A

El módulo ESP32-CAM se alimenta por separado, U0TXD, U0RXD y GND se conectan a la placa de puerto serie y al ordenador, y la cámara se conecta al módulo mediante un cable.

Antes de programar, es necesario conectar a tierra y restablecer el GPIO0 del módulo ESP32-CAM. Una vez completada la programación, el GPIO0 se suspende y se restablece para entrar en el modo de funcionamiento.

Entorno del sistema

ESP32 se puede desarrollar en diferentes sistemas. A continuación se ofrece una introducción al entorno de desarrollo de la versión de escritorio de Ubuntu (la versión es Ubuntu 18.04.3).

Configurar el servidor de descargas

Ejecute «Software y actualizaciones», haga clic en el cuadro desplegable «Descargar desde» en la pestaña «Software de Ubuntu», seleccione «Otro…», busque «China» y seleccione cualquier servidor, haga clic en «Elegir servidor» y, a continuación, introduzca la contraseña para confirmar. Cuando se cierre, le pedirá que actualice la información; haga clic en «Recargar» para actualizar.

ESP32 Cam system environment: choose a download server
ESP32 Cam system environment: choose a download server
Instalar software
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
Instalar el entorno dependiente
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

Código del proyecto y entorno de desarrollo

elemento de tracción

Extraiga el proyecto y los submódulos al mismo tiempo:

git clone --recurse-submodules https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git

Si la extracción se interrumpe, debes entrar en el directorio del proyecto para volver a extraer el submódulo:

cd Ai-Thinker-Open_ESP32-CAMERA_LAN/
git submodule update --init --recursive
Marco de desarrollo

Una vez descargado el proyecto, verás que hay un directorio esp-idf en el directorio del proyecto. esp-idf (Espressif IoT Development Framework) es el marco de desarrollo esp. El entorno de desarrollo del proyecto se crea a través de esp-idf. La versión idf de este proyecto es esp-idf-v4.0.

Establecer la ruta IDF_PATH

Edita el archivo de configuración .bashrc:

cd esp-idf/
vim ~/.bashrc


Utilice el comando vim para abrir .bashrc, utilice el teclado para mover el cursor al final del archivo, pulse a para introducir, pulse Intro al final para ir a una línea en blanco e introduzca el contenido correspondiente según el siguiente formato para establecer la variable IDF_PATH:

# export IDF_PATH=<esp-idf absolute path>, the example is as follows
export IDF_PATH=/home/user/Desktop/esp32/Ai-Thinker-Open_ESP32-CAMERA_LAN/esp-idf


Una vez completada la entrada, pulse esc para cancelar la edición, :wq para guardar y salir, y ejecute el siguiente comando para que la modificación surta efecto inmediatamente:

source ~/.bashrc


Compruebe si la variable es válida:

echo $IDF_PATH


Si la ruta impresa coincide con la configuración, pasa al siguiente paso; de lo contrario, debes volver a realizar la operación.

Instalar herramientas de desarrollo

Ejecute el script install.sh en el directorio esp-idf:

./install.sh

A continuación, el terminal mostrará la información de descarga. Después de imprimir «¡Todo listo!», la instalación habrá finalizado. En ese momento, ejecute el script export.sh para configurar la variable de entorno:

. ./export.sh

Tenga en cuenta que hay un espacio después del primer «.», que debe ejecutarse cada vez que abra el terminal para el desarrollo y la depuración del proyecto.

Tras la ejecución del script, se muestra «¡Hecho!» para indicar que se ha realizado correctamente y, a continuación, se puede configurar, compilar y descargar el proyecto.

Configurar, compilar y descargar

Configuración del proyecto

Introduzca el directorio del proyecto de demostración «Ai-Thinker-Open_ESP32-CAMERA_LAN/examples/single_chip/camera_web_server».

cd ../examples/single_chip/camera_web_server/

A continuación, comenzamos a configurar el proyecto:

make menuconfig

El mensaje «recipe for target 'mconf.o' failed» (la receta para el objetivo «mconf.o» ha fallado) es un problema de dependencia. Introduzca sudo apt-get install libncurses5-dev para instalar las dependencias pertinentes y vuelva a intentarlo.

La interfaz de configuración es la siguiente:

ESP32 Cam Project - Espressif IoT Development Framework Configuration
ESP32 Cam Project - Espressif IoT Development Framework Configuration

Utilice las teclas de flecha y la tecla Intro para mover el cursor y operar, acceda a la interfaz «Serial flasher config» y consulte la siguiente figura para realizar la configuración. Aquí, el puerto serie está configurado como «/dev/ttyUSB0» y debe configurarse para conectarse al módulo ESP32-CAM durante el funcionamiento del puerto serie.

ESP32 Cam Project - Serial Flasher Config
ESP32 Cam Project - Serial Flasher Config

Acceda a la interfaz «Camera Web Server»->«Camera Pins»->«Select Camera Pinout» y seleccione «ESP32-CAM by AI-Thinker».

ESP32 Cam Project - Select Camera Pinout

Acceda a la interfaz «Camera Web Server»->«Wifi Settings» (Configuración de wifi) para configurar el modo wifi, «Wifi STA SSID» y «Wifi STA Password» (Contraseña de wifi STA) y «Wifi AP SSID» y «Wifi AP Password» (Contraseña de wifi AP) para configurar uno de ellos.

(Wifi STA significa modo estación, ESP32-CAM se conecta a la red wifi de otros dispositivos; Wifi AP significa modo AP, el ordenador o el teléfono móvil se conecta al punto de acceso wifi abierto por ESP32-CAM).

Aquí se utiliza el modo Wifi AP, y la «Dirección IP Wifi AP» que aparece a continuación configura la dirección IP del módulo en modo Wifi AP.

ESP32 Cam Project - WIFI Settings

Una vez completada la configuración, utilice las teclas izquierda y derecha para mover el cursor inferior a «<Guardar>» y pulse Intro para guardar, y luego muévase a «<Salir>» para salir de la configuración.

Compilar y descargar

compilar:

make

descargar:

make flash

Cabe señalar que el módulo GPIO0 debe conectarse a tierra y reiniciarse antes de la programación.

Al descargar make flash, se utiliza de forma predeterminada el puerto «/dev/ttyUSB0» configurado anteriormente, y se pueden especificar otros puertos mediante el parámetro -p: make flash -p [PORT]

Si aparece un mensaje indicando que el error al abrir el puerto serie puede deberse a un problema de permisos, puede abrir todos los permisos del puerto serie con sudo chmod -R 777 <puerto>, por ejemplo, sudo chmod -R 777 /dev/ttyUSB0, pero todos los permisos del puerto serie abierto dejarán de ser válidos una vez que se desconecte el puerto serie. Además, el usuario actual se puede añadir al grupo dialout sudo usermod -a -G dialout <nombre de usuario>

Recibir información de impresión del puerto serie:

make monitor

Cabe señalar que el módulo GPIO0 debe suspenderse para encender o reiniciar cuando esté funcionando.

Además, también puede utilizar el asistente del puerto serie para ver la información de impresión del módulo.

Tomar fotos y grabar vídeos

Después de descargar el firmware de demostración, el módulo ESP32-CAM se enciende y comienza a funcionar. Conecte el ordenador o el teléfono móvil a la red en la que se encuentra el módulo y acceda a la dirección del módulo en el navegador.

En el modo Estación, la dirección del módulo es la dirección IP asignada por el dispositivo de punto de acceso wifi al módulo; en el modo AP, es la dirección establecida por «Dirección IP del punto de acceso wifi».

En la página web del módulo, haga clic en el botón «Get Still» (Obtener imagen fija) situado debajo de la barra de operaciones de la izquierda para tomar una foto, y en el botón «Start Stream» (Iniciar transmisión) para grabar un vídeo. Después de tomar una foto o grabar un vídeo, la imagen se mostrará en la página web.

Vea la interfaz de funcionamiento del módulo en el teléfono móvil de la siguiente manera, puede hacer clic en «Save» (Guardar) en la esquina superior derecha de la imagen para guardar la imagen.

ESP32-CAM module taking photogram

Suscríbete

Únete a nuestra lista de suscriptores para recibir actualizaciones mensuales del blog, noticias de tecnología y estudios de caso. Nunca enviaremos spam y puedes cancelar tu suscripción en cualquier momento.

Acerca del Autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

¿Necesitas ayuda?

Scroll al inicio

Cotización