jeudi 17 janvier 2019

PCF8591 et ESP8266 (ou Arduino)

Le circuit intégré PCF8591 combine un convertisseur analogique-numérique à 4 canaux, ainsi qu'un convertisseur numérique-analogique (1 canal). Il peut donc servir à ajouter 4 entrées analogiques et une sortie analogique au microcontrôleur de votre choix.

Le présent billet vous guidera dans l'utilisation d'un module PCF8591, que ce soit avec une carte Arduino ou un ESP8266. À mon avis, le PCF8591 vous sera surtout utile avec un ESP8266 (qui, dans le meilleur des cas, ne comporte qu'une seule entrée analogique limitée à une tension maximale de 1 V).

Pour mes tests, j'ai utilisé un module acheté sur eBay: en plus de comporter un circuit intégré PCF8591, le module est également muni d'un petit potentiomètre, d'une photorésistance et d'une thermistance, qui peuvent être utilisés ou non, selon nos besoins.


Les 4 connecteurs situés du côté gauche du module (SDA, SCL, VCC et GND) servent à l'alimentation du module et la communication i2c avec le microcontrôleur.

Du côté droit, AOUT est la sortie analogique, qui peut prendre n'importe quelle valeur située entre 0 et 5 V (si le module est alimenté avec 5 V) ou entre 0 et 3,3 V (si le module est alimenté avec 3,3 V).  AIN0, AIN1, AIN2 et AIN3 sont les 4 entrées analogiques, qui nous permettent de mesurer la valeur d'une tension se situant entre 0 et 5 V (le le module est alimenté avec 5 V) ou entre 0 et 3,3 V (si le module est alimenté avec 3,3 V).

Le potentiomètre est relié avec la broche INPUT0, la photorésistance est reliée à la broche INPUT1, et la thermistance est reliée à la broche INPUT2.  Lorsque vous achetez le module, des jumpers acheminent le signal du potentiomètre à l'entrée AIN0, le signal de la photorésistance à l'entrée AIN1 et le signal de  la thermistance à l'entrée AIN2, mais vous pouvez évidemment retirer ces jumpers et brancher des capteurs analogiques de votre choix aux entrées AIN0, AIN1, AIN2 et AIN3.

Connexions

On branche le module PCF8591 à une carte Arduino Uno de la façon suivante:

Module PCF8591    ---    Arduino Uno
   SDA  ----------------------  A4
   SCL  ----------------------  A5
   VCC  ---------------------  5 V
   GND  --------------------  GND



Pour brancher le module PCF8591 à un ESP8266, les connexions seront plutôt:

Module PCF8591    ---    Module ESP826
   SDA  ----------------------  GPIO4
   SCL  ----------------------  GPIO5
  VCC  -----------------------  3,3 V
  GND  ----------------------  GND






Installation de la bibliothèque PCF8591

Plutôt que d'étudier la fiche technique du PCF8591, j'ai installé la bibliothèque PCF8591 conçue par xreef. Comme vous pourrez le constater dans les deux sketches ci-dessous, cette bibliothèque rend la programmation très facile.

Sketch pour lire une entrée analogique

La valeur de n'importe quelle des 4 entrées analogiques sera mesurée grâce à la fonction analogRead(). Attention: le PCF8591 est un convertisseur 8 bits, et la valeur obtenue varie donc entre 0 et 254. Par comparaison, les entrées A0 à A5 de l'Arduino sont à 10 bits, pour une résolution 4 fois plus grande (0 à 1023).

Le sketch ci-dessous affiche dans le moniteur série la valeur mesurée à l'entrée AIN0. Si le jumper est en place sur le module, vous pouvez tester le sketch en tournant le potentiomètre du module au moyen d'un tournevis: la valeur affichée dans le moniteur série variera entre 0 et 255 selon la position du potentiomètre.  Pour lire les 3 autres entrées, il s'agit évidemment de remplacer AIN0 par AIN1, AIN2 ou AIN3.





Sketch pour contrôler la sortie analogique

Le sketch ci-dessous contrôle la tension de la sortie AOUT du module, au moyen de la fonction analogWrite(). Si le module est alimenté avec une tension de 5 V, la tension de AOUT devrait être nulle si vous écrivez "analogWrite(0)" , 5 volts si vous écrivez "analogWrite(255)", et une valeur se situant entre 0 et 5 V pour un argument se situant enter 0 et 255.  Toutefois, sur mon module, "analogWrite(255)" ne donne qu'une tension de sortie de 4,13 V, soit à peu près la même valeur que si j'écris "analogWrite(210)"! J'ignore s'il s'agit d'un défaut exclusif au module que j'ai utilisé, où s'il s'agit d'un problème plus généralisé.

Pour cette raison, le sketch ci-dessous se limite à une valeur maximale de 200 comme argument de la fonction analogWrite(). Il permet de faire varier la tension de sortie de façon sinusoïdale (ou en dents de scie si vous utilisez plutôt la ligne qui a été commentée).

Voici le résultat affiché à l'écran d'un oscilloscope branché à la sortie AOUT:









Yves Pelletier   (TwitterFacebook)

mardi 15 janvier 2019

Afficheur LCD Nokia 5110 et Raspberry Pi

Il est parfois souhaitable que le Raspberry Pi affiche quelques informations sur un écran, mais sans qu'il soit nécessaire de recourir à un écran HDMI plus coûteux et plus encombrant. Dans une telle situation, l'utilisation d'un petit écran LCD de type Nokia 5110 peut s'avérer une solution intéressante.

Le présent article décrit donc l'affichage de texte et d'éléments graphiques sur un afficheur Nokia 5110, grâce à un script en Python. Les tests ont été réalisés sur un Raspberry Pi 2.

Module "Nokia 5110"

"Nokia 5110" est, en fait, le nom du téléphone qui utilisait ce modèle d'écran à la fin des années 1990. ll s'agit d'un afficheur à cristaux liquides (LCD) monochrome associé à un contrôleur Philips PCD8544, dont la résolution est de 84 X 48 pixels (sa taille est de 3,5 cm par 2,5 cm environ).

Pour faciliter les branchements avec le Rapsberry Pi ou un microcontrôleur, il existe  sur le marché deux types de breakout: le modèle rouge commercialisé par Sparkfun, et le modèle bleu commercialisé par Adafruit. Des clones de ces deux modèles sont également proposés chez les commerçants asiatiques. J'ai moi-même utilisé le modèle de type Sparkfun, mais vous pouvez sans problème utiliser les informations que je vous présente ici avec le modèle de type Adafruit.  Peu importe le modèle que vous choisissez, vous devrez probablement souder vous-même la barrette de 8 connecteurs.


Branchements de l'afficheur au Raspberry Pi

Voici la description des 8 connections à effectuer entre l'afficheur LCD et le Raspberry Pi. Notez que les symboles indiqués sur l'afficheur ne sont pas toujours identiques selon que vous utilisez le modèle Sparkfun ou le modèle Adafruit, j'ai donc essayé autant que possible d'écrire toutes les possibilités.
  • Broche Vcc de l'écran  --- Broche 17 (sortie 3,3 V) du Raspberry Pi
  • Broche GND de l'écran --- Broche 20 (GND) du Raspberry Pi
  • Broche SCE ou CS de l'écran --- Broche 24 (GPIO 8) du Raspberry Pi
  • Broche RST de l'écran --- Broche 18 (GPIO 24) du Raspberry Pi
  • Broche D/C de l'écran --- Broche 16 (GPIO 23) du Raspberry Pi
  • Broche DN (MOSI) ou DIN de l'écran --- Broche 19 (GPIO 10) du Raspberry Pi
  • Broche SCLK ou CLK de l'écran --- Broche 23 (GPIO 11) du Raspberry Pi
  • Je n'ai pas branché la broche LED de l'écran (je n'avais pas besoin du rétroéclairage).


Notez que le schéma ci-dessus est correct pour la version "Sparkfun" de l'écran. Je crois que les broches ne sont pas dans le même ordre sur la version "Adafruit" (référez-vous alors à la description plutôt qu'au schéma).

Préparation du Raspberry Pi

Si ce n'est pas déjà fait, il est important que les broches dédiées à la communication SPI soient activées.  Pour ce faire, on ouvre "Configuration du Raspberry Pi" dans le menu "Préférences" de Raspbian.


Dans l'onglet, on coche "Activé" sur la ligne "SPI".



De plus, nous avons besoin d'installer deux bibliothèques pour Python.

Pour faire l'installation de la "Python Imaging Library", on peut écrire cette ligne dans le terminal:

sudo apt-get install python-imaging



Pour l'installation de la bibliothèque Nokia d'Adafruit, ce sont 4 lignes qui devront être écrites dans le terminal:

Tout d'abord, on installe "git", au cas où il ne le serait pas déjà (il est probablement déjà installé).

sudo apt-get install git


On va chercher la bibliothèque sur GitHub:

git clone https://github.com/adafruit/Adafruit_Nokia_LCD.git


Il reste à exécuter un script d'installation qui se trouve à l'intérieur du répertoire que nous venons d'installer. On entre donc à l'intérieur de ce répertoire:

cd Adafruit_Nokia_LCD


Et on exécute le script d'installation:

sudo python setup.py install


Votre petit écran devrait maintenant pouvoir être piloté au moyen d'un script en Python. Une façon rapide et efficace de vérifier que tout fonctionne correctement consiste à explorer les 3 fichiers d'exemple qui se trouvent  à l'intérieur du répertoire Adafruit_Nokia_LCD/examples:
  • shapes.py affiche une image statique constituée d'un cercle, un carré, un triangle, un X et l'inévitable expression "Hello World!"

  • image.py affiche le contenu du fichier "happycat_lcd.ppm" (un chat)

  • animate.py montre une phrase qui bouge en formant une forme sinusoïdale.


Exemple de script

Je vous propose ici un quatrième exemple de script: après une courte animation d'ouverture (qui consiste en une pointe de tarte dont l'angle d'ouverture augmente jusqu'à devenir un cercle complet), l'écran affiche la date, l'heure et l'adresse IP utilisée par votre Raspberry Pi.  Remarquez qu'une fois le script terminé, l'écran continue d'afficher la dernière image.

