jeudi 31 août 2017

Capteur à infrarouge passif (PIR)

Je vous présente aujourd'hui une option fort intéressante pour détecter l'arrivée d'une personne ou d'un animal:  le capteur à infrarouge passif (souvent appelé capteur "PIR" pour "passive infrared").  Ce genre de capteur est typiquement utilisé dans des systèmes d'alarme, ou encore dans des systèmes d'éclairage qui s'allument automatiquement lorsque quelqu'un entre dans la pièce et qui s'éteignent lorsqu'il n'y a plus personne.

Un capteur PIR peut être branché à un Arduino, un Raspberry Pi ou autre mais, pour certaines applications, il est tout à fait possible de l'utiliser de façon autonome sans le moindre microcontrôleur.  Aujourd'hui, je me limiterai volontairement aux caractéristiques du capteur lui-même, et à quelques applications ne nécessitant pas de microcontrôleur.  L'utilisation d'un capteur PIR avec une carte Arduino a déjà été traitée (il y a 5 ans!), et son utilisation avec un Raspberry Pi ou un STM32 Nucleo seront abordées bientôt, dans des articles distincts.

Les capteurs PIR vendus sur internet sont généralement basés sur le modèle proposé par Adafruit, L'élément caractéristique qui permet de reconnaître ce genre de dispositif au premier coup d'oeil est un petit dôme hémisphérique blanc. Au verso de la carte, on remarque un circuit électronique assez complexe (un circuit intégré spécialisé BISS0001, et une assez grande quantité de résistances et de condensateurs).


Un capteur pyroélectrique se trouve sous le dôme (vous pouvez vérifier:  le dôme est amovible). Ce capteur pyroélectrique détecte le rayonnement infrarouge que vous émettez constamment, que vous le vouliez ou non.

Voilà pourquoi on parle de capteur à infrarouge "passif":  le capteur se contente de détecter le rayonnement infrarouge émis par son environnement.  Les capteurs actifs, quant à eux, vont plutôt émettre un rayonnement pour ensuite capter la partie transmise ou réfléchie de ce rayonnement (exemples de capteurs actifs:  une LED infrarouge couplée à un phototransistor, un télémètre Sharp, etc.).

Si vous vous déplacez dans l'environnement du capteur, il en résultera des variations du rayonnement infrarouge détecté.  Le reste du circuit est conçu pour réagir à ce changement.

Le dôme hémisphérique agit comme une lentille qui aide à rediriger le rayonnement infrarouge vers le capteur.  Ça permet de détecter le mouvement sur une distance allant jusqu'à environ 7 mètres, à l'intérieur d'un cône d'environ 120°.

Les connecteurs


