Micropython-PIR-alarm
Introduction
Je ne sais pas pour vous? Mais personnellement, je me suis toujours demandé comment interfacer capteur d'alarme sur un projet microcontrôleur.
En tant que Maker, nous avons tous eu l'occasion de tester l'un ou l'autre capteur PIR... mais qu'en est il une fois que l'on est confronté à un modèle plus "professionnel" ?
Cet article concerne quelques un de ces capteurs.
Capteur PIR-476 standard
Voici le capteur le plus commun, destiné à un usage en intérieur.
Ce capteur PIR (Passive Infra Res) est utilisé en intérieur pour couvrir une surface de 10m x 10m avec un angle de détection de l'ordre de 90° (de 88° à 110°)
| Caractéristique | Valeur |
| Application | Intérieur |
| Couverture | 10m x 10m |
| Angle de détection | ~90° |
| Hauteur installation | 2.0 à 2.7m |
| Alimentation | 9 à 16V DC (31mA) |
| Sortie | OptoCoupleur (NC=Normally Closed), 20V DC max, 100mA) |
| Température | -10°C à 50°C |
| Dimensions | 52mm x 60mm (Haut: 92mm) |
| Poids | 80 gr |
| Autre | * Compensation de la température |
Fonctionnement de la sortie:
- Detection = LED Allumé = OptoCoupleur "Ouvert"
- Non detection = LED Eteinte = OptoCoupleur "Fermé"
De la sorte, si quelqu'un coupe le fil vers le détecteur alors le circuit s'ouvre, ce qui revient à une détection d'alarme.
| Contact | Description |
|---|---|
| + | Alimentation: 9 à 16V DC. |
| - | Alimentation: masse/GND. |
| com | Optocoupleur: Commun (son "émetteur") |
| NC | Optocoupleur: Contact normalement fermé (Normally Closed) lorsque le capteur ne détecte rien. "Collecteur" de l'optocoupleur. |
| Tamper | Contacts de l'anti-sabotage (si présent). |
Connexion sur MicroContrôleur
L'exemple ci-dessous indique comment brancher le capteur sur un microcontrôleur 3.3V (comme Raspberry-Pi Pico).
L'entrée GP2 passe au niveau haut lorsqu'un mouvement est détecté.
L'entrée GP2 reste au niveau bas si rien n'est détecté.
Le script pour lire l'état de l'entrée est relativement simple:
import time
from machine import Pin
p = Pin( 2, Pin.IN )
while True:
print( "ALARM" if p.value() else "---" )
time.sleep(1)