Pour faciliter le débogage, le script affiche également dans le terminal une description de ce qu'il est en train d'afficher dans le LCD.


Animation d'ouverture:


Adresse IP:


Date et heure:


Pub narcissique:



Pour ceux qui préfèrent une vidéo:




Utilisation de la Python Imaging Library, en bref

Pour terminer, voici quelques informations sur la façon d'écrire et dessiner à l'écran grâce à la PIL (Python Imaging Library). Loin de moi l'idée de vous donner un cours complet sur le sujet. Vous trouverez plus d'informations ailleurs sur le web, par exemple ici.

La position de chaque pixel sur l'écran est déterminée par une coordonnée x (numéro de colonne) et une coordonnée y (numéro de ligne). La première ligne en haut de l'écran et la première colonne à gauche portent le numéro 0. Ainsi, le premier pixel en haut à gauche se trouve aux coordonnées x = 0, y = 0. Le dernier pixel en bas à droite se trouve aux coordonnées x = 83, y = 47.

Pour écrire du texte à l'écran, on utilise une commande de ce genre:

draw.text((5,10), "Bonjour", font=font)

Comme résultat, le mot "Bonjour" sera affiché à l'écran. Son point de départ sera le pixel situé aux coordonnées x = 5, y = 10.

Pour dessiner un rectangle, on peut utiliser:

