vendredi 28 avril 2017

Télémètre à ultrasons HC-SR04 et STM32 Nucleo


Le télémètre à ultrasons HC-SR04 permet de mesurer la distance du plus proche obstacle se trouvant devant lui.  Par exemple, il peut servir de capteur pour un robot qui évite les obstacles, pour un dispositif d'aide au stationnement d'un véhicule, pour un système d'alarme détectant la présence d'un intrus, etc.


Dans ce court article, nous branchons un télémètre HC-SR04 à une carte STM32 Nucleo.

Si vous préférez, d'autres articles expliquent comment utiliser le HC-SR04 avec un Arduino ou avec un Raspberry Pi.


Principe de fonctionnement


Le télémètre HC-SR04 est un sonar:  il émet des ultrasons, et capte leur écho.  Plus l'obstacle est éloigné, plus le délai entre l'émission de l'ultrason et la réception de l'écho sera long.

Lorsque la pin "Trig" du module est brièvement soumise à un signal logique haut, une brève impulsion ultrasonore est émise.

Lorsqu'un écho est capté, la pin "Echo" prend l'état logique haut pendant une durée égale à la durée du trajet aller-retour de l'ultrason.

Le circuit

Le module HC-SR04 fonctionne à 5 V, mais il interprétera correctement le signal numérique de 3,3 V que lui enverra le Nucleo sur la pin "Trig".  Par contre, j'ai préférer utiliser un 4050 pour abaisser à 3,3 V le signal de 5 V émis par la sortie "Echo" (il semble que les entrées du Nucleo sont conçues pour tolérer les tensions de 5 V, cette précaution est peut-être donc superflue).




En résumé, il faut brancher les choses de cette façon:

Pin Vcc du HC-SR04 -------  Pin 5 V du Nucleo
Pin Trig du HC-SR04 ------- Pin D8 du Nucleo
Pin Echo du HC-SR04 ------Pin 3 du CD4050
Pin Gnd du HC-SR04 ------ Pin GND du Nucleo

Pin 1 du CD4050 ------- Pin 3V3 du Nucleo
Pin 2 du CD4050  ------ Pin PWM/D9 du Nucleo
Pin 8 du CD4050 ------- Pin GND du Nucleo

Un petit script à utiliser sur mbed

Voici finalement un script qui affichera dans un moniteur série (celui de l'IDE Arduino, par exemple), la distance d'un obstacle, en centimètres.



(Basé sur un script par T Nara.)



Yves Pelletier   (TwitterFacebook)

mercredi 19 avril 2017

Analyseur logique: installation de sigrok PulseView sous Windows

Il y a quelques semaines, je me suis procuré un analyseur logique sur eBay, un modèle ultra-économique vendu au prix de 7 euros environ.

Dans ce court article, je vous montre comment j'ai installé le logiciel sigrok Pulseview sur Windows afin d'effectuer un premier test rapide confirmant le fonctionnement correct de l'appareil.

Je tiens à préciser que je n'avais jamais eu l'occasion d'utiliser un analyseur logique auparavant.  Il serait donc illusoire d'attendre de ma part une minutieuse comparaison avec d'autres analyseurs logiques disponibles sur le marché, ou encore un cours complet sur l'art d'utiliser efficacement ce genre d'appareil.

Il s'agit donc d'un minuscule dispositif (5 cm X 2,5 cm X 1 cm) qui se branche sur le port USB d'un ordinateur.   C'est un analyseur 8 bits, ce qui signifie qu'on peut observer jusqu'à 8 signaux logiques simultanément, à une fréquence d'acquisition maximale de 24 MHz.



Mon exemplaire était accompagné d'un câble mini-USB et de 10 câbles Dupont femelles (ce qui ne constitue pas le meilleur type de connecteur, dans les circonstances).

Évidemment, à ce prix, nous ne serons pas surpris de constater que le fabricant n'a pas été spécialement pointilleux en matière de propriété intellectuelle.  Bien que ce ne soit pas indiqué sur le boîtier  (ni dans la description sur eBay), la mention "usb Saleae  V1.1"  est clairement visible sur le circuit imprimé:  il s'agit donc d'une copie d'un analyseur conçu par la compagnie américaine Saleae.



Vice de conception assez rigolo: une LED rouge s'allume pour indiquer que l'analyseur est sous tension, mais puisque cette LED est enfermée à l'intérieur d'un boîtier opaque, il est impossible de savoir si elle est allumée ou non...  On peut voir sur le circuit imprimé qu'une deuxième LED a été omise (dans le circuit d'origine, cette LED verte sert à indiquer s'il y a de l'activité sur les canaux numériques).

Côté logiciel, deux choix s'offrent à vous:
  • sigrok:  Un logiciel libre spécialement conçu pour être utilisé avec une vaste gamme d'analyseurs logiques.  C'est la voie que je vous propose ici:  ça nous permettra peut être de nous sentir un peu moins coupables d'avoir encouragé la contrefaçon...
