        <style>
            #donation_buttons td{
                border:medium none;
                background: inherit !important;
            }
            #donation_buttons table{               
                border:medium none;
                margin: auto;
                width: auto;
            }
        </style>
        {"id":7488,"date":"2023-10-22T20:39:55","date_gmt":"2023-10-22T20:39:55","guid":{"rendered":"https:\/\/rogerbit.com\/wprb\/?p=7488"},"modified":"2023-10-22T20:39:55","modified_gmt":"2023-10-22T20:39:55","slug":"captura-con-esp32","status":"publish","type":"post","link":"https:\/\/rogerbit.com\/wprb\/2023\/10\/captura-con-esp32\/","title":{"rendered":"Captura de fotos con esp32-cam, tarjeta SD con detecci\u00f3n de movimiento"},"content":{"rendered":"<p><iframe loading=\"lazy\" title=\"Captura de fotos con esp32 cam y detecci\u00f3n de movimiento\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/9n92fvO8EZk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<p>En este emocionante tutorial, te mostraremos c\u00f3mo construir tu propia c\u00e1mara de seguridad utilizando una ESP32-CAM y un sensor PIR AM312 para detectar movimiento. Lo mejor de todo, \u00a1las fotos se guardar\u00e1n directamente en una tarjeta SD!<\/p>\n<hr \/>\n<p style=\"text-align: left;\">Tal vez pueda interesarte proyectos en arduino, pic, rob\u00f3tica, telecomunicaciones, suscribete en\u00a0<a href=\"http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1\">http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1<\/a>\u00a0mucho videos con c\u00f3digo fuentes completos y diagramas<\/p>\n<p style=\"text-align: left;\"><div id=\"ubm-banners-rotation-n1\" data-interval=\"4000\" class=\"ubm_banners_rotation\" style=\"overflow: hidden; width: 200px; height: 150px;\"><div id=\"3_ubm_banner\" class=\"ubm_rotating_banner\"><a href=\"https:\/\/bit.ly\/3aXRDAu\" target=\"_blank\" rel=\"dofollow\"><img src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/useful_banner_manager_banners\/3-2-logo youtube.png\" width=\"100%\" height=\"100%\" alt=\"SUSCRIBETE A NUESTRO CANAL DE YOUTUBE, TUTORIALES GRATIS\" \/><\/a><\/div><\/div><\/p>\n<hr \/>\n<p>A lo largo de este video, te guiaremos a trav\u00e9s de los siguientes pasos:<\/p>\n<ol>\n<li><strong>Conexi\u00f3n de Hardware:<\/strong> Te mostraremos c\u00f3mo conectar la ESP32-CAM y el sensor PIR AM312 a tu protoboard, garantizando una correcta alimentaci\u00f3n.<\/li>\n<li><strong>Configuraci\u00f3n del Arduino IDE:<\/strong> Aprender\u00e1s a configurar el entorno de desarrollo en Arduino IDE para trabajar con la ESP32-CAM y seleccionar la tarjeta adecuada.<\/li>\n<li><strong>Programaci\u00f3n:<\/strong> Te proporcionaremos el c\u00f3digo necesario para configurar la ESP32-CAM y programarla para capturar im\u00e1genes cuando se detecte movimiento. Adem\u00e1s, mostraremos c\u00f3mo almacenar las im\u00e1genes en una tarjeta SD.<\/li>\n<li><strong>Prueba en la Vida Real:<\/strong> Ver\u00e1s en acci\u00f3n nuestro sistema de detecci\u00f3n de movimiento. Lo probaremos en un entorno real para que puedas ver c\u00f3mo funciona.<\/li>\n<li><strong>Consejos y Personalizaci\u00f3n:<\/strong> Compartiremos algunos consejos \u00fatiles y te mostraremos c\u00f3mo personalizar y ampliar este proyecto seg\u00fan tus necesidades.<\/li>\n<\/ol>\n<p>Este proyecto es perfecto para crear una c\u00e1mara de seguridad asequible y funcional para tu hogar, oficina o cualquier lugar que desees monitorear.<\/p>\n<hr \/>\n<p>Componentes electr\u00f3nicos<\/p>\n<p>Adaptador usb serial<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6544\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/51Lp3uhptQL.jpg\" sizes=\"(max-width: 364px) 100vw, 364px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/51Lp3uhptQL.jpg 483w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/51Lp3uhptQL-290x300.jpg 290w\" alt=\"\" width=\"364\" height=\"377\" \/><\/p>\n<h2 class=\"ui-pdp-description__title\">Descripci\u00f3n<\/h2>\n<p class=\"ui-pdp-description__content\">FTDI Basic Program Downloader USB to TTL FT232RL 3.3V 5V DTR<\/p>\n<p>Esta es una placa de conexi\u00f3n b\u00e1sica para el FTDI FT232RL USB a serie IC. El pinout de esta placa coincide con el cable FTDI para funcionar con placas Arduino oficiales y placas Arduino de 5V clonadas. Tambi\u00e9n se puede utilizar para aplicaciones seriales generales. La principal diferencia con esta placa es que resalta el pin DTR en lugar del pin RTS del cable FTDI. El pin DTR permite que un objetivo Arduino se reinicie autom\u00e1ticamente cuando se descarga un nuevo Sketch. Esta es una caracter\u00edstica realmente agradable y permite descargar un boceto sin tener que presionar el bot\u00f3n de reinicio. Esta placa reiniciar\u00e1 autom\u00e1ticamente cualquier placa Arduino que tenga el pin de reinicio en un conector de 6 pines.<br \/>\nEsta placa tiene LED TX y RX que hacen que sea un poco mejor usarla sobre el cable FTDI. De hecho, puede ver el tr\u00e1fico en serie en los LED para verificar si la placa est\u00e1 funcionando.<br \/>\nEsta placa fue dise\u00f1ada para disminuir el costo del desarrollo de Arduino y aumentar la facilidad de uso (\u00a1la funci\u00f3n de reinicio autom\u00e1tico es genial!). Nuestras placas Arduino Pro y LilyPads utilizan este tipo de conector.<br \/>\nUna de las caracter\u00edsticas agradables de esta placa es un puente en la parte posterior de la placa que permite que la placa se configure a 3.3 V o 5 V (tanto la salida de potencia como el nivel de E \/ S). Esta placa se env\u00eda de forma predeterminada a 5 V, pero puede cortar la traza predeterminada y agregar un puente de soldadura si necesita cambiar a 3,3 V.<\/p>\n<p class=\"ui-pdp-description__content\">CARACTER\u00cdSTICAS<\/p>\n<ul>\n<li>Dise\u00f1o de interfaz est\u00e1ndar, compatible con una variedad de Arduinos como el Pro Mini<\/li>\n<li>Chip FTDI FT232 original, rendimiento estable<\/li>\n<li>Con indicador de encendido, env\u00edo, recepci\u00f3n, indicadores LED de estado de funcionamiento<\/li>\n<li>Con opciones de suministro de nivel TTL de 3,3 V y 5 V<\/li>\n<li>M\u00f3dulo TTL de USB a serie, descargue STC SCM<\/li>\n<li>Conexi\u00f3n de puerto mini USB<\/li>\n<li>Standard interface, compliant with Arduino official controller; With power, sending, reveiving indicator, With 3.3V \/ 5V power supply; Can be used as ordinary USB to serial TTL module, download STC singlechip<\/li>\n<\/ul>\n<p>Hardware introduction<\/p>\n<ul>\n<li>Adopt FTDI company\u2019s FT232RL chip<\/li>\n<li>Lead out FT232RL chip all signal port, TTL \/ CMOS level<\/li>\n<li>RXD\/TXD send-receive communication indicator<\/li>\n<li>USB power supply, can choose 5V or 3.3V interface level (if you need other level, can provide target voltage in VCC and GND pin)<\/li>\n<\/ul>\n<hr \/>\n<p>Cables Dupont<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6545\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/dupont.jpg\" sizes=\"(max-width: 331px) 100vw, 331px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/dupont.jpg 800w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/dupont-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/dupont-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/dupont-768x768.jpg 768w\" alt=\"\" width=\"331\" height=\"331\" \/><\/p>\n<hr \/>\n<p>Esp32Cam<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6546\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/esp32cam.jpg\" sizes=\"(max-width: 460px) 100vw, 460px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/esp32cam.jpg 500w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/esp32cam-300x286.jpg 300w\" alt=\"\" width=\"460\" height=\"438\" \/><\/p>\n<h2 class=\"ui-pdp-description__title\">Descripci\u00f3n<\/h2>\n<p class=\"ui-pdp-description__content\">Esp32 Cam Camara Modulo Wifi Bt Arduino Ov2640 2mp Esp 32<\/p>\n<p>ESP32 CAM Modulo WiFi con Bluetooth y Camara OV2640 2MP, es una tarjeta de desarrollo que integra una peque\u00f1a c\u00e1mara que puede funcionar de manera independiente.<br \/>\nLa camara OV2640 de 2MP integra un sensor de imagen CMOS UXGA (1632*1232) de 1\/4 de pulgada. El peque\u00f1o tama\u00f1o del sensor y el bajo voltaje de operaci\u00f3n brindan todas las caracter\u00edsticas de una sola c\u00e1mara UXGA y un procesador de im\u00e1genes. A trav\u00e9s del control de bus SCCB, puede generar datos de imagen de 8\/10 bits de varias resoluciones, como fotograma completo, submuestreo, zoom y ventanas.<br \/>\nLa imagen UXGA de esta camara puede alcanzar hasta 15 cuadros por segundo (hasta 30 cuadros para SVGA y 60 cuadros para CIF). Los usuarios tienen un control completo sobre la calidad de la imagen, el formato de datos y la transmisi\u00f3n.<br \/>\nTodas las funciones de procesamiento de im\u00e1genes, incluida la curva gamma, el balance de blancos, el contraste, el croma, etc. se pueden programar a trav\u00e9s de la interfaz SCCB.<br \/>\nLos sensores de imagen Omni Vision utilizan una tecnolog\u00eda de sensor \u00fanica para mejorar la calidad de la imagen y reducir las im\u00e1genes en color n\u00edtidas y estables mediante la reducci\u00f3n o eliminaci\u00f3n de defectos \u00f3pticos o electr\u00f3nicos, como el ruido de patr\u00f3n fijo, manchas y flotaci\u00f3n.<\/p>\n<p>Principales Caracter\u00edsticas:<br \/>\n\u2022 Modelo: ESP32-CAM + C\u00e1mara OV2640<br \/>\n\u2022 Voltaje de Alimentaci\u00f3n ESP 32 CAM: 5V<br \/>\n\u2022 M\u00f3dulo Wi-Fi BT 802.11b\/g\/n<br \/>\n\u2022 Tipo de c\u00e1mara: OV2640 2MP<br \/>\n\u2022 El modulo ESP 32CAM tiene CPU 32 bits de doble n\u00facleo de baja potencia<br \/>\n\u2022 Frecuencia principal de hasta 240 MHz<br \/>\n\u2022 Potencia inform\u00e1tica de hasta 600 DMIPS<br \/>\n\u2022 Velocidad de reloj de hasta 160 MHz<br \/>\n\u2022 Incorpora SRAM 520Kb, 4MPSRAM externa<br \/>\n\u2022 El modulo ESP-32 CAM Soporta interfaces: UART \/ SPI \/ I2C \/ PWM \/ ADC \/ DAC<br \/>\n\u2022 El modulo ESP-32-CAM Soporta c\u00e1maras OV2640 y OV7670, Flash Incorporado<br \/>\n\u2022 El modulo ESP 32-CAM Soporta tarjetas TF micro SD (M\u00e1ximo 4 GB)<br \/>\n\u2022 El modulo ESP-32CAM Soporta la carga de imagen WiFi<br \/>\n\u2022 Compatible con modos de operaci\u00f3n STA \/ AP \/ STA+AP<br \/>\n\u2022 Con antena PCB<br \/>\n\u2022 El modulo ESP32CAM integra conectores u.FL y FPC<\/p>\n<p>Features:<br \/>\n\u2013 Ultra-small 802.11b\/g\/n Wi-Fi + BT\/BLE SoC module<br \/>\n\u2013 Low-power dual-core 32-bit CPU for application processors<br \/>\n\u2013 Up to 240MHz, up to 600 DMIPS<br \/>\n\u2013 Built-in 520 KB SRAM, external 4M PSRAM<br \/>\n\u2013 Supports interfaces such as UART\/SPI\/I2C\/PWM\/ADC\/DAC<br \/>\n\u2013 Support OV2640 and OV7670 cameras with built-in flash<br \/>\n\u2013 Support for images WiFI upload<br \/>\n-Support TF card<br \/>\n\u2013 Support multiple sleep modes<br \/>\n\u2013 Embedded Lwip and FreeRTOS<br \/>\n\u2013 Support STA\/AP\/STA+AP working mode<br \/>\n\u2013 Support Smart Config\/AirKiss One-click distribution network<br \/>\n\u2013 Support for serial local upgrade and remote firmware upgrade (FOTA)<br \/>\n\u2013 Support secondary development<\/p>\n<p>Product Specifications:<br \/>\nModule model: ESP32-CAM<br \/>\nPackage: DIP-16<br \/>\nSize: 27*40.5*4.5(\u00b10.2)mm<br \/>\nSPI Flash: default 32Mbit<br \/>\nRAM: internal520KB+external 4M PSRAM<br \/>\nbluetooth: bluetooth4.2BR\/EDR and BLE standards<br \/>\nWi-Fi: 802.11 b\/g\/n\/e\/i<br \/>\nSupport interface: UART, SPI, I2C, PWM<br \/>\nSupport TF card: Maximum support 4G<br \/>\nIO port: 9<br \/>\nSerial port rate: default 115200 bps<br \/>\nImage output format: JPEG (only supported by OV2640), BMP, GRAYSCALE<br \/>\nSpectrum range: 2412 ~ 2484MHz<br \/>\nAntenna form: onboard PCB antenna , gain 2dBi<br \/>\nTransmit power: 802.11b: 17\u00b12 dBm (@11Mbps)<br \/>\n802.11g: 14\u00b12 dBm (@54Mbps)<br \/>\n802.11n: 13\u00b12 dBm (@MCS7)<br \/>\nReceiving sensitivity: CCK, 1 Mbps : -90dBm<br \/>\nCCK, 11 Mbps: -85dBm<br \/>\n6 Mbps (1\/2 BPSK): -88dBm<br \/>\n54 Mbps (3\/4 64-QAM): -70dBm<br \/>\nMCS7 (65 Mbps, 72.2 Mbps): -67dBm<br \/>\nPower consumption Turn off the flash: 180mA@5V<br \/>\nTurn on the flash and adjust the brightness to the maximum: 310mA@5V<br \/>\nDeep-sleep: The lowest power consumption can reach 6mA@5V<br \/>\nModerm-sleep: up to 20mA@5V<br \/>\nLight-sleep: up to 6.7mA@5V<br \/>\nSecurity WPA\/WPA2\/WPA2-Enterprise\/WPS<br \/>\nPower supply range: 5V<br \/>\nOperating temperature: -20 \u00b0C ~ 85 \u00b0C<br \/>\nStorage environment: -40 \u00b0C ~ 90 \u00b0C, &lt; 90%RH<\/p>\n<hr \/>\n<p><strong>Un Jumper<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6548\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/jumper.jpg\" sizes=\"(max-width: 145px) 100vw, 145px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/jumper.jpg 500w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/jumper-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/jumper-150x150.jpg 150w\" alt=\"\" width=\"145\" height=\"145\" \/><\/p>\n<hr \/>\n<p>Pines Hembra<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6550\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pin_hembra.jpg\" sizes=\"(max-width: 252px) 100vw, 252px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pin_hembra.jpg 536w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pin_hembra-283x300.jpg 283w\" alt=\"\" width=\"252\" height=\"267\" \/><\/p>\n<hr \/>\n<p>Pines macho<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6551\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho-1024x1024.jpg\" sizes=\"(max-width: 279px) 100vw, 279px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho-1024x1024.jpg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho-768x768.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho-820x820.jpg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/07\/pines_macho.jpg 1200w\" alt=\"\" width=\"279\" height=\"279\" \/><\/p>\n<hr \/>\n<h4><strong>AM312 Mini Sensor de Movimiento PIR 12V DC<\/strong><\/h4>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7446 size-thumbnail\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/08\/pir-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" \/><\/p>\n<ul>\n<li>Tipo: Mini Sensor PIR<\/li>\n<li>Modelo: AM312<\/li>\n<li>Voltaje de entrada: 2.7V a 12V DC<\/li>\n<li>Consumo de energ\u00eda est\u00e1tica: &lt; 0.1mA<\/li>\n<li>Voltaje de salida VOUT: 3.3V (Activado) \/ 0V (No activado)<\/li>\n<li>Rango de detecci\u00f3n: \u2264 \u00c1ngulo c\u00f3nico de 100 grados<\/li>\n<li>Distancia de detecci\u00f3n: \u00a03\u00a0 a 5 Metros Apr\u00f3x.<\/li>\n<li>Tiempo de Retardo \/\u00a0 Bloqueo: 2 segundos<\/li>\n<li>Modo de disparo: Repetible<\/li>\n<li>Dimensiones: 10.5mm x 8.2mm<\/li>\n<li>Tama\u00f1o de lente: 11.8 mm (Di\u00e1metro)<\/li>\n<li>Peso: 2g<\/li>\n<\/ul>\n<p><strong>Pines:<\/strong><\/p>\n<ul>\n<li>VCC: Terminal (+) de fuente de alimentaci\u00f3n<\/li>\n<li>GND: Terminal (-) de fuente de alimentaci\u00f3n<\/li>\n<li>VOUT: Salida Digital<\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7447\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/08\/pinoutam312.png\" sizes=\"(max-width: 216px) 100vw, 216px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/08\/pinoutam312.png 448w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/08\/pinoutam312-300x154.png 300w\" alt=\"\" width=\"216\" height=\"111\" \/><\/p>\n<hr \/>\n<p><strong>Un resistor de 10 K<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/03\/10kohm.jpeg\" width=\"189\" height=\"170\" \/><\/p>\n<hr \/>\n<p><strong>PCB<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7490\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/pcb.jpg\" alt=\"\" width=\"472\" height=\"342\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/pcb.jpg 657w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/pcb-300x217.jpg 300w\" sizes=\"(max-width: 472px) 100vw, 472px\" \/><\/p>\n<hr \/>\n<p><strong>Circuito<img loading=\"lazy\" class=\"alignnone size-large wp-image-7491\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-1024x672.jpg\" alt=\"\" width=\"1024\" height=\"672\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-1024x672.jpg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-300x197.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-768x504.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-1536x1008.jpg 1536w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-2048x1344.jpg 2048w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/10\/esp32-cam-piram312-820x538.jpg 820w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/strong><\/p>\n<hr \/>\n<p><strong>C\u00f3digo Fuente<\/strong><\/p>\n<pre class=\"lang:default decode:true \" title=\"C\u00f3digo Fuente\">\/\/ Librer\u00edas para la c\u00e1mara\r\n#include \"esp_camera.h\"\r\n#include \"soc\/soc.h\"\r\n#include \"soc\/rtc_cntl_reg.h\"\r\n#include \"driver\/rtc_io.h\"\r\n\/\/ Librer\u00edas para la trajeta MicroSD\r\n#include \"FS.h\"\r\n#include \"SD_MMC.h\"\r\n\/\/ Librer\u00edas para me memoria EEPROM \r\n#include \"EEPROM.h\"\r\n\/\/ Utilice 1 byte de espacio EEPROM\r\n#define EEPROM_SIZE 1\r\n\/\/ Contador de n\u00famero de imagen\r\nunsigned int contadorFoto = 0;\r\n\/\/ definiciones de pines para CAMERA MODELO AI THINKER\r\n#define PWDN_GPIO_NUM     32\r\n#define RESET_GPIO_NUM    -1\r\n#define XCLK_GPIO_NUM      0\r\n#define SIOD_GPIO_NUM     26\r\n#define SIOC_GPIO_NUM     27\r\n#define Y9_GPIO_NUM       35\r\n#define Y8_GPIO_NUM       34\r\n#define Y7_GPIO_NUM       39\r\n#define Y6_GPIO_NUM       36\r\n#define Y5_GPIO_NUM       21\r\n#define Y4_GPIO_NUM       19\r\n#define Y3_GPIO_NUM       18\r\n#define Y2_GPIO_NUM        5\r\n#define VSYNC_GPIO_NUM    25\r\n#define HREF_GPIO_NUM     23\r\n#define PCLK_GPIO_NUM     22\r\nint pin = 4;\r\nvoid configuracionCamara() {\r\n  \/\/Configurar los par\u00e1metros de la c\u00e1mara\r\n  \/\/ Objeto para almacenar los par\u00e1metros de configuraci\u00f3n de la c\u00e1mara.\r\n  camera_config_t config;\r\n  config.ledc_channel = LEDC_CHANNEL_0;\r\n  config.ledc_timer = LEDC_TIMER_0;\r\n  config.pin_d0 = Y2_GPIO_NUM;\r\n  config.pin_d1 = Y3_GPIO_NUM;\r\n  config.pin_d2 = Y4_GPIO_NUM;\r\n  config.pin_d3 = Y5_GPIO_NUM;\r\n  config.pin_d4 = Y6_GPIO_NUM;\r\n  config.pin_d5 = Y7_GPIO_NUM;\r\n  config.pin_d6 = Y8_GPIO_NUM;\r\n  config.pin_d7 = Y9_GPIO_NUM;\r\n  config.pin_xclk = XCLK_GPIO_NUM;\r\n  config.pin_pclk = PCLK_GPIO_NUM;\r\n  config.pin_vsync = VSYNC_GPIO_NUM;\r\n  config.pin_href = HREF_GPIO_NUM;\r\n  config.pin_sscb_sda = SIOD_GPIO_NUM;\r\n  config.pin_sscb_scl = SIOC_GPIO_NUM;\r\n  config.pin_pwdn = PWDN_GPIO_NUM;\r\n  config.pin_reset = RESET_GPIO_NUM;\r\n  config.xclk_freq_hz = 20000000;\r\n  config.pixel_format = PIXFORMAT_JPEG; \/\/ Las opciones son YUV422, ESCALA DE GRISES, RGB565, JPEG\r\n\/\/ Seleccione un tama\u00f1o de fotograma m\u00e1s bajo si la c\u00e1mara no es compatible con PSRAM\r\n  if (psramFound()) {\r\n    config.frame_size = FRAMESIZE_UXGA; \/\/ TAMA\u00d1O DEL MARCO_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA\r\n    config.jpeg_quality = 10; \/\/10-63 un n\u00famero m\u00e1s bajo significa mayor calidad\r\n    config.fb_count = 2;\r\n  } else {\r\n    config.frame_size = FRAMESIZE_SVGA;\r\n    config.jpeg_quality = 12;\r\n    config.fb_count = 1;\r\n  }\r\n\/\/ Inicializar la c\u00e1mara\r\n  esp_err_t err = esp_camera_init(&amp;config);\r\n  if (err != ESP_OK) {\r\n    Serial.printf(\"El inicio de la c\u00e1mara fall\u00f3 con el error 0x%x\", err);\r\n    return;\r\n  }\r\n\/\/ Ajustes de calidad de la c\u00e1mara.\r\n  sensor_t * seteoCamara = esp_camera_sensor_get();\r\n  \/\/ BRILLO (-2 to 2)\r\n  seteoCamara-&gt;set_brightness(seteoCamara, 0);\r\n  \/\/ CONTRASTE (-2 to 2)\r\n  seteoCamara-&gt;set_contrast(seteoCamara, 0);\r\n  \/\/ SATURACI\u00d3N (-2 to 2)\r\n  seteoCamara-&gt;set_saturation(seteoCamara, 0);\r\n  \/\/ EFECTOS ESPECIALES (0 - Sin efecto, 1 - Negativo, 2 - Escala de grises, 3 - Tinte rojo, 4 - Tinte verde, 5 - Tinte azul, 6 - Sepia)\r\n  seteoCamara-&gt;set_special_effect(seteoCamara, 0);\r\n  \/\/BALANCE DE BLANCOS (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_whitebal(seteoCamara, 1);\r\n  \/\/ GANANCIA AWB (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_awb_gain(seteoCamara, 1);\r\n  \/\/ MODOS WB (0 - Autom\u00e1tico, 1 - Soleado, 2 - Nublado, 3 - Oficina, 4 - Hogar)\r\n  seteoCamara-&gt;set_wb_mode(seteoCamara, 0);\r\n  \/\/ CONTROLES DE EXPOSICI\u00d3N (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_exposure_ctrl(seteoCamara, 1);\r\n  \/\/ AEC2 (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_aec2(seteoCamara, 0);\r\n  \/\/ NIVELES DE AE (-2 a 2)\r\n  seteoCamara-&gt;set_ae_level(seteoCamara, 0);\r\n  \/\/ VALORES AEC (0 a 1200)\r\n  seteoCamara-&gt;set_aec_value(seteoCamara, 300);\r\n  \/\/ CONTROLES DE GANANCIA (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_gain_ctrl(seteoCamara, 1);\r\n  \/\/ GANANCIA AGC (0 a 30)\r\n  seteoCamara-&gt;set_agc_gain(seteoCamara, 0);\r\n  \/\/ GANANCIA TECHO (0 a 6)\r\n  seteoCamara-&gt;set_gainceiling(seteoCamara, (gainceiling_t)0);\r\n  \/\/ BPC (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_bpc(seteoCamara, 0);\r\n  \/\/ WPC (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_wpc(seteoCamara, 1);\r\n  \/\/ GMA RAW (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_raw_gma(seteoCamara, 1);\r\n  \/\/ LENC (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_lenc(seteoCamara, 1);\r\n  \/\/ ESPEJO ORIZ (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_hmirror(seteoCamara, 0);\r\n  \/\/ VERT FLIP (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_vflip(seteoCamara, 0);\r\n  \/\/ DCW (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_dcw(seteoCamara, 1);\r\n  \/\/ PATR\u00d3N DE BARRA DE COLOR (0 = Desactivar, 1 = Activar)\r\n  seteoCamara-&gt;set_colorbar(seteoCamara, 0);\r\n}\r\nvoid initMicroSDCard() {\r\n  \/\/ Inicia la tarjeta MicroSD\r\n\r\n  Serial.println(\"Montaje de la tarjeta MicroSD\");\r\n  if (!SD_MMC.begin()) {\r\n    Serial.println(\"Error al montar la tarjeta MicroSD\");\r\n    return;\r\n  }\r\n  uint8_t cardType = SD_MMC.cardType();\r\n  if (cardType == CARD_NONE) {\r\n    Serial.println(\"No se encontr\u00f3 ninguna tarjeta MicroSD\");\r\n    return;\r\n  }\r\n}\r\nvoid takeNewPhoto(String path) {\r\n  \/\/ Tomar una foto con la c\u00e1mara Configurar frame buffer\r\n  camera_fb_t  * fb = esp_camera_fb_get();\r\n  if (!fb) {\r\n    Serial.println(\"Fall\u00f3 la captura de la c\u00e1mara\");\r\n    return;\r\n  }\r\n  \/\/ Guardar imagen en la tarjeta microSD\r\n  fs::FS &amp;fs = SD_MMC;\r\n  File file = fs.open(path.c_str(), FILE_WRITE);\r\n  if (!file) {\r\n    Serial.println(\"No se pudo abrir el archivo en modo de escritura\");\r\n  }\r\n  else {\r\n    file.write(fb-&gt;buf, fb-&gt;len); \/\/ payload (image), payload length\r\n    Serial.printf(\"Archivo guardado en la ruta: %s\\n\", path.c_str());\r\n  }\r\n  \/\/ Cerrar el archivo\r\n  file.close();\r\n  \/\/ Devolver el frame buffer al controlador para su reutilizaci\u00f3n\r\n  esp_camera_fb_return(fb);\r\n}\r\nvoid setup() {\r\n   pinMode(pin, OUTPUT);   \/\/ declaramos el pin como salida ( OUTPUT )\r\n   digitalWrite (pin,LOW); \r\n  \/\/ Desactivar el detector de ca\u00edda de tensi\u00f3n\r\n  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);\r\n  \/\/ Iniciar monitor serie\r\n  Serial.begin(115200);\r\n  \/\/ Inicializa la c\u00e1mara\r\n  Serial.print(\"Inicializando el m\u00f3dulo de la c\u00e1mara...\");\r\n  configuracionCamara();\r\n  Serial.println(\"Camera OK!\");\r\n  \/\/ Inicializa la MicroSD\r\n  Serial.print(\"Inicializando el m\u00f3dulo de la tarjeta MicroSD... \");\r\n  initMicroSDCard();\r\n  \/\/ inicializar EEPROM con tama\u00f1o predefinido\r\n  EEPROM.begin(EEPROM_SIZE);\r\n  contadorFoto = EEPROM.read(0) + 1;\r\n  \/\/ Ruta donde se guardar\u00e1 la nueva imagen en la tarjeta SD\r\n  String path = \"\/foto\" + String(contadorFoto) + \".jpg\";\r\n  Serial.printf(\"Nombre del archivo de imagen: %s\\n\", path.c_str());\r\n  \/\/ Tomar y guardar foto\r\n  takeNewPhoto(path);\r\n  \/\/ Actualizar el contador de n\u00fameros de imagen EEPROM\r\n  EEPROM.write(0, contadorFoto);\r\n  EEPROM.commit();\r\n  digitalWrite (pin,LOW); \r\n  \/\/ Vincular Wakeup a GPIO13 en estado HIGH\r\n  esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 1);\r\n  digitalWrite (pin,LOW); \r\n  Serial.println(\"Entrar en modo de suspensi\u00f3n\");\r\n  delay(1000);\r\n  \/\/ Ingrese al modo de sue\u00f1o profundo\r\n  esp_deep_sleep_start();\r\n}\r\nvoid loop() {\r\n}<\/pre>\n<hr \/>\n<p style=\"text-align: left;\"><div class=\"page-sidebar widget\" id=\"donation_buttons\"><form action=\"https:\/\/www.paypal.com\/cgi-bin\/webscr\" method=\"post\" target=\"_blank\" ><input type=\"hidden\" name=\"business\" value=\"donacion@rogerbit.com\"><input type=\"hidden\" name=\"bn\" value=\"mbjtechnolabs_SP\"><input type=\"hidden\" name=\"cmd\" value=\"_donations\"><input type=\"hidden\" name=\"item_name\" value=\"Ayuda a RogerBit.com\"><input type=\"hidden\" name=\"item_number\" value=\"www.rogerbit.com\"><input type=\"hidden\" class=\"set_donation_button_amount\" name=\"amount\" value=\"1\"><table ><tbody><tr><td><label for=\"rogerBit necesita de tu ayuda para seguir existiendo :-)\">rogerBit necesita de tu ayuda para seguir existiendo :-)<\/label><\/td><\/tr><\/tbody><\/table><table ><tbody><tr><td><input style=\"margin-top:10px;\" type=\"image\" name=\"submit\" border=\"0\" src=\"https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif\" alt=\"PayPal - The safer, easier way to pay online\"><\/td><\/tr><\/tbody><\/table><input type=\"hidden\" name=\"currency_code\" value=\"USD\"><input type=\"hidden\" name=\"notify_url\" value=\"https:\/\/rogerbit.com\/wprb\/?Donation_Button&#038;action=ipn_handler\"><\/form><\/div><\/p>\n<hr \/>\n<p style=\"text-align: left;\"><strong>PROYECTO RECOMENDADO<\/strong><\/p>\n<p><iframe loading=\"lazy\" title=\"Timbre con env\u00edo de fotos y notificaciones por telegram - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/uzmHtxQWk6o?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>En este emocionante tutorial, te mostraremos c\u00f3mo construir tu propia c\u00e1mara de seguridad utilizando una ESP32-CAM y un sensor PIR AM312 para detectar movimiento. Lo mejor de todo, \u00a1las fotos se guardar\u00e1n directamente en una tarjeta SD! Tal vez pueda interesarte proyectos en arduino, pic, rob\u00f3tica, telecomunicaciones, suscribete en\u00a0http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1\u00a0mucho videos con c\u00f3digo fuentes completos y [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":7493,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[1743,45,1745,1733,1746,1734,1747,624,465,1245,1739,1751,101,1738,154,1744,1742,1691,1737,1735,1749,1736,1401,687,1741,1740],"_links":{"self":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7488"}],"collection":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/comments?post=7488"}],"version-history":[{"count":3,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7488\/revisions"}],"predecessor-version":[{"id":7494,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7488\/revisions\/7494"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media\/7493"}],"wp:attachment":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media?parent=7488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/categories?post=7488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/tags?post=7488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}