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 quelque-uns 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). |
Capteur PIR-460
Ce capteur est généralement utilisé comme détecteur de passage (ex: au dessus d'une porte).
Ce capteur PIR (Passive Infra Res) est utilisé en intérieur ou passage couvert par des systèmes de sécurité.
Il permet de détecter le passage (mode sécurité) ou la présence d'un individu à un endroit précis (mode card access).
Bien qui soit habituellement monté en hauteur et diriger vers le bas, rien n'empêche d'exploiter ce capteur dans d'autres configurations.
| Caractéristique | Valeur |
| Application | Détecteur de passage/Presence |
| Couverture | 2.1x1.5m (mode card access) 6.6x4.5m |
| Angle de détection | 0° (configurable 10°) |
| Hauteur installation | 2.0 à 2.7m |
| Alimentation | 9 à 16V DC (31mA) Configurable 20 à 27V DC |
| Sortie | Micro-Relais (NC=Normalement Fermé), 28V DC max, 150mA) |
| Température | -10°C à 50°C |
| Dimensions | Triangle base 120mm x hauteur 100mm (épaisseur 40mm). |
| 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 | Relais: Commun |
| NC | Relais: Contact normalement fermé Peut-être reconfiguré en Normalement Ouver.. |
| Tamper | Contacts de l'anti-sabotage. Ouvert si couvercle retiré |
Connexion sur MicroContrôleur
Le fonctionnement est identique pour les capteurs PIR-460, PIR-476 (les borniers presque identiques, cfr polarité de l'alimentation)
Raccordement Simple
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)
|
|
Une tension de 3.3V est parfaite pour transporter le signal sur une courte distance. Cette tension reste cependant trop faible pour propager le signal d'alarme fiablement sur une longue distance (>1m). |
Raccordement en cascade
Il est possible de brancher plusieurs capteurs sur une seule ligne en les branchant en série.
L'alarme est donc déclenchée lorsqu'un des capteurs détecte un mouvement.
|
|
L'inconvénient de cette configuration est qu'il n'est pas possible de savoir lequel des capteurs à provoqué le déclenchement de l'alarme (c'est donc une gestion par "zones"). |
Raccordement analogique
Le raccordement en cascade ne permet pas d'identifier le capteur impliqué dans la détection.
J'ai d'abord pensé qu'une utilisation intelligente de résistances en pont diviseur de tension pourrait permettre l'identification du capteur.
Malheureusement, même avec 4 capteurs, il existe des cas il faut identifier une différence de 200mV. Ce qui n'est pas une situation fiable sur une installation filaire.
Augmenter la tension
Elever la tension du signal est une bonne façon de limiter l'impact des interférences sur ce même signal.
Cependant, cela implique une interface électronique du côté du microcontrôleur afin de ne pas dépasser la tension maximale autorisée sur les entrées.
Dans l'exemple ci-dessous, la tension d'alimentation des capteurs (9V) est également utilisée comme tension de signal. Un optocoupleur est utilisé côté microcontrôleur pour réduire le signal à 3.3V max.
Dans le cas présent:
- Detection = LED Allumé = OptoCoupleur "Ouvert" => Opto-coupleur microcontroleur "Ouvert" => GP2 = LOW
- Non detection = LED Eteinte = OptoCoupleur "Fermé" => Opto-coupleur microcontroleur "Fermé => GP2 = HIGH