Nous nous dirigeons donc vers la page de téléchargement de sigrok dédiée à Windows (d'autres plate-formes sont bien sûr disponibles:  Mac, Linux, Android, etc.).  Pour ma part, je l'ai installé sous Windows 7.

On nous donne le choix entre Pulseview (interface graphique) ou sigrok-cli (interface en lignes de commandes):  j'ai choisi Pulseview,


Après avoir téléchargé le programme d'installation, bien entendu, on installe le logiciel.

MAIS CE N'EST PAS TERMINÉ...

Si vous branchez l'analyseur logique dans un port USB de l'ordinateur, Windows va tenter sans succès d'installer un pilote de périphérique.  Vous devez vous-même faire l'installation de ce pilote, grâce au logiciel "Zadig", qui a été installé en même temps que Pulseview.

Dans le menu Démarrer de Windows, vous ouvrez donc Zadig, qui se trouve à l'intérieur du répertoire sigrok/PulseView.


Pendant que Zadig est ouvert, vous branchez l'analyseur logique à un port USB de l'ordinateur.  Zadig devrait le détecter ("Unknown Device #1).  Vous cliquez ensuite sur le bouton "Install Driver".


Cette fois, le pilote devrait s'installer correctement.



Nous pouvons maintenant démarrer le logiciel PulseView.  Dans un premier temps, il faut établir la connexion avec l'analyseur logique.

Vous cliquez donc sur le bouton "Connect to Device"...


...et vous choisissez le pilote "fx2lafw (generic driver for FX2 based LAs) (fx2lafw)", l'interface USB, et vous cliquez sur le bouton "Scan for devices using driver above".

La mention "Saleae Logic with 8 channels" devrait apparaître dans la case du bas.  Il ne reste plus qu'à cliquer sur le bouton "OK".


Petit test impliquant les sorties PWM d'une carte Arduino

Comme prétexte pour utiliser mon analyseur logique, j'ai activé 5 sorties PWM de l'Arduino en utilisant plusieurs rapports cycliques différents.


J'ai branché l'analyseur logique de la façon suivante:

  • Canal 0:  Pin 3
  • Canal 1:  Pin 9
  • Canal 2:  Pin 10
  • Canal 3:  Pin 11
  • Canal 4:  Pin 5
  • Canal 5:  Pin 6


Puis j'ai exécuté le sketch suivant:


Voici le résultat, dans la fenêtre principale de PulseView:



On peut remarquer le rapport cyclique de plus en plus élevé sur les canaux 0, 1, et 2.  De plus, les canaux 3 et 4 (qui correspondent aux pins 5 et 6 de l'Arduino) ont une fréquence deux fois plus élevée que les autres.

Yves Pelletier   (TwitterFacebook)

lundi 17 avril 2017

Module RFID RC522 et Raspberry Pi (Python)


Pour la quatrième fois depuis le début du mois, je vous propose de lire le numéro de série d'un tag RFID au moyen d'un module RC522.  Cette fois, c'est un Raspberry Pi qui aura l'honneur de piloter notre module RC522, grâce à un script rédigé en Python (les articles précédents mettaient plutôt en scène un Arduino, un MSP430 Launchpad et un STM32 Nucleo).

Si vous n'êtes pas déjà l'heureux propriétaire d'un module RC522, des commerçants chinois se feront un plaisir de vous en vendre un (accompagné d'un ou deux tags RFID) pour moins de 2 euros.


Activation de SPI sur le Rasbperry Pi

Le module RC522 utilise le protocole de communication SPI.  Vous devez donc vous assurer que le SPI est activé sur votre Raspberry Pi.  Pour ce faire, vous choisissez "Configuration du Raspberry Pi" dans le menu "Préférences"...


...et vous vous assurez que SPI est activé.


(C'est fou comme les choses évoluent rapidement dans le monde du Raspberry Pi:  y a-t-il quelqu'un quelque part qui s'ennuie de raspi-config?)

Installation de la bibliothèque pi-rc522

Nous utiliserons la bibliothèque pi-rc522 par ondryaso.  Pour ce faire, la façon la plus simple (à mon avis), est d'utiliser pip:

sudo pip install pi-rc522

La bibliothèque est alors installée dans le répertoire /usr/local/python2.7/dist-packages.

Circuit (connexions)

Les connexions à effectuer sont:
  • Pin SDA du RC522 --- Pin #24 (GPIO 8) du Raspberry Pi
  • Pin SCK du RC522 --- Pin#23 (GPIO 11) du Raspberry Pi
  • Pin MOSI du RC522 --- Pin #19 (GPIO 10) du Raspberry Pi
  • Pin MISO du RC522 --- Pin #21 (GPIO 9) du Rasbperry Pi
  • Pin IRQ du RC522 --- Pin #18 (GPIO 24) du Raspberry Pi
  • Pin GND du RC522 --- Une des pins GND du Raspberry Pi
  • Pin RST du RC522 --- Pin #22 (GPIO 25) du Raspberry Pi
  • Pin 3V3 du RC522 --- Pin 3V3 du Raspberry Pi
  • LED verte (et résistance) --- Pin #15 (GPIO 22) du Raspberry Pi
  • LED rouge (et résistance) --- Pin #16 (GPIO 23) du Rasbperry Pi



Script pour récupérer l'UID

Voici un premier script en Python qui affiche  dans le terminal l'UID (numéro de série) d'un tag RFID qu'on approche du module RC522.




Sur la capture d'écran ci-dessus, vous pouvez constater que l'UID de la carte que j'ai utilisée est constituée des valeurs 144, 207, 148, 117 et 190.  Ces nombres seront utilisés dans le prochain script.


Script qui accepte ou rejette l'UID

L'idée est d'accomplir une action seulement si l'utilisateur présente un tag RFID dont l'UID est approuvé.  Avec ce script en Python, la LED verte s'allume uniquement lorsqu'on approche un tag RFID portant le bon UID.  Si on approche un tag RFID portant un autre UID, c'est la LED rouge qui s'allume.

Avant d'utiliser le script, n'oubliez pas de remplacer le contenu de la variable "bonUID" par l'UID de votre carte.

Vous pourrez ensuite modifier ce script de base pour en faire quelque chose de plus utile ou plus spectaculaire (actionner une serrure, mettre à jour une base de donnée consignant l'heure d'entrée et sortie des employés, etc.).



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