jeudi 23 novembre 2017

Afficheur 8 chiffres, 8 LEDs, 8 boutons TM1638 et STM32 Nucleo

J'ai déjà eu l'occasion de parler des modules d'affichage "LED and KEY", qui comportent 8 chiffres, 8 LEDs et 8 boutons poussoirs, le tout contrôlé par un circuit intégré TM1638: au cours des derniers mois, je les ai utilisés avec une carte Arduino, et ensuite avec un ATTiny85.

Cette fois-ci, j'en ai utilisé un avec une carte STM32 Nucleo (programmée sur mbed, comme d'habitude).

Le circuit

Les branchements sont un peu particuliers, puisque sur le module d'affichage, une seule broche est consacrée à l'envoi et à la réception des données, alors que sur la carte Nucleo, les données sont reçues par la broche MISO et envoyées par la broche MOSI.

Par conséquent, les broches MISO et MOSI de la carte Nucleo sont toutes les deux branchées à la broche DIO du module TM1638, en prenant soin, cependant, de placer une résistance de 1 kΩ entre MOSI et DIO.

  • Broche VCC du module afficheur:  sortie 3V3 du Nucleo
  • Broche GND du module afficheur:  broche GND du Nucleo
  • Broche STB du module afficheur:  broche CD/D10 du Nucleo
  • Broche CLK du module afficheur:  broche SCK/D13 du Nucleo
  • Broche DIO du module afficheur:  broche MISO/D12 et résistance de 1 kΩ - broche MOSI/D11 du Nucleo



Importation de la bibliothèque

Après avoir créé un nouveau projet dans mbed, on y importe la bibliothèque TM1638 par Wim Huiskamp.

Premier exemple:  affichage d'un nombre croissant

Ce premier script affiche un nombre entier qui augmente d'une unité à chaque demi seconde.



Deuxième exemple:  utilisation des boutons

Dans ce deuxième script, on affiche un numéro et on allume une LED chaque fois qu'un des 8 boutons est enfoncé.






Yves Pelletier   (TwitterFacebook)

dimanche 19 novembre 2017

Nouveau Launchpad MSP430FR2433


Texas Instruments offre son nouveau modèle de MSP430 Launchpad au prix spécial de $4,30 jusqu'au 31 décembre 2017 , à la condition d'utiliser le code-coupon "NewMSP430LP" (le prix régulier est de $9,99).  De plus, en Amérique du Nord, la livraison est gratuite (j'ignore toutefois si c'est également le cas en Europe).

Puisque j'utilise depuis 6 ans mon vieux modèle MSP430G2 (basé sur le microcontrôleur MSP430G2553), je me suis dit que l'occasion était belle de renouveler un peu mon matériel.

Lorsqu'on compare le nouveau MSP430FR2433 avec l'ancien MSP430G2, quelques différences sautent aux yeux:
  • Une broche fournissant une tension de 5 V est maintenant disponible (auparavant, il fallait souder une broche supplémentaire près du connecteur USB).
  • Les broches ne sont pas disposées dans le même ordre qu'avant (par exemple, P1.5 se trouve là où se situait auparavant P1.1)
  • Il y a un bouton poussoir supplémentaire (donc deux boutons et deux LEDs) en plus du bouton "reset".
  • Un espace sur la carte est spécialement conçu pour accueillir un supercondensateur (non fourni) servant d'alimentation rechargeable.
  • Le microcontrôleur n'est pas amovible.
À gauche:  mon vieux Launchpad MSP430G2.  À droite, le nouveau launchpad MSP430FR2433

Lors de la première connexion de mon Launchpad MSP430FR2433 sur un ordinateur muni de Windows 7, j'ai été témoin d'une vaine tentative d'installer les pilotes de périphérique.


Pas de panique: j'ai pu constater un peu plus tard que les pilotes s'installent correctement lorsqu'on tente de programmer la carte.

Une visite sur TI Cloud Tools

On peut programmer le nouveau Launchpad MSP430FR2433 au moyen de Code Composer Studio, ainsi qu'avec sa version en ligne "CSS Cloud". Pour l'instant, il ne semble pas supporté par Energia.

Voyons voir ce qu'on peut faire au moyen de notre navigateur internet:  je me dirige donc vers la page "TI Cloud Tools".  Un volet situé à gauche de l'écran m'invite à installer le "Cloud Agent", constitué d'une extension pour le navigateur web, et d'une application à installer localement sur l'ordinateur.  
Cette combinaison permettra à la page web d'identifier la présence du Launchpad.




Suite à l'installation du Cloud Agent, la présence du Launchpad est correctement détectée, mais son ID et son numéro de série demeurent inconnus.  Ça ne semble pas avoir affecté le fonctionnement par la suite.




Pour tester le fonctionnement correct de la carte, on peut essayer une démonstration spécialement conçue à cette fin:  "out-of-box demo", qui affiche graphiquement dans une page web la température mesurée par le capteur interne du Launchpad.

