¿Estás buscando una solución económica y efectiva para detectar movimiento y capturar imágenes en tiempo real? ¡El ESP32-CAM con detector de movimiento PIR y capacidad de grabación en tarjeta microSD es la respuesta a tus necesidades! En este artículo, te mostraremos cómo implementar este innovador sistema para garantizar la seguridad y vigilancia de tu hogar o negocio. ¡Sigue leyendo para descubrir todos los detalles!
En este proyecto, haremos un sensor de movimiento con captura de fotografías utilizando una CAM ESP32. Cuando su sensor PIR detecta movimiento, se activa, toma una foto y la guarda en la tarjeta microSD.
Este proyecto es muy similar a uno anterior, pero debido a numerosas solicitudes agregamos un sensor de movimiento PIR al circuito. Entonces, cuando se detecta movimiento, se captura una imagen y se guarda en la tarjeta microSD.
Otros proyectos y tutoriales de ESP32 CAM:
- Streaming de vídeo ESP32 CAM y reconocimiento facial con Arduino IDE
- Servidor web de transmisión de video ESP32-CAM (Home Assistant, Node-RED, etc.)
- ESP32-CAM Tomar foto y guardar en tarjeta MicroSD
- Toma una foto, guárdala en SPIFFS y muéstrala en el servidor web
- Guía de solución de problemas de ESP32-CAM
Tenemos un proyecto similar con una Raspberry Pi y un módulo de cámara:
- Detector de movimiento Raspberry Pi con grabación de fotografías
Mira el vídeotutorial
Puede ver el video tutorial o seguir leyendo para obtener instrucciones completas del proyecto.
Piezas requeridas
Para este proyecto necesitarás las siguientes piezas:
- Cámara ESP32 con OV2640 – leer Las mejores placas de desarrollo CAM ESP32
- Tarjeta micro SD
- Sensor de movimiento PIR
- transistores 2n3904
- programador FTDI
- Cable puente hembra a hembra
- Fuente de alimentación de 5V para ESP32-CAM o banco de energía (opcional)
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Descripción del proyecto
A continuación se ofrece una descripción general rápida de cómo funciona el proyecto.
- El ESP32-CAM está en modo de suspensión profunda con alarma externa activada.
- Cuando se detecta movimiento, el sensor de movimiento PIR envía una señal para activar el ESP32.
- El ESP32-CAM toma una foto y la guarda en la tarjeta microSD.
- Volverá al modo de suspensión profunda hasta que se reciba una nueva señal del sensor de movimiento PIR.
Recomendaciones de literatura: ESP32 Deep Sleep con Arduino IDE y fuentes de activación
Formatear la tarjeta MicroSD
Lo primero que te recomendamos hacer es formatear tu tarjeta microSD. Puede utilizar Windows Format Tool u otro software de formateo de microSD.
1. Inserta la tarjeta microSD en tu computadora. Ir a Mi computadora y haga clic derecho en la tarjeta SD. Elegir formato como se muestra en la siguiente figura.
2. Una nueva ventana se abrirá. Elegir FAT32Prensa comenzar para inicializar el proceso de formateo y siga las instrucciones que aparecen en pantalla.
Nota: Según las especificaciones del producto, el ESP32-CAM sólo debería admitir tarjetas SD de 4 GB. Sin embargo, lo probamos con una tarjeta SD de 16 GB y funciona bien.
Instalación del complemento ESP32
Programamos la placa ESP32 con Arduino IDE. Por lo tanto, debe tener instalado el IDE de Arduino y el complemento ESP32:
- Instalación de la placa ESP32 en el IDE Arduino (Windows, Mac OS X, Linux)
ESP32-CAM Tomar foto con boceto PIR
Copie el siguiente código en su IDE de Arduino.
/*********
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp32-cam-pir-motion-detector-photo-capture/
IMPORTANT!!!
- Select Board "AI Thinker ESP32-CAM"
- GPIO 0 must be connected to GND to upload a sketch
- After connecting GPIO 0 to GND, press the ESP32-CAM on-board RESET button to put your board in flashing mode
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*********/
#include "esp_camera.h"
#include "Arduino.h"
#include "FS.h" // SD Card ESP32
#include "SD_MMC.h" // SD Card ESP32
#include "soc/soc.h" // Disable brownour problems
#include "soc/rtc_cntl_reg.h" // Disable brownour problems
#include "driver/rtc_io.h"
#include <EEPROM.h> // read and write from flash memory
// define the number of bytes you want to access
#define EEPROM_SIZE 1
RTC_DATA_ATTR int bootCount = 0;
// Pin definition for CAMERA_MODEL_AI_THINKER
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
int pictureNumber = 0;
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
Serial.begin(115200);
Serial.setDebugOutput(true);
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
pinMode(4, INPUT);
digitalWrite(4, LOW);
rtc_gpio_hold_dis(GPIO_NUM_4);
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
// Init Camera
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
Serial.println("Starting SD Card");
delay(500);
if(!SD_MMC.begin()){
Serial.println("SD Card Mount Failed");
//return;
}
uint8_t cardType = SD_MMC.cardType();
if(cardType == CARD_NONE){
Serial.println("No SD Card attached");
return;
}
camera_fb_t * fb = NULL;
// Take Picture with Camera
fb = esp_camera_fb_get();
if(!fb) {
Serial.println("Camera capture failed");
return;
}
// initialize EEPROM with predefined size
EEPROM.begin(EEPROM_SIZE);
pictureNumber = EEPROM.read(0) + 1;
// Path where new picture will be saved in SD Card
String path = "/picture" + String(pictureNumber) +".jpg";
fs::FS &fs = SD_MMC;
Serial.printf("Picture file name: %sn", path.c_str());
File file = fs.open(path.c_str(), FILE_WRITE);
if(!file){
Serial.println("Failed to open file in writing mode");
}
else {
file.write(fb->buf, fb->len); // payload (image), payload length
Serial.printf("Saved file to path: %sn", path.c_str());
EEPROM.write(0, pictureNumber);
EEPROM.commit();
}
file.close();
esp_camera_fb_return(fb);
delay(1000);
// Turns off the ESP32-CAM white on-board LED (flash) connected to GPIO 4
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
rtc_gpio_hold_en(GPIO_NUM_4);
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 0);
Serial.println("Going to sleep now");
delay(1000);
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop() {
}
Este código es muy similar a uno de nuestros proyectos CAM ESP32 anteriores, pero permite la activación externa a través de GPIO 13.
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13,0);
Para obtener más información sobre el código, vaya al siguiente proyecto:
- ESP32-CAM Tomar foto y guardar en tarjeta MicroSD
Código de carga de cámara ESP32
Para cargar código a la placa CAM ESP32, conéctelo a través de un programador FTDI. Siga el siguiente diagrama esquemático:
Muchos programadores FTDI tienen un puente que le permite seleccionar 3,3 V o 5 V. Asegúrese de que el puente esté en el lugar correcto para seleccionar 5V.
Importante: GPIO 0 debe estar conectado a Dimensiones para que puedas subir el código.
Leva ESP32 | programador FTDI |
Dimensiones | Dimensiones |
5V | VCC (5V) |
U0R | Texas |
U0T | RX |
GPIO 0 | Dimensiones |
Para cargar el código, siga los siguientes pasos:
1) Ir a Herramientas > tablón y elige Pensador de IA ESP32-CAM.
2) Ir a Herramientas > Puerto y seleccione el puerto COM al que está conectado el ESP32.
3) Luego haga clic en el botón «Cargar» para cargar el código.
4) Cuando vea estos puntos en la ventana de depuración como se muestra a continuación, presione el botón RST incorporado del ESP32-CAM.
Después de unos segundos, el código debería cargarse correctamente en su tablero.
Representación esquemática
Ensamble todas las piezas como se muestra en el siguiente diagrama esquemático.
Si lo deseas, puedes seguir el diagrama de Fritzing.
Para evitar problemas de carga, recomendamos ensamblar el circuito solo después de cargar el código.
demostración
Después de cargar el código y ensamblar el circuito, inserte una tarjeta microSD formateada y encienda su circuito; puede usar un cargador portátil para esto, por ejemplo.
Luego presione el botón de reinicio (RST) y debería funcionar. Cuando detecta movimiento, enciende el flash, toma una foto y la guarda en la tarjeta microSD.
Experimente con este circuito varias veces para asegurarse de que funcione. Luego inserte la tarjeta microSD en su computadora para ver las fotos que tomó.
Aquí hay un ejemplo:
Ahora puedes completar el proyecto como desees. Tu también puedes cámara ficticia e implemente su ESP32 CAM con el sensor de movimiento PIR, o puede construir su propio estuche.
También puedes aplicar los conceptos aprendidos en este tutorial a tus propios proyectos.
Solución de problemas
Si recibe alguno de los siguientes errores, consulte nuestra Guía de solución de problemas de ESP32-CAM: solución de los problemas más comunes
- No se pudo conectar a ESP32: tiempo de espera de espera para el encabezado del paquete
- La inicialización de la cámara falló con el error 0x20001 o similar
- Detector de caída de tensión o error de meditación del gurú
- Error de boceto demasiado grande: se seleccionó un esquema de partición incorrecto
- La tarjeta en COMX no está disponible – Puerto COM no seleccionado
- Error de Psram: el servicio GPIO ISR no está instalado
- Señal WiFi débil
- No hay dirección IP en el monitor serie Arduino IDE
- No se puede abrir el servidor web
- La imagen está retrasada/muestra una latencia alta.
Envolver
Esperamos que hayas disfrutado de este proyecto. Puedes encontrar más proyectos ESP32-CAM aquí Suscríbete a nuestro boletínSi aún no tienes una CAM ESP32, puedes Consigue uno por alrededor de $6.
Si desea ver un proyecto que utiliza ESP32 CAM o desea compartir su proyecto con nosotros, deje un comentario en la sección de comentarios a continuación.
Tenemos otros proyectos y tutoriales de ESP32 CAM que te pueden gustar:
- La mejor placa de desarrollo de cámara ESP32
- Crear proyectos ESP32-CAM (libro electrónico)
- Lea todos nuestros proyectos, tutoriales y guías de ESP32 CAM
Gracias por leer.
ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)
En este proyecto, vamos a crear un detector de movimiento con captura de fotos utilizando un ESP32-CAM. Cuando su sensor PIR detecta movimiento, se despierta, toma una foto y la guarda en la tarjeta microSD.
Este proyecto es muy similar a uno anterior, pero después de tantas solicitudes, agregamos un sensor de movimiento PIR al circuito. Entonces, cuando se detecta movimiento, se toma una foto y se guarda en la tarjeta microSD.
Otros proyectos y tutoriales de ESP32-CAM:
- ESP32-CAM Video Streaming y Reconocimiento Facial con Arduino IDE
- ESP32-CAM Servidor Web de Video Streaming (Home Assistant, Node-RED, etc…)
- ESP32-CAM Tomar Foto y Guardar en Tarjeta MicroSD
- Tomar Foto, Guardar en SPIFFS y Mostrar en Servidor Web
- Guía de Resolución de Problemas de ESP32-CAM
Preguntas Frecuentes:
- ¿Cuáles son las partes requeridas para este proyecto?
- ¿Cómo se formatea la tarjeta microSD?
- ¿Cómo se programa el ESP32-CAM con el código de captura de fotos?
- ¿Qué hacer si se encuentran errores durante la carga del código en el ESP32-CAM?
- ¿Cómo se ensambla el circuito según el diagrama esquemático proporcionado?
Resumen del Proyecto:
Aquí hay un resumen rápido de cómo funciona el proyecto:
- El ESP32-CAM está en modo de sueño profundo con despertar externo habilitado.
- Cuando se detecta movimiento, el sensor de movimiento PIR envía una señal para despertar al ESP32-CAM.
- El ESP32-CAM toma una foto y la guarda en la tarjeta microSD.
- Vuelve al modo de sueño profundo hasta que recibe una nueva señal del sensor de movimiento PIR.
Formateo de la Tarjeta microSD:
Lo primero que recomendamos hacer es formatear su tarjeta microSD. Puede usar la herramienta de formato de Windows u otro software de formateo de microSD.
Instalación del Complemento ESP32:
Para programar la placa ESP32, necesitará el IDE de Arduino instalado, así como el complemento ESP32. Puede seguir las instrucciones para instalar el complemento en nuestra guía proporcionada en el enlace.
Código ESP32-CAM para Captura de Fotos:
Puede copiar y pegar el código proporcionado en su IDE de Arduino para programar su ESP32-CAM para la captura de fotos con el sensor PIR.
Problemas Comunes y Resolución de Errores:
Si experimenta errores durante la carga del código o al ejecutar el proyecto, consulte nuestra guía de resolución de problemas para obtener ayuda con los problemas más comunes y sus soluciones.
Conclusión:
Esperamos que haya disfrutado de este proyecto. Para más proyectos de ESP32-CAM, puede suscribirse a nuestra newsletter y explorar nuestros diversos tutoriales y guías disponibles en nuestro sitio web.
¡Gracias por leer y esperamos ver sus propios proyectos con ESP32-CAM en el futuro!
Me parece una idea súper útil y práctica para tener mayor seguridad en casa. Definitivamente voy a intentar hacerlo. ¡Gracias por compartir esta información!
¡Genial! Me encantaría hacer uno para mantener mi casa segura.
Qué interesante! Quiero probar este proyecto en mi casa.
¡Esto es justo lo que necesito para mi hogar! Gracias por el artículo, definitivamente lo intentaré hacer. 📸🏠