Capteur de mouvement PIR avec Esptop 10 en utilisant Micropython et Thonny IDE

Capteur de mouvement PIR avec Esptop 10 en utilisant Micropython et Thonny IDE
ESP32 peut interfacer plusieurs dispositifs externes pour contrôler et lire différents capteurs. PIR ou le capteur de mouvement est l'un des exemples que nous pouvons interfacer avec ESP32 pour détecter le mouvement dans une certaine plage de capteur PIR en utilisant ESP32.

Avant de commencer à interfacer ESP32 avec le capteur PIR, nous devons savoir comment les interruptions fonctionnent et comment les lire et les gérer dans ESP32. Discutons du travail de PIR avec ESP32 en détail.

Voici le contenu de cet article:

1: Quelles sont les interruptions

1.1: interrompt les broches dans ESP32

2: Appeler une interruption dans ESP32 - Micropython

3: Interfaçage du capteur PIR avec ESP32 - Micropython

3.1: capteur de mouvement PIR (HC-SR501)

3.2: Pinout HC-SR501

3.3: code

3.4: sortie

1: Quelles sont les interruptions

La plupart des événements qui se produisent dans la programmation ESP32 s'exécutent séquentiellement, ce qui signifie une exécution ligne par ligne du code. Pour gérer et contrôler les événements qui n'ont pas besoin d'exécuter pendant l'exécution séquentielle du code Interruptions sont utilisés.

Par exemple, si nous voulons exécuter une certaine tâche lorsqu'un événement spécial se produit, ou un signal de déclenchement est donné aux épingles numériques du microcontrôleur, nous utilisons l'interruption.

Avec l'interruption, nous n'avons pas besoin de vérifier en continu l'état numérique de la broche d'entrée ESP32. Lorsqu'une interruption se produit, le processeur arrête le programme principal et une nouvelle fonction est appelée ISR (Routine de service d'interruption). Ce ISR La fonction gère l'interruption causée après ce retour au programme principal et commencez à l'exécuter. L'un des exemples d'ISR est le capteur de mouvement PIR qui génère une interruption une fois le mouvement détecté.

1.1: interrompt les broches dans ESP32

Une interruption externe ou matérielle peut être causée par n'importe quel module matériel tel que le capteur tactile ou le bouton-poussoir. Les interruptions de toucher se produisent lorsqu'un toucher est détecté sur ESP32 PINS ou que l'interruption GPIO peut également être utilisée lorsqu'une touche ou un bouton-poussoir est appuyé.

Dans cet article, nous déclencherons une interruption lorsque le mouvement est détecté en utilisant le capteur PIR avec ESP32.

Presque toutes les broches GPIO sauf 6 broches intégrées SPI qui viennent généralement dans le 36 La version PIN de la carte ESP32 ne peut pas être utilisée à des fins d'interruption d'appel. Ainsi, pour recevoir l'interruption externe qui suit se trouvent les broches que l'on peut utiliser dans ESP32:

2: Appeler une interruption dans ESP32 en utilisant Micropython

Pour programmer une carte ESP32 avec capteur PIR à l'aide de code micropython. Nous devons définir une fonction d'interruption. Voici quelques étapes simples qui aident à définir une interruption pour la carte ESP32.

Étape 1: Initialiser la fonction de gestion des interruptions: La fonction de manutention d'interruption doit être définie de manière facile afin qu'elle puisse s'exécuter rapidement et revenir au programme principal le plus rapidement possible. Cela peut être fait en définissant une variable globale afin qu'elle puisse être accessible n'importe où dans le code si elle est appelée.

Ici, en cas de capteur PIR, nous utiliserons la broche gpio comme un mondial variable. La fonction d'interruption prendra une broche comme argument et décrira la broche GPIO qui provoque la fonction d'interruption.

def handle_interrupt (broche):

Étape 2: Configurez la broche GPIO pour une interruption: Pour obtenir la valeur de la broche GPIO, nous avons besoin pour créer un objet qui prendra l'entrée de celui-ci à l'aide du Broche.DANS Comme deuxième argument à l'intérieur de notre classe de broches. Nous pouvons renommer cela avec tout autre.

broche = broche (13, broche.DANS)

Étape 3: attachez l'interruption à la broche GPIO pour le capteur PIR à l'aide de la méthode IRQ ():

En utilisant la commande ci-dessous, nous pouvons définir l'interruption sur une broche que nous avons définie plus tôt.

pir.irq (déclencheur = broche.Irq_rise, handler = handle_interrupt)

Le irq () la méthode est utilisée pour fixer l'interruption à la broche. irq () accepte deux arguments différents:

  • Déclencher
  • Maître

déclencher: Cet argument explique le mode de déclenchement. Voici trois modes:

  • Broche.IRQ_FALLING: Lorsqu'une broche passe de haut à bas, une interruption est démarrée.
  • Broche.Irq_rise: Lors de la transition de la broche de faible à haut, une interruption est lancée.
  • Broche.IRQ_FALLING | PIN.Irq_rise: Déclencher l'interruption chaque fois qu'une broche change son état. L'une ou l'autre broche va à haut ou bas.