draw.rectangle((5,10,70,22), outline=0, fill=255)

Dans ce cas, le coin supérieur gauche du rectangle sera le pixel situé à x =5 et y = 10. Il sera large de 70 pixels et haut de 22 pixels. Son contour sera noir (outline = 0) et il sera rempli de blanc (fill = 255).

On peut également tracer des points (pixels individuels), des lignes droites, des ellipses, des polygones, etc.  De plus, tel qu'illustré dans l'exemple "image.py", il est possible d'afficher une image enregistrée dans un fichier.

Lire aussi

Dans le même ordre d'idée, il y a aussi un tuto sur l'utilisation d'un afficheur 16 X 2 avec un Raspberry Pi (on ne peut afficher que du texte) et un autre sur l'utilisation d'un afficheur Nokia 5110 avec un Arduino.

Yves Pelletier   (TwitterFacebook)

vendredi 11 janvier 2019

Utiliser l'horloge temps réel de la Blue Pill

Un avantage intéressant de la Blue Pill, c'est qu'elle comporte une horloge temps réel (RTC ou Real time clock) intégrée (le petit truc noir encerclé sur la photo ci-contre est un résonateur 32,768 kHz). Votre Blue Pill peut donc connaître la date et l'heure sans qu'il soit nécessaire de la relier à un module RTC externe.

