jeudi 12 octobre 2017

Capteur infrarouge passif (PIR) avec une carte STM32 Nucleo


Dans ce court billet, je vous fournis quelques informations utiles pour détecter un mouvement au moyen d'un capteur à infrarouge passif (ou PIR, pour passive infrared) branché à une carte STM32 Nucleo.

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.


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 )

dimanche 8 octobre 2017

Étude de CI: sonnette M581A

Alors que certains circuits intégrés peuvent accomplir de nombreuses fonctions très différentes l'une de l'autre, d'autres ont été conçus pour une seule tâche très spécifique.  Le M581A de Mosdesign (fiche technique) en est un bon exemple:  il sert exclusivement à produire un son de sonnette d'immeuble.

J'ai fait l'essai de la plus simple des 4 versions disponibles (le format TO-92, généralement utilisé pour un transistor).

Les trois broches du M581A sont:

VDD:  tension de 3 V (4,5 V au maximum)
OUT:  le signal de sortie
VSS:  la masse

Comme l'indique le schéma fourni dans la fiche technique, le signal de sortie est acheminé à un haut-parleur par l'entremise d'un transistor NPN (j'ai utilisé une résistance de 2,2 kΩ).

Le signal (une succession de deux fréquences) se déclenche lorsque la broche VDD est soumise à une tension de 3 V.  Pour émettre un nouveau signal, il faut rétablir l'alimentation de la broche VDD après l'avoir interrompue.  Une façon évidente d'y arriver est de placer un bouton poussoir entre la broche VDD et l'alimentation:  le son est émis chaque fois qu'on presse le bouton.


Vous pouvez entendre le résultat dans la vidéo ci-dessous.




Donc rien de bien spectaculaire, mais on obtient le résultat désiré au moyen d'un minimum de composants.  Il est par contre impossible de modifier les paramètres du son émis.

Yves Pelletier   (TwitterFacebook)

jeudi 5 octobre 2017

Une horloge à base d'ATTiny85

L'horloge affiche l'heure:  10h52min07sec
Même s'il s'agit du genre d'objet qu'on peut acheter tout fait pour un prix désisoire, c'est toujours amusant de fabriquer sa propre horloge à affichage numérique.  Aujourd'hui, je vous propose la fabrication d'une horloge numérique constituée d'un ATTiny85, d'une horloge temps réel DS1307 et d'un module "LED AND KEY" (basé sur le TM1638).

Notre horloge sera en mesure d'afficher l'heure et la date.  Grâce aux boutons inclus sur le module "LED and KEY", il sera facile pour l'utilisateur de régler à sa guise la date et l'heure.  De plus, puisque le module "LED and KEY" comporte également une série de 8 LEDs, nous utiliserons 7 de ces LEDs pour indiquer le jour de la semaine (lundi, mardi, etc.).

Installation des bibliothèques

J'ai réalisé cette horloge en programmant l'ATTiny85 avec l'IDE Arduino.  J'ai utilisé le core de David A. Mellis, avec une fréquence d'horloge de 1 MHz.  Pour plus de détails concernant l'installation de ce core, référez-vous à ce précédent billet.

Pour faciliter l'utilisation du module d'affichage LED and KEY, nous devons installer la bibliothèque TM1638 de Ricardo Batista (voir cet article qui explique une modification qui doit être apportée à cette bibliothèque lors de son utilisation avec l'ATTiny).

Quant au module d'horloge temps réel DS1307, il nécessite l'installation de deux bibliothèques spécialement conçues par Adafruit pour l'ATTiny: TinyRTCLib et  TinyWireM.

Assurez-vous donc d'avoir installé ces 3 bibliothèques.


Le sketch

L'affichage de la date et de l'heure ne nécessite que quelques lignes de code puisque les bibliothèques effectuent la plus grande partie du travail.

L'horloge affiche la date:  24 septembre 2017

Là où j'ai eu un peu plus de travail à faire, c'est dans la gestion des boutons:

Le bouton "S1" permet à l'utilisateur de basculer entre l'affichage de l'heure et l'affichage de la date.
Le bouton "S2" permet d'augmenter la valeur situé la plus à gauche sur l'afficheur (l'heure ou le jour, selon ce qui est affiché).  Si on appuie simultanément sur le bouton S8, la valeur diminue plutôt qu'augmenter.
Le bouton "S3" permet d'augmenter la valeur au centre de l'afficheur (les minutes ou le mois, donc). Encore une fois, si on appuie aussi sur le bouton S8, la valeur diminue.
Le bouton "S4" permet d'augmenter la valeur situé à droite sur l'afficheur (les secondes ou l'année), et on peut la diminuer si on appuie sur S8 au même moment.
Le bouton "S5" permet de changer le jour de la semaine, qui est indiqué par une des 8 LEDs située au-dessus de l'affichage numérique.

En ce qui concerne le jour de la semaine, cette fonction n'est pas offerte par le module RTC.  C'est donc notre sketch qui change la LED allumée lorsqu'on constate que la date vient de changer.

En plus de l'affichage numérique, nous utilisons donc 7 des 8 LEDs disponibles, et 6 des 8 boutons. Toutes les broches de l'ATTiny85 sont occupées, et le sketch occupe 58% de l'espace mémoire.



Le circuit

Lorsque l'ATTiny est programmé, on l'insère dans ce circuit:

  • La broche 8 de l'ATTiny, la broche Vcc du module LED and Key, et la broche Vcc du DS1307 sont branchées à la borne positive d'une alimentation 5 V.
  • Toutes les masses sont reliées à la borne négative d'une alimentation 5 V:  broche 4 de l'ATTiny85, broche GND du module LED and Key et broche Gnd du DS1307.
  • Broche 5 de l'ATTiny branchée à la broche Sda du DS1307.
  • Broche 7 de l'ATTiny branchée à la broche Scl du DS1307
  • Broche 2 de l'ATTiny branchée à la broche CLK du module LED and KEY
  • Broche 3 de l'ATTiny branchée à la broche STB du module LED and KEY
  • Broche 6 de l'ATTiny branchée à la broche DIO du module LED and KEY




Yves Pelletier   (TwitterFacebook)
Related Posts Plugin for WordPress, Blogger...