Dans le coin inférieur gauche de la page, assurez-vous que la connexion a correctement été établie avec votre carte; si c'est bien le cas, vous devriez lire  "waiting for data...".


Vous devez alors programmer la carte au moyen du menu "File", "Program Device".  (Si ce menu n'est pas disponible, vous pouvez essayer de changer le port USB au moyen du menu "Options").



Si vos pilotes de périphérique sont toujours manquants, c'est à ce moment qu'on vous proposera de les installer.


En cliquant sur le bouton situé à gauche de la carte, les températures mesurées et mises en mémoire par la carte sont présentées à l'écran sous forme de graphique.  Ça donne une idée de ce qu'il est possible d'accomplir avec l'outil "GUI Composer".


J'ai aussi fait un essai rapide avec CSS Cloud (un simple clignotement de LED) et tout a fonctionné sans problème.

Il reste à espérer qu'il sera bientôt possible de programmer cette carte avec des sketches Arduino, grâce à Energia.

Yves Pelletier   (TwitterFacebook)

mardi 14 novembre 2017

Horloge temps réel (RTC) DS3231 et Arduino

Une horloge temps réel (ou RTC pour Real Time Clock) est un circuit intégré spécialement conçu pour permettre à un microcontrôleur de connaître en tout temps la date et l'heure.

Dans le passé, j'ai déjà eu quelques occasions d'utiliser le modèle DS1307, qui est conçu pour fonctionner à un niveau logique de 5 V.  Le DS3231 dont il est question aujourd'hui s'accommode aussi bien des niveaux logiques de 5 V ou de 3,3 V; il est donc facile de l'utiliser avec Arduino, Raspberry Pi, Nucleo, etc.

Je me suis donc procuré à très bas prix un module DS3231 sur eBay.  Côté face:  le circuit intégré, deux résistances pull-up de 4,3 kΩ pour la connexion I2C, et un condensateur pour stabiliser l'alimentation.


Côté pile:  5 connecteurs femelles pour l'alimentation du module et la communication I2C, et un espace prévu pour la pile qui permet à votre horloge de continuer de tenir le temps pendant que votre Arduino n'est pas alimenté.

Petite surprise:  mon module était vendu sans support pour la pile: on doit utiliser les deux connecteurs pour y souder un support de pile, ou encore bricoler son propre support de pile.


Avantage intéressant:  vous pouvez donc choisir vous-mêmes le modèle de pile de 3 V qui vous convient le mieux, plutôt qu'être obligé de vous procurer le modèle exact dont les dimensions correspondraient à un support de pile pré-installé.

En concordance avec mon tempérament pressé et peu perfectionniste, je me suis contenté de souder un court fil conducteur à chacun des deux connecteurs.  Sur la photo ci-dessous, le fil rouge est pour la borne positive de la pile, alors que le fil noir est pour la borne négative.  C'est important de ne pas inverser la polarité...


Ensuite, un petit bout de ruban gommé pour tenir les deux fils sur la pile, et voilà:  j'ai fabriqué mon support de pile!



Le circuit

Voyons maintenant comment brancher l'horloge à une carte Arduino Uno.

Le connecteur "+" du DS3231 se branche à la sortie 5 V de l'Arduino
Le connecteur "-" du DS3231 se branche à une des broches GND de l'Arduino
Le connecteur "D" (data) se branche à la broche A4 de l'Arduino*
Le connecteur "C" (clock) se branche à la broche A5 de l'Arduino*
Le connecteur "NC" (no connect) ne se branche nulle part!

* Attention: si vous utilisez un modèle d'Arduino autre que le Uno, les connecteurs réservés pour l'I2C ne sont pas nécessairement les mêmes.



Si par hasard vous vous interrogez sur la pertinence du connecteur "NC", c'est que ce module DS3231 a été spécialement conçu pour être inséré directement sur les broches GPIO du Rasbperry Pi.  Les broches du Raspberry Pi qui sont réservées à l'I2C sont adjacentes à une des sorties 3,3 V du Raspberry Pi (broches 1, 3 et 5), mais la masse est située sur la broche 9.  Le connecteur "NC" est donc là pour accueillir la broche 7, qui ne peut donc pas être utilisée.


Installation de la bibliothèque

Si ce n'est pas déjà fait, vous devez installer la bibliothèque RTCLib.  La version proposée par Adafruit est probablement la meilleure.

Résultats

Il s'agit ensuite d'ouvrir un des exemples fournis avec la bibliothèque:  la version d'Adafruit comporte un exemple intitulé "ds3231".  Si vous avez une autre version (probablement plus ancienne) de la bibliothèque, vous pouvez très bien utiliser l'exemple intitulé "ds1307", il devrait fonctionner sans le moindre problème.

Il ne reste plus qu'à modifier le sketch en fonction de vos besoins.



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