La bibliothèque RTClock, qui fait partie des fichiers que nous avons installés dans le dossier "hardware" lors de notre première utilisation de la Blue Pill avec l'IDE Arduino, nous facilitera grandement la tâche lors de l'utilisation de l'horloge.   Grâce à cette bibliothèque, il est facile de savoir qu'elle heure il est, quelle est la date, s'agit-il d'un lundi ou d'un vendredi, etc.

Le sketch fourni à la fin de ce billet utilise l'horloge temps réel de la Blue Pill pour afficher la date et l'heure dans le moniteur série (réglé à 9600 bauds).

Lorsque vous démarrez le programme, votre Blue Pill prétend que vous êtes en pleine célébration du jour de l'an 1970! Pas d'inquiétude: la bibliothèque RTClock utilise l'heure Unix, c'est à dire le nombre de secondes écoulées depuis le 1er janvier 1970. Puisque l'horloge vient d'être initialisée, elle indique le nombre de secondes écoulées depuis sa mise en marche et non le nombre de secondes écoulées depuis le 1er janvier 1970.



Pour remédier à la situation, le sketch contient une routine (receptionMessage()) qui permet à l'utilisateur de régler l'heure au moyen du moniteur série: il s'agit d'y entrer l'heure Unix et de cliquer sur le bouton "Envoyer".


L'horloge indique maintenant l'heure actuelle.



Pour connaître l'heure Unix actuelle (qui est, rappelons-le, le nombre de secondes écoulées depuis le 1er janvier 1970), vous pouvez utiliser un outil en ligne comme par exemple le site Epoch Converter.
Si l'heure affichée dans le moniteur série ne correspond toujours pas à votre heure locale, vérifiez si la variable fuseauHoraire, déclarée au début du sketch correspond bien au fuseau horaire dans lequel vous vous trouvez­. Il s'agit du nombre d'heures de décalage par rapport à l'heure GMT.

La routine afficheHeure() affiche la date et l'heure dans le moniteur série. Elle peut sembler un peu longue à première vue, mais une grande partie du code concerne des détails d'ajustement d'affichage (comme, par exemple, ajouter un zéro devant le nombre de secondes si la valeur est plus petite que 10).  Ce qu'il est important de savoir, c'est que:
  • day() retourne le jour (si nous sommes le 17 mars, day() vaut 17).
  • month() retourne le mois (1 pour janvier, 2 pour février, etc.)
  • year() retourne le nombre d'années écoulées depuis 1970.
  • weekday() retourne le nombre de la semaine (0 pour lundi, 1 pour mardi, etc.)
  • hour() retourne l'heure
  • minute() contient le nombre de minutes
  • second() contient le nombre de secondes



Bien entendu, vous pouvez modifier le sketch pour rendre l'horloge complètement indépendante de l'ordinateur, en affichant l'heure sur un écran LCD, et en réglant l'heure au moyen de boutons poussoirs, par exemple.