Handleur: Cette fonction sera appelée une fois qu'une interruption sera déclenchée.

3: Interfaçage du capteur PIR avec ESP32

Comme maintenant, nous avons couvert les concepts d'interruption avec ESP32 en utilisant Micropython maintenant, nous allons interfacer le capteur PIR avec ESP32. Ici, nous utiliserons Broche.Irq_rise Mode en code micropython pour le capteur PIR parce que nous voulons déclencher une LED à chaque fois que le capteur PIR détecte un certain mouvement. Cette LED restera en cours pour une heure définie puis elle s'éteint.

Les composants suivants seront nécessaires:

  • Conseil de développement ESP32
  • Capteur de mouvement PIR (HC-SR501)
  • Résistance de 220 ohms
  • Fils de cavalier
  • Planche à pain
  • DIRIGÉ

Schématique pour le capteur PIR avec ESP32:

La configuration de la broche de ESP32 avec le capteur PIR est:

3.1: capteur de mouvement PIR (HC-SR501)

PIR est un acronyme pour Capteurs infrarouges passifs. Deux capteurs pyroélectriques utilisés ensemble qui détecteront la quantité de chaleur autour de son environnement. Ces deux capteurs pyroélectriques se trouvent l'un après l'autre et lorsqu'un objet entre dans sa plage, un changement d'énergie thermique ou la différence de signal entre ces deux capteurs fait que la sortie du capteur PIR est faible. Une fois que PIR Out Pin est bas, nous pouvons définir une instruction spécifique pour exécuter (LED Blink).

Voici les caractéristiques du capteur PIR:

  • La sensibilité peut être définie en fonction de l'emplacement du projet (comme la détection de mouvement de souris ou de feuilles)
  • Le capteur PIR peut être défini pour la durée de la durée d'un objet
  • Largement utilisé dans les alarmes de sécurité à domicile et autres applications de détection de mouvement thermique.

3.2: Pinout HC-SR501

PIR HC-SR501 est livré avec trois broches. Deux d'entre eux sont des broches d'alimentation pour VCC et GND et une est la broche de sortie pour le signal de déclenchement.

Voici la description des épingles de capteur PIR:

Broche Nom Description
1 VCC Pin d'entrée pour le capteur Connectez-vous à la broche VIN ESP32
2 DEHORS Sortie du capteur
3 GND Capteur GND

3.3: code

Maintenant, pour programmer ESP32, écrivez le code donné dans l'éditeur de Thonny IDE ou tout autre IDE Micropython et téléchargez-le sur ESP32.

à partir de la broche d'importation de machine
à partir de temps pour sommeil
mouvement = faux
def handle_interrupt (broche):
mouvement mondial
mouvement = vrai
Interrupt global_pin
interrupt_pin = broche
LED = broche (4, broche.DEHORS)
pir = broche (13, broche.DANS)
pir.irq (déclencheur = broche.Irq_rise, handler = handle_interrupt)
Bien que vrai:
Si le mouvement:
imprimer («mouvement détecté»)
dirigé.valeur (1)
sommeil (5)
dirigé.valeur (0)
imprimer («mouvement arrêté»)
mouvement = faux

Tout d'abord, nous avons importé le broche classe du module de machine et dormir Méthode pour ajouter un retard. Suivant une variable est créée avec le nom mouvement. Cette variable détectera si un mouvement est détecté ou non.

Ensuite, nous avons créé une fonction handle_interrupt. Chaque fois que le capteur PIR détecte le mouvement, cette fonction sera activée. Il prend une broche comme paramètre d'entrée et indique la broche qui provoque une interruption.

En termes simples à chaque fois que PIR détecte le mouvement, handle_interrupt définira la variable de mouvement sur true et stockera la broche qui provoque l'interruption. Une chose à retenir déclare toujours le mouvement variable comme globale car elle est nécessaire tout au long du code.

À l'avenir, nous avons créé deux objets PIN, un pour stocker des broches LED et la seconde prendra la sortie du capteur PIR à la broche GPIO 13. De plus, nous avons déclaré la broche de déclenchement dans EN HAUSSE mode.

Dans le boucle Partie du code, il vérifiera la valeur de la variable de mouvement une fois qu'il deviendra une vraie LED s'allumera à la broche 4 de l'ESP32. Si le mouvement arrêté la LED s'éteindra après 5 secondes.

3.4: sortie

Dans la section de sortie, nous pouvons voir que l'objet est hors de portée du capteur PIR, donc le DIRIGÉ est tourné DÉSACTIVÉ.

Maintenant, le mouvement détecté par la LED du capteur PIR tournera SUR pour 5 seconde Après cela, si aucune motion n'est détectée, il restera DÉSACTIVÉ Jusqu'à ce que le déclencheur suivant soit reçu.

La sortie suivante est indiquée par le coquille / terminal Dans Thonny IDE.

Conclusion

Un capteur PIR avec ESP32 peut aider à détecter le mouvement de différentes choses. En utilisant la fonction d'interruption dans Micropython avec ESP32, nous pouvons déclencher une réponse à une broche GPIO spécifique. Lorsque la modification est détectée, la fonction d'interruption sera déclenchée et une LED s'allumera.