Algunas partes de este sitio web aún no están disponibles en su idioma. Estamos trabajando para solucionar esto y nos disculpamos por cualquier inconveniente.
Tutorial ESP32 42/55 - Tomando foto con cámara guardada en Micro SD CAM-1 | Kit ESP32 de SunFounder
En este tutorial, utilizaremos el microcontrolador ESP32 junto con su placa de expansión de SunFounder para capturar fotos usando una cámara y guardarlas directamente en una tarjeta micro SD. Este proyecto utiliza las capacidades integradas del ESP32, incluyendo Wi-Fi y Bluetooth, para crear un dispositivo compacto de captura de fotos. Al final de este tutorial, tendrás una configuración funcional que puede tomar y almacenar imágenes, las cuales se pueden acceder posteriormente en una computadora.
extension_bopard_camera
Para aquellos que son nuevos en el ecosistema ESP32, este kit proporciona una plataforma versátil para varios proyectos, incluido este. La cámara utilizada en este proyecto es la OV2640, que ofrece una resolución de 1600x1200 píxeles. Aunque puede que no iguale la calidad de los teléfonos inteligentes modernos, es suficiente para tareas básicas de captura de imágenes. Para aclarar cualquier paso, asegúrate de revisar el video que acompaña a este tutorial (en el video a las 00:00).
20240103_163227858_iOS
Hardware explicado
Los componentes principales de este proyecto incluyen el microcontrolador ESP32, el módulo de cámara (OV2640) y una tarjeta micro SD para almacenamiento. El ESP32 es un microcontrolador potente con capacidades de Wi-Fi y Bluetooth integradas, lo que lo hace ideal para aplicaciones de IoT. El módulo de cámara captura imágenes, que luego son procesadas por el ESP32.
esp32-41-configuración-3
La tarjeta micro SD actúa como un medio de almacenamiento para las imágenes capturadas. En esta configuración, el ESP32 se comunica con el módulo de la cámara utilizando pines GPIO específicos, y las imágenes se guardan en formato JPEG en la tarjeta SD. Esto permite una fácil recuperación y visualización de las fotos más tarde.
Asegúrate de que la cámara esté correctamente orientada al insertarla en la placa ESP32.
Utiliza una tarjeta micro SD con una capacidad de 32 GB o menos para evitar problemas de compatibilidad.
Conecta GPIO 0 a GND para el modo de programación.
Presta atención a la fuente de alimentación para evitar problemas de bajón de tensión.
Mantén la cámara firme al tomar fotos para evitar imágenes borrosas.
Instrucciones de cableado
Para cablear el módulo de cámara ESP32, primero asegúrate de que el ESP32 esté apagado. Conecta el módulo de tarjeta micro SD al ESP32 utilizando los siguientes pines: conecta elCSpin de la tarjeta SD al ESP32GPIO 5,MOSIaGPIO 23,MISOaGPIO 19, ySCKaGPIO 18A continuación, conecta los pines del módulo de la cámara de la siguiente manera:PWDNaGPIO 32,XCLKaGPIO 0,SIODaGPIO 26, andSIOCaGPIO 27. Los pines de datos de píxelY2aY9debe estar conectado aGPIO 5a travésGPIO 39según lo definido en su código.
Asegúrate de conectar los pines de tierra y de alimentación adecuadamente. El ESP32 puede ser alimentado por la batería incluida en el kit. Después de realizar la conexión, asegúrate de que las conexiones estén seguras antes de encender el dispositivo. Si sigues las instrucciones al pie de la letra, deberías ver que la cámara se inicializa correctamente cuando subas el código.
Ejemplos de código y guía paso a paso
esp32-41-configuración-2esp32-41-configuración-1
En el código, comenzamos incluyendo las bibliotecas necesarias y definiendo las configuraciones de pines de la cámara. La variablepictureNumberse inicializa para llevar un registro del número de fotos tomadas.
int pictureNumber = 0;
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // Disable brownout detector
Serial.begin(115200);
camera_config_t config;
// Configuration settings for the camera
config.ledc_channel = LEDC_CHANNEL_0;
// Additional camera settings...
}
La función de configuración inicializa la comunicación serial y configura los ajustes de la cámara. La configuración incluye parámetros comoledc_channel,pin_d0, yxclk_freq_hzpara un rendimiento óptimo.
A continuación, manejamos el proceso de captura de imágenes utilizando un bucle para tomar varias fotos. Los datos de la imagen se guardan en la tarjeta SD con un nombre de archivo basado en elpictureNumber.
for (int shoot = 0; shoot < 5; shoot++) {
camera_fb_t *fb = esp_camera_fb_get(); // Take Picture
String path = "/picture" + String(pictureNumber) + ".jpg"; // File path
File file = fs.open(path.c_str(), FILE_WRITE); // Open file to write
// Write image data to file
file.write(fb->buf, fb->len);
// Update picture number in EEPROM
EEPROM.write(0, pictureNumber);
}
Este bucle captura hasta cinco imágenes, donde cada imagen se guarda con un nombre de archivo único. El uso de EEPROM permite que el programa recuerde el último número de imagen, asegurando que cada nueva imagen tenga un identificador único.
Demostración / Qué Esperar
Cuando ejecute el código, el ESP32 inicializará la cámara y la tarjeta SD. Después de presionar el botón de reinicio en el ESP32, tomará una serie de fotos, que se numerarán secuencialmente del 0 al 255 según el valor de la EEPROM. Después de capturar las imágenes, puede quitar la tarjeta micro SD y ver las fotos en su computadora.
Las trampas comunes incluyen asegurarse de que la tarjeta micro SD esté correctamente formateada e insertada, así como mantener una posición estable de la cámara para evitar imágenes borrosas. Si encuentras problemas con la cámara que no captura imágenes, verifica nuevamente el cableado y las configuraciones establecidas en el código (en el video a las 06:45).
Tiempos de video
00:00 Comienzo
1:39 Introducción
5:19 Código de la cámara ESP32 explicado
11:10 Seleccionando la placa ESP32 y el puerto COM en Arduino IDE
12:52 Tomando fotos en interiores y exteriores de prueba