Yves Pelletier   (TwitterFacebook)

mardi 8 janvier 2019

Programmer la Blue Pill avec un adaptateur USB-série

Il y a quelques mois, je vous avais expliqué comment j'avais procédé pour programmer une carte STM32F103 "Blue Pill" avec l'IDE Arduino (projet STM32Duino). J'avais alors utilisé un dongle STLink pour lier la carte à l'ordinateur.

Mais il est tout à fait possible de programmer la carte sans utiliser de dongle STLink. Une autre option (et c'est celle que je vous propose d'explorer aujourd'hui) consiste à utiliser un adaptateur USB-série.

Adaptateur USB-Série

Si vous n'avez pas déjà un adaptateur USB-Série, vous devriez pouvoir en trouver un facilement pour moins de 2 euros sur les sites de vente en ligne (recherchez "USB TTL serial adapter 3.3V").

Il est préférable d'utiliser un modèle qui permet le fonctionnement à un niveau logique de 3,3 V (le modèle que j'utilise comporte un jumper qui peut être placé en position 3,3 V ou en position 5 V). Mais puisque les broche PA9 et PA10 qui sont utilisées pour la communication tolèrent 5 V, je suppose qu'un adaptateur USB-série fonctionnant à 5 V ne causerait pas de dommages à la Blue Pill.

Connexions

4 fils sont utilisés pour brancher la carte Blue Pill à l'adaptateur USB-Série:
  • GND de l'adaptateur USB/Série --- GND de la Blue Pill
  • RXD de l'adaptateur USB/Série --- PA9 de la Blue Pill
  • TXD de l'adaptateur USB/Série --- PA10 de la Blue Pill
  • 3V3 de l'adaptateur USB/Série --- 3.3V de la Blue Pill




Réglages de l'IDE Arduino

Je vous réfère à ce précédent article qui vous indique comment ajouter à l'IDE Arduino les fichiers qui sont nécessaires à la programmation de la Blue Pill.

Une fois ces fichiers installés, vous choisissez la carte "Generic STM32F103C series dans le menu "Type de carte".



Pour "Upload method", vous choisissez "Serial".



Téléversement du sketch dans la carte Blue Pill

