Pour plus d'informations au sujet des capteurs PIR, je vous réfère à ce précédent billet: vous y trouverez des informations utiles concernant leur principe de fonctionnement et les réglages qu'on peut effectuer au moyen de leurs potentiomètres. Si vous préférez utiliser une carte Arduino ou encore un Raspberry Pi, il existe également des tutoriels à ce sujet.
Connexions
Le capteur nécessite une tension d'alimentation d'au moins 5 V, mais sa sortie délivre malgré tout une tension de 3,3 V qui est tout à fait appropriée pour notre Nucleo.
En théorie, les branchements sont donc:
- +5 V du PIR : 5V du Nucleo
- OUT du PIR : D7 du Nucleo
- GND du PIR: GND du Nucleo
Pourquoi ai-je précisé "en théorie"? Parce qu'aussi longtemps que je me suis obstiné à alimenter mon capteur au moyen de la sortie 5 V de ma carte Nucleo, le capteur s'est comporté de façon complètement erratique (le symptôme le plus fréquent, c'est qu'il continuait de détecter un mouvement alors qu'il n'y en avait plus depuis bien longtemps). J'ai essayé de stabiliser l'alimentation avec le vieux truc du condensateur ajouté entre les deux bornes, mais ça n'a pas apporté d'amélioration notable. Par contre, tout fonctionne à merveille si mon capteur est alimenté par sa propre source de tension.
Voici donc le circuit qui a correctement fonctionné pour moi:
Script mbed
Voici finalement un script réalisé au moyen de l'IDE en ligne mbed. Lorsqu'un mouvement est détectée, la LED verte intégrée à la carte Nucleo s'allume, et un message est envoyé à l'ordinateur par liaison série.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************************* | |
Détecteur de mouvement infrarouge passif (PIR) branché à l'entrée D7 | |
du STM32 Nucleo. | |
Lorsque le capteur détecte un mouvement, la LED intégrée à la carte Nucleo | |
s'allume, et un message est envoyé à l'ordinateur par le port série. | |
La LED s'éteint lorsque le signal du capteur PIR redevient bas. | |
Pour plus d'infos: | |
https://electroniqueamateur.blogspot.com/2017/10/capteur-infrarouge-passif-pir-avec-une.html | |
*************************************************************************/ | |
#include "mbed.h" | |
DigitalOut laLED(LED1); // LED intégrée à la carte (associée à la sortie D13) | |
DigitalIn detecteur(D7); // sortie du capteur PIR | |
Serial pc(USBTX, USBRX); // Communication série avec l'ordinateur | |
int etatPrecedent = 0; // 0 si pas de mouvmement, 1 si mouvement | |
int main() | |
{ | |
pc.printf("Demonstration detecteur de mouvement infrarouge passif.\n"); | |
while(1) { | |
if (detecteur == 1) { // mouvement détecté | |
laLED = 1; // LED allumée | |
if (etatPrecedent == 0) { // l'état vient de changer | |
pc.printf("Je detecte un mouvement!\n"); | |
etatPrecedent = 1; | |
} | |
} | |
if (detecteur == 0) { { // pas de mouvement détecté | |
laLED = 0; // LED éteinte | |
etatPrecedent = 0; | |
} | |
} | |
} | |
} |
Remarquez que si votre seul objectif est d'allumer une LED lorsque que capteur PIR détecte un mouvement, la carte Nucleo n'est pas nécessaire: le capteur PIR peut très bien piloter une LED ou un relais sans l'aide d'un microcontrôleur. Ce script se veut plutôt un exemple qui pourra servir de point de départ à un projet plus ambitieux.
Yves Pelletier ( Twitter , Facebook )
bonjour,
RépondreSupprimerje veux savoir est ce qu'on peut brancher le PIR avec une carte STM32F4 et qu'elles sont les changements prévus sur le code ? merci
what ide you r using ? and thnx
RépondreSupprimermbed
Supprimer