Ligne 1 : |
Ligne 1 : |
| {{Spark-Core-Hacking-NAV}} | | {{Spark-Core-Hacking-NAV}} |
| | | |
− | == Switch Magnétique == | + | == Senseur PIR == |
| | | |
− | Aussi appelé contact magnétique, {{pl|60|disponible ici}}, ce contact utilise un [http://fr.wikipedia.org/wiki/Interrupteur_reed interrupteur reed] <small>(''Wikipédia'')</small> et un aimant pour activer un contact.
| + | Savoir lire l'état d'une entrée du port GPIO du Raspberry PI est une action fondamentale en hacking électronique.<br /> |
| + | Nous l'avions déjà abordé avec la lecture de l'état un bouton.<br /> |
| + | Dans cet article, nous allons détecter l'activation d'un senseur de proximité PIR à l'aide d'un Raspberry PI. |
| | | |
− | Un contact magnétique est constitué de deux parties.
| + | [[Fichier:SenseurPir.jpg]] |
− | # Un aimant
| |
− | # Le contact magnétique (aussi appelé Reed switch).
| |
| | | |
− | [[Fichier:ReedSwitch.jpg]]
| + | Voici un exemple qui vous propose de lire l'état du senseur PIR placé sur la broche le D4.<br /> |
− | | + | Une Led rouge est placée sur le D1, elle est allumée dans lorsque le senseur PIR détecte un mouvement. |
− | Ces contacts,faciles à mettre en oeuvre, servent généralement à détecter l'ouverture d'une porte ou d'une fenêtre.
| |
− | Si vous disposez d'un système d'alarme à la maison vous avez probablement noté ces petits boitiers blancs à proximité des fenêtres.
| |
− | | |
− | Les contacts magnétiques sont généralement ouvert au repos (c'est a dire "non sollicité par un aimant").<br />
| |
− | Lorsque l'on place l'aimant à proximité, le contact se ferme. En étant attentif, il est parfois même possible d'entendre le contact se fermer.
| |
− | | |
− | Le principe physique d'un contact reed est identique à celui d'un bouton poussoir... c'est un contact!.
| |
− | | |
− | Par conséquent, nous vous recommandons fortement [[Spark-Core-Bouton|la lecture de notre tutoriel sur le bouton poussoir]] et la section décrivant la protection d'une entrée digitale et le déparasitage logiciel.
| |
− | | |
− | == Logique inversée ==
| |
− | Le principe de lecture d'un bouton poussoir et d'un contact magnétique est identique.
| |
− | | |
− | Il y a cependant une différence de logique:
| |
− | * Lorsque la porte est fermée, l'aimant active l'interrupteur reed et le contact est fermé.
| |
− | * Lorsque la porte est ouverte, l'aimant s'éloigne de l'interrupteur reed et le contact s'ouvre.
| |
− | | |
− | Dans le cas ci-présent, il ne faut pas détecter la fermeture d'un contact (comme le bouton poussoir) '''mais l'ouverture d'un contact'''.
| |
| | | |
| + | == Matériel == |
| + | * Un {{pl|53|breadboard}} et {{pl|34|des fils extra souples}} |
| + | * Un {{pl|61|senseur PIR}} |
| + | * 1 x {{pl|128|résistance de 1K Ohms}} (Brun, Noir, Rouge) |
| + | * 1 x Led Rouge |
| + | * 1 x {{pl|518|Spark Core}} |
| == Montage == | | == Montage == |
− | Comme pour le bouton poussoir, le montage est élémentaire et utilise une résistance pull-down de 10 KOhms (brun, noir, orange) et une résistance de protection de 100 Ohms (brun, noir, brun).
| + | La sortie du senseur PIR est une '''sortie active''' qui place le potentiel à GND/Masse ou 3.3V en fonction de l'état du senseur PIR. |
| | | |
− | [[fichier:SPARK-MAGNETIC-SWITCH_bb.jpg|640px]] | + | [[fichier:SPARK-PIR_bb.jpg|640px]] |
| | | |
− | Lorsque le contact est fermé (la porte fermée), 3.3V est appliqué sur la broche D4... lorsque la porte est ouverte, le contact reed s'ouvre et la broche D4 est ramenée à la masse par la résistance pull-down. | + | Lorsque le senseur PIR détecte une activité, il active sa sortie, ce qui applique 3.3V sur la broche D4. Cette sortie PIR reste active pendant plusieurs secondes... à la suite de quoi le potentiel est ramené la masse (broche D4 est donc à 0 volt). |
| | | |
| == Code == | | == Code == |
Ligne 41 : |
Ligne 29 : |
| | | |
| <nowiki>// ------------------------------------------------- | | <nowiki>// ------------------------------------------------- |
− | // Internet Magnetic - Détection d'ouverture de contact Reed | + | // Internet PIR - Détection de mouvement avec senseur PIR |
| // ------------------------------------------------- | | // ------------------------------------------------- |
| // | | // |
| // Exemple didactique dont le but est: | | // Exemple didactique dont le but est: |
− | // 1) De détecter l'ouverture de contact reed (switch magnetic) avec | + | // 1) De détecter l'activation d'un senseur PIR avec |
| // avec déparasitage logiciel. | | // avec déparasitage logiciel. |
| // 2) Reporte cette information dans une variable "counter" sur Spark Cloud | | // 2) Reporte cette information dans une variable "counter" sur Spark Cloud |
− | // (le nombre d'ouverture) permettant à un autre logiciel comme | + | // (le nombre de détection) permettant à un autre logiciel comme |
| // un SmartPhone de détecter l'événement. | | // un SmartPhone de détecter l'événement. |
− | // 3) Reporte le statut actuel du senseur dans la variable "close". | + | // 3) Reporte le statut actuel du senseur dans la variable "actif". |
− | // Permet de savoir si le contact/porte est fermé. | + | // Permet de savoir si le senseur est actuellement actif. |
− | // Pratique par exemple pour la cabane de jardin, chambre froide, | + | // Pratique par exemple pour savoir s'il y a de l'activité dans une |
− | // box du cheval (s'il est de sortie... donc porte ouverte), etc | + | // pièce (ex: surveiller un stock en pleine nuit). |
| // 3) Offrir une fonction "reset" sur Spark Cloud permettant | | // 3) Offrir une fonction "reset" sur Spark Cloud permettant |
| // a un autre logiciel de remettre le compteur "counter" à zéro. | | // a un autre logiciel de remettre le compteur "counter" à zéro. |
| // Force la relecture de l'entrée digital et la mise à jour | | // Force la relecture de l'entrée digital et la mise à jour |
− | // de la variable "open" | + | // de la variable "actif" |
| // | | // |
| // Voyez le tutoriel MCHobby | | // Voyez le tutoriel MCHobby |
− | // http://wiki.mchobby.be/index.php?title=Spark-Core-Switch-Magnetic | + | // http://wiki.mchobby.be/index.php?title=Spark-Core-PIR |
| // Produit disponible chez MCHobby: | | // Produit disponible chez MCHobby: |
− | // http://shop.mchobby.be/product.php?id_product=60 | + | // http://shop.mchobby.be/product.php?id_product=61 |
| // | | // |
− | // contact magnétique/contact reed branché sur la broche D4 | + | // Sortie du senseur PIR branché sur la broche D4 |
| #define btnPin 4 | | #define btnPin 4 |
| | | |
Ligne 72 : |
Ligne 60 : |
| | | |
| // Créer les variables internes au programme | | // Créer les variables internes au programme |
− | int contactState; // etat du bouton | + | int pirState; // etat du senseur PIR |
| | | |
| /* Exécuté une fois au démarrage */ | | /* Exécuté une fois au démarrage */ |