Téléversons maintenant un sketch dans la Blue Pill. Il peut s'agir du sketch d'exemple "Blink", à la condition de remplacer le numéro de broche "13" par "PC13" puisque c'est à cette broche qu'est branchée la LED intégrée à la carte (si votre version de Blink utilise la constante LED_BUILTIN, vous n'avez aucune modification à effectuer).

La carte Blue Pill comporte deux jumpers. Le jumper "Boot0" (celui qui est le plus éloigné du bouton reset) doit être placé en position "1" pour que le téléversement du sketch réussisse.



Dans l'IDE Arduino, vous sélectionnez le port associé à votre adaptateur USB-Série.



Finalement, avant de cliquer sur le bouton "Téléverser", vous devez appuyez sur le bouton "reset" de la carte Blue Pill (mon doigt est trop gros pour atteindre le bouton: je suis obligé d'utiliser un crayon).



Si vous omettez d'appuyer sur le bouton reset, l'IDE affiche le message d'erreur "Failed to init the device."


Si le téléversement est un succès, vous devriez voir s'afficher une série de messages qui commencent par "Wrote address", puis finalement "Starting execution at address 0x08000000... done."



Le sketch va démarrer automatiquement après le téléversement. Par contre, pour qu'il s'exécute automatiquement lors de la mise sous tension de la carte (ou de l'appui sur le bouton reset), il faut replacer le jumper Boot0 en position 0.

Avantages/inconvénients

Comparons finalement les deux méthodes de téléversement: STLink et l'adaptateur USB-série.

Le principal avantage d'utiliser un dongle STLink, c'est que vous n'avez pas besoin d'appuyer sur le bouton reset avant chaque téléversement du programme, et vous n'avez pas à vous préoccuper de la position du jumper Boot0. Toutefois, STLink ne gère pas la communication série, ce qui peut être irritant si vous avez l'habitude d'utiliser le moniteur série pour déboguer vos programmes (c'est mon cas). Il faut alors utiliser un autre port USB de l'ordinateur pour la communication série (en utilisant, par exemple, le port USB de la Blue Pill).

L'avantage de programmer avec l'adaptateur USB-série est évident si vous possédez déjà un adaptateur USB-Série, mais n'avez  pas de dongle ST Link. De plus, l'adaptateur permet à la fois le transfert du programme et l'affichage d'informations dans le moniteur série. Par contre, la nécessité d'appuyer sur le bouton reset avant chaque transfert et l'obligation de placer le jumper Boot0 dans la position appropriée peut être agaçante, surtout au début, quand on n'en a pas l'habitude.

Yves Pelletier   (TwitterFacebook)

vendredi 4 janvier 2019

Kit: fréquencemètre et testeur de quartz

Voici un autre petit kit à souder soi-même que vous pouvez vous procurer en ligne pour une poignée de menue monnaie. Cette fois, il s'agit d'un fréquencemètre et testeur de quartz ("frequency counter and crystal tester"). Le mien m'a coûté un peu moins de 3 euros sur eBay.

Contenu du kit


Le kit est constitué des éléments suivants:
  • Un circuit imprimé ( 8 cm X 5,4 cm)
  • 1 microcontrôleur PIC16F628 et son connecteur (socket) à 16 broches.
  • 5 afficheurs 7 segments (plus grands que j'aurais cru: 1,8 cm X 1,3 cm)
  • 1 transistor NPN S9014, 1 transistor NPN S9018, 1 régulateur de tension 7550 (tous en format TO-92)
  • 9 résistances de 1 kΩ, 2 résistances de 2 kΩ et 1 résistance de 100 kΩ.
  • 5 condensateurs céramique: (3 de 22 pF, 1 de 1 nF et 1 de 100 nF)
  • 1 condensateur à capacité variable
  • 4 diodes 1N4148
  • 1 quartz de 20 MHz
  • 1 bouton poussoir
  • 1 barrette de 3 connecteurs femelles, 1 barrette de 3 connecteurs mâles.
  • Une prise d'alimentation (power jack)

Assemblage

Le circuit imprimé comporte suffisamment d'informations pour qu'on puisse se débrouiller sans manuel d'instructions.


J'ai commencé par les résistances. Il faut évidemment mettre les bonnes valeurs au bon endroit (dans mon cas, un multimètre a été nécessaire, car il était difficile de distinguer les bandes de couleur).


Ensuite, le connecteur à 16 pins (socket) pour le microcontrôleur (petite coche vers la droite).


Nul besoin de multimètre pour les condensateurs et les transistors: le numéro indiqué sur le circuit imprimé correspond à celui indiqué sur le composant.  Peu de risque d'installer un transistor à l'envers, car son profil a été dessiné sur le circuit imprimé.  La position du quartz de 20 MHz est assez évidente aussi.


Pour les 4 diodes, évidemment, on fait attention à la polarité...


La barrette de connecteurs femelles, qui servira à insérer le quartz à tester, se situe sous le condensateur "102". La barrette de connecteurs mâles, qui sert d'alimentation pour la carte et d'entrée pour un signal dont on désire mesurer la fréquence, se situe sous le régulateur 7550.


En ce qui concerne les afficheurs 7 segments, ma recommandation serait de tous les insérer, et de les souder ensuite. J'ai fait l'erreur de les placer un par un à partir de la gauche, et de les souder avant d'avoir placé leur voisin de droite. Résultat: le dernier chiffre à droite n'avait pas tout à fait assez d'espace pour être inséré à fond, et je n'avais pas envie de tout dessouder pour recommencer.  Le résultat final n'est pas très esthétique...


J'ai jugé que le format du jack d'alimentation n'était pas très pratique pour moi, et je l'ai donc remplacé par deux fils que je peux facilement brancher à une source de tension de mon choix (5 V à 9 V). Décision un peu stupide, tout compte fait, puisque la carte dispose déjà d'une deuxième paire de connecteurs pouvant être utilisés pour l'alimentation de la carte (la barrette de connecteurs mâles)...


Il ne reste plus qu'à insérer l'indispensable microcontrôleur PIC16F628 dans son réceptacle, en faisant bien attention de le mettre dans le bon sens (petite coche vers la droite), et on est prêt à tester notre nouvel appareil­­.

Si vous le branchez à une source de tension continue de 5 V à 9 V, le quatrième zéro s'allume, ce qui indique que l'appareil n'a rien trouvé à mesurer. Au bout de quelques secondes, ce zéro va s'éteindre automatiquement, pour économiser l'énergie. Notez que le bouton poussoir ne sert pas à allumer ou éteindre l'appareil: il sert uniquement à le programmer.



Test du testeur de quartz

Pour mesurer la fréquence d'un quartz, on insère une de ses broches dans le connecteur femelle de gauche, et son autre broche dans le connecteur femelle de droite. Le résultat s'affiche en MHz.



En principe, on doit pouvoir calibrer l'appareil en ajustant le condensateur à capacité variable au moyen d'un petit tournevis. Dans mon cas, cet ajustement a eu un effet très subtil, pour ne pas dire inexistant, sur la valeur affichée.

Voici quelques résultats pour différents quartz que j'ai testés:

Valeur imprimée sur le quartz -- valeur affichée par l'appareil
    2.45 MHz -- 0
    4 MHz -- 4.06657 MHz
    6 MHz -- 6.0647 MHz
    8 MHz -- 8.0645 MHz
    9.8304 MHz -- 9.8945 MHz
    16 MHz -- 16.063 MHz
    20 MHz -- 20.062 MHz
    49.920 MHz -- 16.690 MHz

Nous pouvons donc remarquer que les valeurs mesurées correspondent assez bien à ce qui est imprimé sur le quartz lorsque la fréquence se situe entre 4 MHz et 20 MHz. Toutefois, la fréquence du quartz de 2.45 MHz était probablement trop lente pour que l'appareil puisse la mesurer (il a indiqué 0, comme si aucun quartz n'avait été inséré dans le connecteur), et la fréquence de 49.920 MHz était trop rapide (la valeur maximale indiquée par le vendeur est de 50 MHz).  De plus, lors de la mesure du quartz de 4 MHz, l'appareil a d'abord affiché une fréquence beaucoup plus faible, qui augmentait progressivement jusqu'à se stabiliser à 4.006657 MHz au bout de quelques dizaines de secondes.

Test du fréquencemètre

L'appareil peut également servir à mesurer la fréquence d'une tension qui varie de façon périodique. Attention: cette tension, qu'on mesure à la broche "IN" de la barrette de connecteurs mâles,  doit se situer entre 0 et 5 V.

Le résultat est affiché en MHz si le point décimal demeure allumé de façon continue, et en kHz si le point décimal clignote.



Pour vérifier le fonctionnement de cette fonction de l'appareil, j'ai utilisé une carte Arduino pour produire un signal périodique de fréquence connue au moyen de la fonction tone().

Voici quelques résultats:

Fréquence utilisée dans le sketch -- Fréquence affichée
    1000 Hz  -- 1.057 kHz
    5000 Hz -- 5.029 kHz
    10000 Hz -- 9.993 kHz
    20000 Hz -- 19.992 kHz
    50000 Hz -- 49.710 kHz

Bouton de programmation



Le bouton poussoir permet de modifier certains paramètres de l'appareil. En maintenant le bouton enfoncé un certain temps, vous entrez en mode programmation (l'afficheur indique "ProG"). Lorsque vous relâchez le bouton, l'afficheur indique "quit" (maintenez le bouton enfoncé un certain temps pour quitter le mode de programmation).

Pendant que l'afficheur indique "quit", vous pouvez passer à d'autres menus en appuyant brièvement sur le bouton:

PSAVE: mode d'économie d'énergie grâce auquel la valeur mesurée n'est affichée que pendant quelques secondes. En maintenant le bouton enfoncé un certain temps, vous pouvez désactiver cette fonction (qui devient "noPSV").

Add: si vous maintenez le bouton enfoncé un certain temps, la valeur actuellement mesurée sera additionnée à toutes les mesures que vous prendrez ensuite.

Sub: si vous maintenez le bouton enfoncé un certain temps, la valeur actuellement mesurée sera soustraite de toutes les mesures que vous prendrez ensuite.

ZEro: vous maintenez le bouton enfoncé un certain temps pour annuler la fréquence de décalage préalablement programmée grâce à "Add" ou "Sub".

tAbLE: vous maintenant le bouton enfoncé un certain temps afin d'ajouter une fréquence de décalage pré-programmée

En bref

Pas cher, facile d'utilisation, et pas difficile à assembler.

Yves Pelletier   (TwitterFacebook)

mercredi 2 janvier 2019

Afficheur LCD 2 X 16 et STM32 Blue Pill

La "blue pill" est le surnom d'une petite carte de développement basée sur le microcontrôleur STM32F103. On peut facilement la trouver en ligne pour moins de 2 euros, et il est possible de la programmer avec l'IDE Arduino grâce aux instigateurs du projet STM32Duino . Dans ce billet, je vous explique comment contrôler un afficheur à cristaux liquide de type Hitachi HD44780 (2 lignes de 16 caractères) avec la blue pill.


Préparation de l'IDE Arduino

Dans un premier temps, s'il s'agit de votre première expérience de programmation d'une blue pill avec l'IDE Arduino, il serait important de consulter ce précédent article, qui vous indique comment préparer votre IDE Arduino, brancher la blue pill au programmateur ST-LINK, etc.

Branchements de l'afficheur à la carte

La plupart des afficheurs LCD 2 X 16 sont conçus pour fonctionner à un niveau logique de 5 V mais  interpréteront quand même correctement les signaux de 3,3 V émis par la blue pill. Il est également possible de se procurer un LCD 2 X 16 spécifiquement conçu pour fonctionner à 3,3 V.  En mode 4 bits, l'afficheur accaparera 6 sorties de votre blue pill (sans compter les broches d'alimentation).


