Antes de comenzar a interactuar ESP32 con el sensor PIR, debemos saber cómo funcionan las interrupciones y cómo leerlas y manejarlas en ESP32. Discutamos el funcionamiento de PIR con ESP32 en detalle.
Aquí está el contenido de este artículo:
1: ¿Qué son las interrupciones?
1.1: interrumpe los pines en ESP32
2: Llamar a una interrupción en ESP32 - Micrypthon
3: Sensor PIR de interfaz con ESP32 - Micopython
3.1: Sensor de movimiento PIR (HC-SR501)
3.2: Pinout HC-SR501
3.3: código
3.4: salida
1: ¿Qué son las interrupciones?
La mayoría de los eventos que ocurren en la programación ESP32 se ejecutan secuencialmente, lo que significa la ejecución de línea de línea de línea. Para manejar y controlar los eventos que no necesitan ejecutarse durante la ejecución secuencial del código y Interrupciones son usados.
Por ejemplo, si queremos ejecutar una determinada tarea cuando ocurre cualquier evento especial, o se da una señal de activación a los pines digitales del microcontrolador que utilizamos interrupción.
Con la interrupción no necesitamos verificar continuamente el estado digital del pin de entrada ESP32. Cuando se produce una interrupción, el procesador detiene el programa principal, y se llama una nueva función que se conoce como ISR (Rutina de servicio de interrupción). Este ISR La función maneja la interrupción causada después de que regrese al programa principal y comience a ejecutarla. Uno de los ejemplos de ISR es el sensor de movimiento PIR que genera una interrupción una vez que se detecta el movimiento.
1.1: interrumpe los pines en ESP32
Una interrupción externa o de hardware puede ser causada por cualquier módulo de hardware, como el sensor táctil o el botón PUSH. Las interrupciones táctil ocurren cuando se detecta un toque en pines ESP32 o la interrupción de GPIO también se puede usar cuando se presiona una llave o botón Push.
En este artículo activaremos una interrupción cuando se detecte el movimiento utilizando el sensor PIR con ESP32.
Casi todos los pines GPIO, excepto 6 pines integrados SPI que generalmente vienen en el 36 La versión PIN de la placa ESP32 no se puede utilizar con el fin de interrumpir. Entonces, para recibir la interrupción externa a continuación son los pines que uno puede usar en ESP32:
2: Llamar a una interrupción en ESP32 usando Micrypthon
Para programar una placa ESP32 con sensor PIR utilizando el código Micopython. Tenemos que definir una función de interrupción. Los siguientes son algunos pasos simples que ayudan a definir una interrupción para la placa ESP32.
Paso 1: Inicializar la función de manejo de interrupciones: La función de manejo de interrupción debe definirse de manera fácil para que pueda ejecutarse rápidamente y volver al programa principal lo más rápido posible. Esto se puede hacer definiendo una variable global para que se pueda acceder a cualquier parte dentro del código si se le llama.
Aquí en el caso del sensor PIR usaremos el pin GPIO como un global variable. La función de interrupción tomará un pin como argumento y describirá el pin GPIO que hace que ocurra la función de interrupción.
Def Handle_interrupt (PIN):Paso 2: Configurar el pin GPIO para una interrupción: Para obtener el valor del pin GPIO, necesitamos crear un objeto que tome la entrada de él utilizando el Alfiler.EN Como el segundo argumento dentro de nuestra clase PIN. Podemos cambiar el nombre de esto con cualquier otro.
pin = pin (13, pin.EN)Paso 3: Adjunte la interrupción al pin GPIO para el sensor PIR usando el método IRQ ():
Usando el siguiente comando a continuación, podemos configurar la interrupción en un pin que definimos anteriormente.
pir.irq (disparador = pin.Irq_rising, handler = handle_interrupt)El irq () El método se utiliza para conectar la interrupción al pin. irq () acepta dos argumentos diferentes:
desencadenar: Este argumento explica el modo de activación. Los siguientes son tres modos:
manipulador: Esta función se llamará una vez que se active una interrupción.
3: Sensor PIR de interfaz con ESP32
Como ahora hemos cubierto los conceptos de interrupción con ESP32 usando Micropython, ahora interactuaremos el sensor PIR con ESP32. Aquí estaremos usando Alfiler.Irq_rising Modo en el código de micryphon para el sensor PIR porque queremos activar un LED cada vez que el sensor PIR detecta algo de movimiento. Este LED permanecerá encendido por un tiempo establecido y luego se apaga.
Se requerirán los siguientes componentes:
Esquemático Para el sensor PIR con ESP32:
La configuración de PIN de ESP32 con el sensor PIR es:
3.1: Sensor de movimiento PIR (HC-SR501)
PIR es un acrónimo de Sensores de infrarrojos pasivos. Dos sensores piroeléctricos utilizados juntos que detectarán la cantidad de calor alrededor de sus alrededores. Ambos sensores piroeléctricos se encuentran uno tras otro y cuando un objeto entra dentro de su rango, un cambio en la energía térmica o la diferencia de señal entre ambos sensores hace que la salida del sensor PIR sea baja. Una vez que PIR Out Pin baja, podemos establecer una instrucción específica para ejecutar (LED Blink).
Las siguientes son las características del sensor PIR:
3.2: Pinout HC-SR501
PIR HC-SR501 viene con tres alfileres. Dos de ellos son pines de potencia para VCC y GND y uno es el pin de salida para la señal de activación.
La siguiente es la descripción de PIR Sensor Pins:
Alfiler | Nombre | Descripción |
1 | VCC | Pin de entrada para el sensor Conectar al pin ESP32 VIN |
2 | AFUERA | Salida del sensor |
3 | Gnd | Sensor GND |
3.3: código
Ahora para programar ESP32 escriba el código dado en el editor de Thonny IDE o cualquier otro IDE de Micrypthon y lo suba a ESP32.
desde el pin de importación de la máquinaPrimero, importamos el alfiler clase del módulo de la máquina y dormir Método para agregar retraso. A continuación se crea una variable con nombre movimiento. Esta variable detectará si se detecta o no un movimiento.
Luego creamos una función manejar_interrumpiendo. Cada vez que el sensor PIR detecta el movimiento, esta función se activará. Toma un pin como parámetro de entrada e indica el pin que hace que la interrupción suceda.
En palabras simples cada vez que PIR detecta el movimiento, manejar_interrumpiendo establecerá la variable de movimiento en verdadero y almacenará el pin que hace que la interrupción suceda. Una cosa para recordar siempre está declarando el movimiento variable como global porque es necesario a lo largo del código.
Avanzando, creamos dos objetos PIN, uno para almacenar alfileres LED y el segundo tomará la salida del sensor PIR en GPIO PIN 13. Además, declaramos el pasador del gatillo en CRECIENTE modo.
En el bucle Parte del código, verificará el valor de la variable de movimiento una vez que se convierta en el LED verdadero se encenderá conectado en el pin 4 de ESP32. Si la moción detenido el LED se apagará después de 5 segundos.
3.4: salida
En la sección de salida podemos ver que el objeto está fuera del alcance del sensor PIR, por lo que el CONDUJO se vuelve APAGADO.
Ahora el movimiento detectado por el LED del sensor PIR girará EN para 5 segundo Después de eso, si no se detecta ningún movimiento, permanecerá APAGADO Hasta que se reciba el siguiente gatillo.
La siguiente salida se muestra mediante el concha/terminal en thonny ide.
Conclusión
Un sensor PIR con ESP32 puede ayudar a detectar el movimiento de diferentes cosas. Usando la función de interrupción en Micrypthon con ESP32 podemos activar una respuesta en un PIN específico de GPIO. Cuando se detecte el cambio, se activará la función de interrupción y se encenderá un LED.