Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
He estado trabajando en la fabricación de sensores de movimiento caseros que envían un mensaje de correo electrónico cuando se activan. Hay muchos ejemplos de instructables y otros ejemplos de cómo hacer esto. Recientemente necesitaba hacer esto con un sensor de movimiento PIR que funciona con baterías y un ESP-01. El ESP-01 es muy funcional y tiene todas las capacidades necesarias, así que ¿por qué no utilizar las mínimas y menos costosas necesarias? Se agregó a la mezcla otro módulo ESP-01 separado y remoto que activó un timbre cuando se activó el sensor de movimiento.
El código y el diseño del circuito eventual se han recopilado de numerosas fuentes en la web y no creo que pueda identificarlos específicamente. La idea de enviar correos electrónicos a través de Gmail provino de un instructable y otras fuentes y el código final es una amalgama de esas fuentes. Dormir profundamente para trabajar me llevó por muchos caminos que a menudo resultaron infructuosos. Lo curioso es que, una vez que un camino resulta fructífero, dejas de buscar más caminos. Por eso les doy las gracias a todos aquellos que han contribuido a mi éxito y aún son desconocidos.
Tuve el mismo problema para que el sensor PIR funcionara para activar el sueño profundo ESP-01. Muchos caminos hasta que hubo uno que funcionó.
No hace falta decir que hubo algunos obstáculos interesantes o quizás más relevantes, una mejor comprensión de la electrónica que necesitaba. Sigues aprendiendo hasta que algo funciona y entonces ya no tienes que aprender más.
El ESP-01 tiene un sueño profundo al igual que cualquier otro módulo ESP8266 siempre que no requiera un sueño programado. Si desea que el módulo se active después de una cantidad determinada de tiempo transcurrido, el ESP-01 no es el módulo que debe usar. Pero eso no es lo que quería. El tiempo transcurrido no tiene sentido cuando se usa un PIR. Quería que el ESP-01 se activara solo cuando lo activara un movimiento detectado por el PIR. Si no se detecta movimiento durante horas o días, el ESP-01 permanece dormido con una carga mínima de batería.
Verá muchos circuitos que usan GPIO16 conectados al reinicio de ESP8266 porque GPIO16 es la señal de activación. Esto es cierto, pero es la señal de despertar del sueño programado. Podemos ignorar este PIN, lo cual es bueno porque no está disponible en el ESP-01.
Básicamente, todo lo que necesitamos es obtener la señal del PIR para activar el pin de reinicio ESP-01. La primera dificultad que supondrá es que el reinicio se activa con una señal BAJA y el PIR envía una señal ALTA cuando se activa. El reinicio también debe ser ALTO o flotante en el arranque. Entonces, para mantener esto corto, después de probar algunos circuitos diferentes, me decidí por usar un transistor NPN con una resistencia pull-up para mantener el pin RESET ALTO durante el arranque. La salida del PIR es mínima pero proporciona suficiente corriente base para encender el transistor.
Como verá en el diagrama de circuito a continuación, el ESP-01 se despertaba del sueño profundo cada vez que el PIR detectaba movimiento.
Pero había otro problema. El reinicio del ESP-01 solo ocurrió después de que el PIR dejó de detectar movimiento y regresó a una señal baja, apagando el transistor y devolviendo el pin de reinicio a ALTO debido a la resistencia pullup. Esto significaría que no se enviaría el correo electrónico ni se activará el timbre hasta DESPUÉS de que el PIR deje de detectar movimiento. Quería que el gatillo ocurriera tan pronto como se sintiera el movimiento.
Lo que determiné a partir de este comportamiento es que el ESP-01 en realidad se activa en el flanco ascendente de la señal. Mantener el pin de reinicio a tierra en realidad no activa el ESP-01 desde el sueño profundo, pero en el momento en que el voltaje sube a la señal ALTA, entonces ocurre el reinicio.
Mi respuesta muy simple a este comportamiento fue agregar un capacitor a la línea entre la salida PIR y la base del transistor. Esto hizo que el transistor solo se encienda mientras el condensador se estaba cargando. Una vez cargado, no hubo más corriente y el transistor se apagó. La resistencia de 5k permite que la corriente se drene a tierra. Probé esto con un LED en lugar del ESP-01 y pude ver que el LED parpadeaba durante una fracción de segundo antes de apagarse. Este pequeño pulso fue suficiente para jalar el pin de reinicio a tierra momentáneamente y el tiempo suficiente para activar el reinicio del sueño profundo.
Paso 1: Módulo de sueño profundo ESP-01
El módulo de sueño profundo usa dos voltajes de trabajo. El 5v + aleatorio del paquete de baterías para el PIR y también una placa reguladora de 3.3 voltios para el ESP-01. También incorporo un diodo en el circuito para evitar que las piezas se dañen por voltajes inversos. Esto usa un poco de energía adicional y reduce el voltaje de la batería en 0,7 voltios. El diodo se puede dejar fuera del circuito si está seguro de que nunca invertirá los cables del paquete de baterías. También se agrega un interruptor por conveniencia.
Este módulo es una actualización menor de mi diseño original de sueño no profundo. En la configuración sin sueño profundo, el PIR se conecta directamente al pin RX del ESP-01. Estoy usando el pin RX del ESP-01 como pin de entrada para el PIR por algunas razones. GPIO0 no funcionó porque al arrancar el PIN de salida PIR sería BAJO, lo que provocaría que el ESP-01 entrara en modo flash. No usé GPIO2 porque entonces no pude usar el LED incorporado para retroalimentación visual. Los pines RX y TX a menudo se describen como pines IO adicionales, pero mi experiencia es que RX es un pin de ENTRADA adicional y TX es un pin de SALIDA adicional.
En la configuración de sueño profundo, la conexión RX no es estrictamente necesaria. Lo estoy usando solo para monitorear cuánto tiempo se activa el PIR al encender el LED mientras la entrada es ALTA. Como se mencionó anteriormente, si borra la función de bucle y solo usa la rutina de configuración, la conexión RX es innecesaria.
Aquí está la lista de piezas para el módulo de sueño profundo ESP-01:
1 - Placa prototipo PCB de 5 x 7 cm
1 - conector de 2 pines
2 - conectores hembra de 1 x 3
1 - AMS1117 - Placa de circuito regulador de voltaje 3.3
1 - Pin de cabezal macho de ángulo recto de 1 x 3
1 - Clavija de cabezal de enchufe hembra de 1 x 3
1 - Clavija de cabezal de enchufe hembra de 1 x 4
1 - cabezal hembra 2 x 4
1 - condensador de 1 uf
1 - Sensor de movimiento PIR HC-SR501
1 - Transistor 2N2222
1 - Resistencia de 10k
1 - Resistencia de 4.7k
1 - Resistencia de 1k
1 - diodo 1N4148
1 - conmutador SS12D00G4 SPDT
1 - ESP-01
1 - Paquete de baterías 4AA
Tenga en cuenta que en el video, la placa de circuito utiliza un adaptador de placa de prueba ESP-01 en lugar del encabezado de 2 x 4. Si bien este adaptador es más fácil de soldar, el cabezal de 2 x 4 funciona bien y realmente se ajusta mejor.
Paso 2: Código de suspensión profunda ESP-01
El código Deep Sleep realiza dos funciones. Envíe un mensaje de correo electrónico (a través de gmail de forma predeterminada) y envíe una solicitud web http al módulo de timbre ESP-01 asociado para activar el timbre.
Cuando se activa, este módulo proporciona dos opciones de notificación y puede ser especialmente útil cuando no está prestando atención a los mensajes de correo electrónico.
Deberá actualizar seis líneas de código con sus valores específicos para que el boceto funcione:
const char * ssid = "xxxxx"; // Su WiFi SSIDconst char * password = "xxxxx"; // Su contraseña de WiFi String Senders_Login = "xxxxx"; // inicio de sesión de su proveedor de correo electrónico String Senders_Password = "xxxxx"; // la contraseña de su proveedor de correo electrónico
Para = "xxxxxx"; De = "xxxxxx"; // Gmail generalmente prefiere que sea igual que Senders_Login y puede sustituir
Encontré que el módulo de sueño profundo funciona de manera impredecible cuando el sensor PIR se configuró por debajo de los 10 segundos durante la duración del evento de activación. Tengo el mío configurado en 20 segundos. Esto ha demostrado ser muy confiable, pero también significa que los eventos desencadenantes podrían ocurrir con esa frecuencia.
También agregué código a la función de bucle para mantener el LED ESP-01 encendido mientras el PIR todavía esté detectando movimiento. Todo el código de la función de bucle se puede eliminar y la llamada al sueño profundo se puede mover al final de la función de configuración.
Utilizo la función de parpadeo para un indicador visual de actividad con el módulo ESP-01.
Si bien he usado y probado la conectividad con gmail, otros proveedores de correo electrónico también funcionan. He probado un par. De hecho, he encontrado gmail más problemático. Gmail requiere que tenga su cuenta configurada para el acceso de aplicaciones menos seguras. Esta configuración de cuenta está DESACTIVADA de forma predeterminada, así que asegúrese de encontrarla y cámbiela a menos segura. Gmail NO funcionará de otra manera.
Si elige tener más de un módulo de zumbador, simplemente agregue llamadas adicionales del cliente http (repita las tres líneas de código, pero cambie la dirección IP utilizada y también defina la variable httpCode como int una vez.
Tenga en cuenta que la dirección IP del zumbador está codificada en este módulo. No tiene que usar la dirección IP que he elegido, pero debe hacer coincidir la dirección IP de la llamada web en este módulo con la dirección IP de la configuración del servidor web en el siguiente módulo.
Paso 3: Módulo de zumbador ESP-01
El módulo de timbre tiene una configuración bastante simple. Utiliza un conector USB en lugar de una batería porque no creo que este módulo sea adecuado para una batería. Debe permanecer encendido y conectado a nework / wifi en todo momento porque nunca sabe cuándo se realizará una solicitud web. Esto requiere más energía continua de la que son útiles los paquetes de baterías.
Los módulos de zumbador se pueden colocar convenientemente en múltiples ubicaciones para proporcionar una notificación de un evento de activación del sensor de movimiento, sin importar dónde se encuentre.
El zumbador está conectado a los 5v del conector USB y hay otra placa reguladora de 3.3v que proporciona energía al ESP-01.
El módulo de zumbador funcionará usando TX, GPIO0 o GPIO2 para la salida. En mi configuración estoy usando GPIO0. (En la imagen del módulo, el cable está conectado a GPIO2 pero desde entonces lo he movido). Si bien GPIO0 no funcionó para el módulo de sueño profundo (como ENTRADA), funciona bien con este diseño como SALIDA. No se tira al suelo en el arranque, lo que causará problemas. Usé GPIO2, pero luego no pude usar el LED integrado para recibir comentarios, pero al usar GPIO0 para SALIDA, puedo usar el LED integrado.
Intenté usar un transistor NPN para alimentar el zumbador en el circuito cuando el ESP-01 puso una señal ALTA en el pin GPIO0, pero los resultados fueron terriblemente inconsistentes. El timbre parecía querer sonar en todo momento, incluso con muy poca potencia. Entonces, en su lugar, utilicé un MOSFET de canal N (2n7000) y el resultado fue excelente. El pin IO controla la puerta según sea necesario.
Si bien solo necesitamos dos pines del conector USB Vcc (+) y Gnd (-), uso un encabezado de 5 pines para conectarlo a la placa PCB para una estabilidad adicional y para soldar antes de conectar el USB al regulador. Mi placa del regulador de 3.3v vino con los pines preinstalados y en mi mente, al revés. Entonces, para colocar el regulador en los pines del cabezal, puede ver que la placa de circuito está oculta, pero peor que eso, vcc y gnd en el regulador se invierten de vcc y gnd en el conector USB. Entonces los cables se cruzan.
También tenga en cuenta que la alimentación + para el zumbador activo proviene de los 5v del USB. Además, un conector hembra de 4 pines funciona muy bien con la ubicación de los pines del zumbador.
Lista de piezas del módulo de zumbador ESP-01:
1 - Placa PCB de 5 x 7
1 - Mini conector USB con encabezados de clavijas (7 clavijas)
2 - conectores hembra de 1 x 3
1 - Tarjeta reguladora de voltaje AMS1117-3.3 v
1 - cabezal hembra 2 x 4
2 - conectores hembra de 1 x 4 hembra
1 - MOSFET de canal N 2N7000
1 - resistencia de 10 ohmios
1 - Zumbador activo de 5v
Paso 4: Código del módulo del zumbador ESP-01
El módulo de zumbador actúa como un servidor web ESP-01 simple. Responde con un mensaje simple a una solicitud de root y cuando recibe la solicitud de zumbido, activará el zumbador. GPIO0 se usa para el pin GPIO para la señal del zumbador.
Tenga en cuenta que el ESP-01 está configurado con una dirección IP codificada. Esto es necesario para que el módulo de sueño profundo esté acoplado a la dirección del zumbador.
Como en el módulo anterior, deberá actualizar dos líneas de código con sus valores específicos:
// SSID y contraseña de su router WiFiconst char * ssid = "xxxxxxx";
const char * contraseña = "xxxxxxxx";
Si ha creado varios módulos de timbre, cada uno debe cargarse con su propia dirección IP única.
También puede agregar diferentes métodos de zumbido que producen diferentes melodías de zumbador. Por ejemplo, si tiene un sensor PIR en la puerta principal y uno en la puerta trasera, cada uno puede hacer una solicitud web a cada uno de sus módulos de timbre, pero un sensor puede tener un boceto que llama a buzz y el otro boceto puede llamar a buzz2 para que pueda saber por el sonido qué sensor se activó. ¡Y así sucesivamente y así sucesivamente! La función buzz2 no existe, simplemente copie la función buzz y cambie los valores de retardo.
Para el servidor web, solo tendría que agregar una línea de código como esta:
server.on ("/ buzz2", buzz2);
Paso 5: Pensamientos finales
Este es mi primer instructivo, por lo que es posible que me haya perdido algunas cosas prácticas que debería haber incluido. La placa reguladora AMS1117-3.3 que utilicé incluye un pequeño LED que se enciende cuando se enciende. Para el módulo de sueño profundo, no quería que este led se encendiera y consumiera energía innecesariamente. Así que desolé lo que pude en un lado del led en el tablero y luego usé un cuchillo para cortar la línea de trazado. Esto fue más fácil de lo que pensaba y evita que el LED se encienda. No he podido determinar cuál es el consumo de energía cuando el ESP-01 está en sueño profundo, pero es posible que tenga una respuesta en unas pocas semanas. Un colega mío estaba ejecutando el sensor (no en sueño profundo) y descubrió que las baterías se habían agotado (5AA) en aproximadamente una semana. Creo que esta configuración debería dar un mes o incluso más. Veremos.
El módulo de sueño profundo cuesta alrededor de $ 8 CDN en partes (¡baterías no incluidas!) Y el módulo de timbre $ 5.