Senseur PIR
Introduction
Les senseurs PIR sont utilisés par les robots/animaux humanoides pour effectuer la détection de mouvement. La distance de détection peut aller jusqu'à 6 à 7 mètres. Le senseur PIR est typiquement le type de technologie utilisée pour la détection de mouvement mis en oeuvre dans les systèmes d'alarme.
Les applications d'un senseur PIR sont multiples:
- Détection de mouvement et activation d'une oeuvre interactive.
- Détection de passage/intrusion.
- Commande d'une chatière automatisée.
- Détecteur pour commande d'installation domotique.
Montage
Il est vraiment facile de connecter un senseur PIR sur un microcontrôleur. Le PIR dispose d'une sortie digitale (ON/OFF HIHG/LOW), il suffit donc d'écouter la sortie digitale à l'aide d'une entrée du microcontrôleur. Il suffit détecter la montée du potentiel vers HIGH (détection du PIR) ou descente du potentiel vers LOW (non détection du PIR).
Il est fort probable que vous désiriez des re-déclenchement. Dans ce cas, assurez cous que le jumper est en position H!
Alimentez le PIR à l'aide de 5 Volts et connectez "Ground" à la masse (0v). Ensuite, connectez la sortie sur une entrée digitale de votre microcontrôleur.
Dans cet exemple, nous employons la pin 2 comme entrée digitale pour la sortie du détecteur PIR.
Code
Le code est assez simple, il ne fait que surveiller l'état Haut/Bas (HIGH/LOW) de la Pin 2.
Il surveille également le changement d'état de la Pin 2, ce qui permet d'afficher un message quand un déplacement est détecter (lorsqu'il commence) et lorsque le mouvement à cessé.
/* * Test du senseur PIR */ int ledPin = 13; // Pin choisie à cause de sa LED (visible sur la carte) int inputPin = 2; // Pin d'entrée choisie pour surveillé le senseur PIR int pirMotionState = LOW; // Pour commencer, nous considérons qu'il n'y a pas de nouvement. int val = 0; // Variable utilisée pour lire l'entrée Pin 2 (valeur du PIR) void setup() { pinMode(ledPin, OUTPUT); // déclarer LED comme sortie pinMode(inputPin, INPUT); // déclarer le Senseur comme entrée Serial.begin(9600); } void loop(){ val = digitalRead(inputPin); // Lire la valeur d'entrée if (val == HIGH) { // Vérifier si l'entrée est HIGH digitalWrite(ledPin, HIGH); // Allumer la LED (activité PIR) if (pirMotionState == LOW) { // Si l'état du PIR est LOW, comme nous venons de détecter un mouvement // nous changeons l'état pirMotionState à HIGH (mouvement détecté) Serial.println("Mouvement détecté!"); // Nous affichons le message seulement quand la sortie change pirMotionState = HIGH; } } else { digitalWrite(ledPin, LOW); // Eteindre la LED (plus d'activité PIR) if (pirMotionState == HIGH){ // Si l'état PIR est HIGH (mouvement détecté) et que la sortie du PIR // passe à LOW, c'est que le mouvement à cessé! Serial.println("Mouvement terminé!"); // Nous affichons le message que pour le changement d'état (détection mouvement) pirMotionState = LOW; } } }
Notes
Il y a des montages ou l'utilisation d'un microcontroleur n'est pas forcement nécessaire. Vous pouvez connecter un relais (par l'intermédiaire d'un transistor) pour commander directement un montage sans l'intervention d'élément programmable.
Où Acheter
Vous pouvez vous procurer le Senseur PIR sur le [mchobby.be/PrestaShop WebShop de MCHobby].
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.