Les broches du module LCD sont connectées de la façon suivante:

  • Broche 1 du LCD: GND de la blue pill
  • Broche 2 du LCD: sortie 5 V de la blue pill
  • Broche 3 du LCD: curseur d'un potentiomètre pouvant varier de 0 à 5 V.
  • Broche 4 du LCD: broche B12 de la blue pill *
  • Broche 5 du LCD: GND de la blue pill
  • Broche 6 du LCD: broche B13 de la blue pill *
  • Broche 7 du LCD: pas connectée
  • Broche 8 du LCD: pas connectée
  • Broche 9 du LCD: pas connectée
  • Broche 10 du LCD: pas connectée
  • Broche 11 du LCD: broche B14 de la blue pill *
  • Broche 12 du LCD: broche B15 de la blue pill *
  • Broche 13 du LCD: broche A8 de la blue pill *
  • Broche 14 du LCD: broche A9 de la blue pill *
  • Broche 15 du LCD: sortie 5 V de la blue pill
  • Broche 16 du LCD: GND de la blue pill

* Vous pouvez utiliser d'autres broches de la blue pill que celles indiquées, à la condition de modifier le sketch ci-dessous en conséquence.

Programmation d'un sketch Arduino

La bibliothèque LiquidCrystal, fournie par défaut avec l'IDE Arduino, est parfaitement compatible avec la blue pill, ce qui signifie que vous pouvez utiliser n'importe quel sketch conçu pour une carte Arduino, à la condition de modifier le numéro des broches.

Le sketch ci-dessous affiche par alternance sur le LCD les messages "Electronique en amateur" et "STM32Duino Blue Pill".



Yves Pelletier   (TwitterFacebook)

Related Posts Plugin for WordPress, Blogger...