Projet 5 - Détecteur de présence
Présentation
La confection de la veilleuse automatique dans le chapitre précédent a permis d’avancer dans la compréhension des principes de domotisation de l’habitat. Faisons un pas supplémentaire en concevant un détecteur de présence qui permettra, dans le cas présent, d’émettre une alarme sonore au passage d’une personne, mais le principe pourra être décliné de multiples manières pour activer toutes sortes de dispositifs.
1. Principe de fonctionnement
Grâce à un détecteur PIR (Passive Infrared), le montage sera capable d’interpréter toute modification de chaleur liée à une présence humaine ou animale dans son champ de détection. Lorsque le PIR captera un tel changement, un signal sera envoyé à l’Arduino afin d’activer un dispositif, qui dans notre cas, sera une alarme mais cela peut être tout autre chose : une LED, une caméra, etc.
2. Notions abordées
Un nouveau dispositif, relativement populaire dans les projets Arduino, fait son apparition dans ce montage : le PIR HC-SR501. Il sera la pierre angulaire du détecteur et se chargera de toute la partie « captation de mouvement ». Nous verrons également l’usage d’un buzzer afin de pouvoir générer des sons à partir de l’Arduino....
Matériel nécessaire
Le montage est construit autour d’un composant principal, le détecteur de mouvement PIR HC-SR501.
PIR HC-SR501
Il est relativement bon marché, puisqu’il est possible de le trouver pour moins d’un euro. Il capte les ondes IR au travers de sa lentille de Fresnel, le signal est filtré et amplifié pour ensuite être traité par le circuit logique du capteur PIR qui fournit alors un état HIGH ou LOW sur sa broche de signal. Le PIR dispose de plusieurs potentiomètres afin de régler sa sensibilité, la durée du signal HIGH, et le mode de détection.
Le montage utilise également un buzzer passif afin de pouvoir programmer et générer l’alarme sonore qu’il nous plaira (à la différence d’un buzzer actif qui, de par sa conception, ne peut générer qu’un son unique).
Buzzer
Pour la partie programmation, nous utilisons une carte Arduino Uno, mais comme d’habitude, toute autre carte Arduino convient également.
Schéma et montage
Avant d’aborder la description du schéma, attardons-nous sur le fonctionnement du capteur PIR dans un premier temps afin d’en décrire toutes les caractéristiques.
Puis dans un second temps, nous verrons l’utilisation des buzzers actif et passif.
1. Le capteur PIR
Le capteur PIR repose sur la détection d’ondes infrarouges dans un rayon d’une dizaine de mètres. Or, comme nous l’avons vu dans la section Les protocoles IR, du chapitre Projet 2 - Télécommande infrarouge, tout corps chaud émet des ondes infrarouges. C’est le cas du corps humain qui, de par sa température de 37°C, émet des IR d’une certaine longueur d’onde. Le capteur PIR est conçu pour capter cette longueur d’onde précisément. Contrairement à une chaise ou une table qui reste inerte pour un capteur PIR, un corps humain (ou animal) est aisément détecté.
PIR et sa lentille
Afin de pouvoir balayer un angle d’environ 120°, le détecteur PIR est surmonté d’une lentille de Fresnel (une petite coque translucide en forme de demi-ballon de foot). Cette dernière permet de diffuser largement un rayon lumineux, ou inversement de concentrer une large bande lumineuse en un point comme c’est le cas pour notre capteur.
Le capteur PIR HC-SR501 est alimenté en 5 V, mais sa broche de signal fournit...
Programmation de l’Arduino
Le programme ne présente pas de difficultés particulières mais examinons-le tout de même en détail.
1. Les déclarations préliminaires
Comme indiqué sur le schéma, le montage utilise deux pins de l’Arduino qui doivent donc être déclarées en préambule de notre programme :
#define PIN_SIGNAL 2
#define PIN_BUZZER 11
Les déclarations préliminaires se limitent à cela puisque le programme n’utilise aucune bibliothèque spécifique.
2. La fonction setup()
Outre la déclaration et la mise en place du moniteur série sur lequel nous ne reviendrons désormais plus puisque cela est devenu un automatisme, les deux pins de l’Arduino doivent être initialisées :
pinMode(PIN_SIGNAL, INPUT);
pinMode(PIN_BUZZER, OUTPUT);
3. La fonction loop()
Le cœur du programme consiste dans un premier temps à lire la pin recevant le signal du PIR :
bool sig = digitalRead(PIN_SIGNAL);
Remarquez ici que la variable sig est déclarée et affectée en une seule instruction. C’est un raccourci de nombreux langages largement utilisé, ne vous en privez pas.
Si le détecteur PIR envoie un signal HIGH, l’Arduino doit mettre en route l’alarme :
if (sig) {
for...
Améliorations possibles
Ce montage est une version de travail et peut être amélioré pour plus de confort.
1. Rendre le projet autonome
Ce détecteur fonctionne actuellement grâce à l’alimentation USB provenant du PC, il serait judicieux d’utiliser à la place un transformateur entre 7 et 12 V. Même si l’Arduino peut supporter une alimentation entre 6 et 20 V, il n’est pas recommandé :
-
d’aller en dessous de 7 V car la pin 5 V pourrait être instable ;
-
d’aller au-dessus de 12 V car le régulateur de tension interne pourrait chauffer et endommager la carte.
2. Générer une alarme plus complexe
L’alarme actuelle est relativement simple, pourquoi ne pas tenter de créer une mélodie plus complexe ?
Et nous pouvons aller encore plus loin grâce à la bibliothèque Mozzi capable de produire des mélodies dignes d’un synthétiseur, nous verrons cela dans le chapitre Projet 6 - Synthétiseur musical.
3. N’autoriser la détection que la nuit
Une autre amélioration consiste à modifier le schéma pour y intégrer une photorésistance et pouvoir ainsi faire fonctionner l’alarme qu’à la double condition d’avoir un signal HIGH du PIR et d’être en période nocturne.
Il est même...
Ressources supplémentaires
La lentille de Fresnel :
https://www.techno-science.net/definition/2957.html
Le fonctionnement des buzzers :
https://fr.wikipedia.org/wiki/Bipeur
https://www.sonelec-musique.com/electronique_theorie_buzzers.html
Le signal PWM sur les Arduino :