Le module PIR comporte 3 connecteurs:

  • GND:  La masse, qu'on branche à la borne négative de la source d'alimentation.
  • OUT:  C'est la sortie du capteur.  Sa tension est nulle lorsqu'aucun mouvement n'est détecté, et elle passe à 3,3 V lorsqu'un mouvement est détecté.
  • +5V:  À brancher à la borne positive de la source d'alimentation.  5 V est l'idéal.  La présence d'un régulateur de tension sur la carte vous permet d'excéder cette valeur (jusqu'à 12 V en principe).  Vous ne pouvez pas utiliser une alimentation de 3,3 V, toutefois.



On peut voir tout de suite à quel point le capteur sera facile à utiliser avec un microcontrôleur:  une sortie de 5 V est disponible sur pratiquement toutes les cartes (même celles qui utilisent un niveau logique de 3,3 V).  Le signal de sortie de 3,3 V est parfaitement adapté au Raspberry Pi, mais est suffisamment élevé pour être correctement traité par l'Arduino Uno.

Les potentiomètres


Le module comporte également deux potentiomètres:  un pour la sensibilité, l'autre pour la durée.



Le potentiomètre de sensibilité (celui de gauche sur la photo ci-dessus) vous permet de modifier l'ampleur du mouvement qui sera nécessaire pour déclencher la sortie du capteur.  On augmente la sensibilité en tournant le potentiomètre dans le sens horaire.  Lorsque la sensibilité est réglée à un niveau élevé, le capteur est en mesure de détecter des mouvement plus subtils, situés plus loin du capteur (sans excéder 7 m environ), mais le risque de "faux positifs" est plus élevé.

Avec le potentiomètre de durée (celui de droite sur la photo), vous contrôlez le temps pendant lequel le signal de sortie du capteur demeurera élevé suite à la détection du mouvement.  Si votre signal est traité par un microcontrôleur, un signal très court est suffisant (ça permettra à votre capteur de se remettre immédiatement aux aguets, pour la détection d'un prochain mouvement).  Mais si le capteur commande directement un système d'éclairage, vous ne voulez peut-être pas que la lampe s'éteigne aussitôt que vous demeurez immobile pendant quelques secondes... Vous augmentez le temps en tournant le potentiomètre dans le sens horaire (à la position maximale, le signal demeure haut pendant quelques minutes).

Cavalier (jumper)

Juste à côté des potentiomètres, on remarque un groupe de 3 connecteurs, dont deux sont reliés par un cavalier (jumper).

La position par défaut du jumper est celle qui est la plus proche du coin (photo de gauche ci-dessous). Dans cette configuration, le signal de sortie demeure stable suite à la détection d'un mouvement.

Si vous déplacez le jumper de façon à l'éloigner du coin (photo de droite ci-dessous), le signal de sortie sera plutôt une succession rapide de signaux hauts et bas (je n'y vois personnellement aucune utilité).



Une LED, pour explorer

Une bonne façon de vérifier  le fonctionnement correct de votre module PIR est de brancher une LED à sa sortie (avec une résistance de protection, bien entendu).





La LED devrait s'allumer lorsque vous bougez devant le capteur, et s'éteindre si vous demeurez immobile, ou si vous vous éloignez à plus de 7 mètres.  Vous pouvez ajuster les potentiomètres à des positions qui conviennent à vos besoins.

Vous avez des enfants turbulents?  Le jeu de la statue les calmera:  ça consiste à demeurer immobile le plus longtemps possible devant le capteur, sans que la petite lumière s'allume...

Éclairage automatique

J'ai fait quelques tests très concluants pour contrôler une lampe (alimentée par le courant secteur) de façon à ce qu'elle s'allume automatiquement quand j'entre dans la pièce, et qu'elle s'éteigne lorsque la pièce est vide depuis plusieurs secondes.

Pour ce faire, j'ai utilisé la prise de courant secteur munie d'un relais que j'avais fabriquée en 2013.

Lorsque le signal de sortie du capteur PIR est haut, le relais devient conducteur et la lampe s'allume.

Évidemment, les projets impliquant les hautes tensions du réseau électrique résidentiel sont toujours dangereux:  si vous n'êtes pas sûrs de ce que vous faites, ne le faites pas!

Photographie automatique

Comme dernier projet aujourd'hui:  une caméra espion qui prend automatiquement une photo lorsqu'elle détecte une présence. Ce projet est souvent proposé avec un Raspberry Pi et son module camera, mais on peut se débrouiller avec pas mal moins de puissance de calcul...

J'ai utilisé un vieil appareil photo bas de gamme dont le bouton déclencheur a été remplacé par un transistor NPN (en 2014, j'avais trafiqué l'appareil photo de cette façon pour faire du time lapse).

Le collecteur et l'émetteur sont soudés de part et d'autre de l'interrupteur, alors que la base est reliée à la sortie du module PIR (insérer une résistance de 4,7 kΩ entre la base du transistor et la sortie du PIR).

Lorsqu'un intrus entre dans la pièce, la sortie du détecteur à infrarouge devient haute, ce qui rend conductrice la jonction collecteur-émetteur du transistor:  une photo est prise, comme si on avait appuyé sur le bouton.


Yves Pelletier   (TwitterFacebook)

samedi 26 août 2017

Modifier les paramètres du module bluetooth HC-06

Comme je l'ai déjà mentionné à quelques occasions, le module HC-06 constitue une façon simple et économique d'établir une communication bluetooth avec un Arduino, un Raspberry Pi, un STM32 Nucleo, un MSP430 Launchpad, etc.

Par défaut, le nom du module (tel que vu par les autres appareils bluetooth placés à proximité) est simplement "HC-06", le mot de passe (numéro d'identification PIN) est "1234" et le baud rate est 9600.

Bonne nouvelle:  chacun de ces trois paramètres peut être modifié au besoin, grâce à des commandes AT.

Au départ, mon module HC-06 comporte les paramètres par défaut.  Ci-dessous, l'écran de ma tablette Android, qui détecte la présence d'un périphérique bluetooth nommé "HC-06".


Pour établir un lien entre mon ordinateur et le HC-06. j'utilise un convertisseur USB/TTL fonctionnant à un niveau logique de 3,3 V.  Ces petits modules très économiques sont utiles pour programmer un ESP8266 ou un Arduino Pro Mini, par exemple.

Si vous ne disposez pas d'un convertisseur USB/TTL, il est possible d'utiliser une carte Arduino comme intermédiaire.  Voici un tutoriel qui vous explique comment faire.



Il faut connecter le HC-06 au convertisseur USB/TTL de la façon suivante:
  • VCC du HC-06 --- 5 V du convertisseur USB/TTL
  • GND du HC-06 --- GND du convertisseur USB/TTL
  • RXD du HC-06 --- TXD du convertisseur USB/TTL
  • TXD du HC-06 --- RXD du convertisseur USB/TTL
J'ai aussi besoin d'un logiciel de communication série comme, par exemple, Putty ou Termite.  J'ai choisi d'utiliser le moniteur série de l'IDE Arduino.  En plus de sélectionner le bon port série et le baud rate actuel de votre HC-06, assurez-vous de régler le moniteur série à "Pas de fin de ligne".


Pour vérifier la connexion, tapez "AT" dans le moniteur série, puis cliquez sur le bouton "Envoyer". Si tout est en règle, vous devriez voir apparaître la réponse "OK".

On peut aussi vérifier quelle est la version du firmware du HC-06, en écrivant "AT+VERSION". Ça m'a retourné "OK", puis "linvorV1.80".

Passons à quelque chose de plus utile.  Vous voulez modifier le nom de votre HC-06?  Il s'agit de taper la commande "AT+NAMEnouveaunom" (où vous remplacez "nouveaunom" par le nom que vous désirez donner à votre HC-06).  J'ai décidé de le renommer "ARDUINO", puisqu'il sera branché à un Arduino.  J'ai donc écrit "AT+NAMEARDDUINO".  Remarquez qu'il n'y a pas d'espace entre la commande AT et le nouveau nom.  Le HC-06 m'a répondu "OK", puis "setname".

Vous voulez modifier le mot de passe (PIN) du HC-06 pour autre chose que "1234"?  Il s'agit d'écrire "AT+PINnouveaucode" en remplaçant "nouveaucode" par un nouveau nombre de 4 chiffres.  J'ai écrit "AT+PIN8888", et ça m'a répondu "OK" et "setPIN".

Finalement, si vous désirez modifier le baud rate, vous écrivez une des commandes suivantes: "AT+BAUD1" (pour une vitesse de 1200 baud),  "AT+BAUD2"(pour une vitesse de 2400 baud), "AT+BAUD3" (4800), "AT+BAUD4" (9600), "AT+BAUD5 (19200), "AT+BAUD6" (38400), "AT+BAUD7" (57600), "AT+BAUD8"(115200), "AT+BAUD9" (230400), "AT+BAUDA" (460800), "AT+BAUDB" (921600) ou "AT+BAUDC" (1382400).

À l'écran du moniteur série, les réponses du HC-06 s'affichent l'une à la suite de l'autre, sans espace ni fin de ligne:



Maintenant, mon appareil Android détecte un périphérique bluetooth nommé "ARDUINO", et j'ai dû utiliser le code "8888" pour autoriser l'appairage.



Yves Pelletier   (TwitterFacebook)

vendredi 18 août 2017

Module bluetooth HC-06 et MSP430 Launchpad (Energia)

Maintenant que nous savons comment utiliser un module bluetooth HC-06 avec Arduino, Nucleo et Raspberry Pi, voyons comment procéder avec un MSP430 Launchpad de Texas Instruments (en utilisant l'IDE Energia, qui permet de programmer le Launchpad en utilisant les mêmes instructions que pour un Arduino).

En plus d'un MSP430 Launchpad  et d'un module HC-06, vous aurez besoin d'un autre dispositif capable de communiquer par Bluetooth comme, par exemple, un smartphone ou une tablette.

Connexion du module HC-06 au Launchpad

Les branchements sont les suivants:

  • VCC du HC-06 :  Vcc du Launchpad
  • GND du HC-06 : GND du Launchpad
  • TXD du HC-06 : P1.1 (RXD) du Launchpad*
  • RXD du HC-06:  P1.2 (TXD) du Launchpad*

* Attention:  j'ai utilisé un Launchpad comportant le microcontrôleur MSP430G2553;  sur d'autres modèles (MSP430G2452), les broches TXD et RXD sont inversées!


Il est indiqué au verso de mon module que l'alimentation doit se situer entre 3,6 V et 6 V. Toutefois, mon module fonctionne très bien avec la sortie 3,3 V du Launchpad.  Si ce n'est pas le cas chez vous, vous pouvez toujours utiliser la sortie 5 V "secrète", située sous le connecteur mini-USB du Launchpad (il faut souder une broche dans le trou TP1).


Aussitôt que le module HC-06 est alimenté, une LED rouge se met à clignoter, ce qui indique l'absence de liaison bluetooth avec un deuxième appareil (une fois cette connexion établie, la LED restera allumée, sans clignoter).

Couplage avec un appareil hôte

S'il s'agit de la première utilisation de ce module HC-06 avec le deuxième appareil (smartphone, tablette, ordinateur) il faut coupler les deux dispositifs.  Voici la procédure pour l'appairage avec un appareil android (c'est similaire si vous utilisez autre chose qu'un appareil android).

Dans Paramètres, Bluetooth, assurez-vous d'abord que Bluetooth est activé.  S'il est alimenté, le module HC-06 devrait figurer dans la liste des appareils disponibles.



Cliquez sur le nom du module. Par défaut, le mot de passe est "1234" (si ce mot de passe ne vous plaît pas, il est possible de le modifier).


Si tout se passe bien, le HC-06 apparaît ensuite dans la liste des périphériques couplés.



À cette étape, la LED rouge du module HC-06 continue de clignoter.  Ce n'est que lorsque la connexion sera établie avec une application de l'appareil android qu'elle demeurera allumée de façon continue.

Appli bluetooth

Il existe tout plein d'applications android permettant la communication bluetooth.  Pour effectuer mes tests, j'ai utilisé avec succès Serial Bluetooth Terminal par Kai Morich, mais plusieurs autres options sont possibles.  Vous pouvez même utiliser l'application réalisée dans cet article au moyen de MIT App Inventor.

Après avoir démarré Serial Bluetooth Terminal, il est important d'établir la communication bluetooth avec le Nucleo en cliquant sur le bouton illustré ci-dessous:


Lorsque la communication est établie, le bouton change de forme, et la LED rouge du module HC-06 cesse de clignoter.

Un exemple de sketch

Le sketch ci-dessous est conçu pour Energia (il pourrait donc être utilisé tel quel avec une carte Arduino).  Il s'agit d'un simple compteur:  le Lauchpad émet des nombres croissants qui, si tout se passe bien, devraient être captés via Bluetooth par l'autre appareil.






Comme exemple de communication bi-directionnelle, vous pouvez utiliser le sketch diffusé dans le billet sur l'utilisation du HC-06 et Arduino:  ce sketch permet d'allumer et éteindre une paire de LEDs branchée au Launchpad grâce à des commandes envoyés par le smartphone.  Bien que conçu pour l'Arduino, il devrait fonctionner tel quel sur Energia.

Yves Pelletier   (TwitterFacebook)