ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

¿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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en 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:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

Descripción del proyecto

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

2. Una nueva ventana se abrirá. Elegir FAT32Prensa comenzar para inicializar el proceso de formateo y siga las instrucciones que aparecen en pantalla.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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() {
 
}

Ver código sin formato

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:

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

Después de unos segundos, el código debería cargarse correctamente en su tablero.

Representación esquemática

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

Ensamble todas las piezas como se muestra en el siguiente diagrama esquemático.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)
Gracias a David Graf por compartir el diagrama esquemático de este proyecto

Si lo deseas, puedes seguir el diagrama de Fritzing.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en 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ó.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

Aquí hay un ejemplo:

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

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.

ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)

[eBook] Crea proyectos CAM ESP32 con Arduino IDE

Aprenda a programar y crear proyectos con ESP32-CAM usando Arduino IDE 17 DESCARGAR «

Aprenda a programar y crear proyectos con ESP32-CAM usando Arduino IDE 17 DESCARGAR «

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:

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

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:

  1. ESP32-CAM Video Streaming y Reconocimiento Facial con Arduino IDE
  2. ESP32-CAM Servidor Web de Video Streaming (Home Assistant, Node-RED, etc…)
  3. ESP32-CAM Tomar Foto y Guardar en Tarjeta MicroSD
  4. Tomar Foto, Guardar en SPIFFS y Mostrar en Servidor Web
  5. Guía de Resolución de Problemas de ESP32-CAM

Preguntas Frecuentes:

  1. ¿Cuáles son las partes requeridas para este proyecto?
  2. ¿Cómo se formatea la tarjeta microSD?
  3. ¿Cómo se programa el ESP32-CAM con el código de captura de fotos?
  4. ¿Qué hacer si se encuentran errores durante la carga del código en el ESP32-CAM?
  5. ¿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:

  1. El ESP32-CAM está en modo de sueño profundo con despertar externo habilitado.
  2. Cuando se detecta movimiento, el sensor de movimiento PIR envía una señal para despertar al ESP32-CAM.
  3. El ESP32-CAM toma una foto y la guarda en la tarjeta microSD.
  4. 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!

4 comentarios en «ESP32-CAM Detector de movimiento PIR con grabación de fotografías (guarda en tarjeta microSD)»

Deja un comentario