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)

jeudi 9 novembre 2017

MPLAB Xpress Evaluation Board: utilisation d'une entrée analogique

Dans ce troisième tuto concernant l'utilisation du MPLAB Xpress Evaluation Board, nous allons utiliser le potentiomètre de la carte pour faire varier un signal analogique qui sera mesuré par le microcontrôleur.

(Dans les billets précédents, nous avons appris comment gérer les entrées et sorties, et comment acheminer des données de la carte vers l'ordinateur.)

Commençons donc par créer un nouveau projet dans l'IDE en ligne MPLAB Xpress (voir le premier billet de la série pour plus de détails sur la façon de procéder).

Ensuite, nous utilisons MCC (MPLAB Xpress Code Configurator) pour générer quelques fichiers qui faciliteront l'utilisation du convertisseur analogique-numérique.

Cliquons deux fois sur "ADCC" dans la zone "Device Resources" de MCC.


Le module ADCC est maintenant visible dans la zone "Project Resources".


La zone centrale de MCC montre les réglage du convertisseur analogique-numérique (ADC).   Il est important que "Enable ADC" soit coché.  Il est prudent de laisser une période d'horloge au convertisseur pour faire sa mesure (régler "Acquisition Count" à la valeur "1").  "Result Alignment" (right ou left) permet de déterminer dans quel sens (horaire ou antihoraire) il faut tourner le potentiomètre pour que la valeur analogique (située entre 0 et 1023) augmente ou diminue.


Sur la carte MPLAB Xpress Evaluation Board, le potentiomètre est relié à la broche RA4.  Pour cette raison, nous allons lier le convertisseur analogique-numérique à cette broche, en cliquant sur le cadenas de la colonne  "Port A, 4"  dans la ligne "ANx".



Si vous cliquez "Pin Module" dans la zone "Project Resources", vous pouvez voir les caractéristiques de cette pin (qui est, pour l'instant, la seule utilisée sur notre carte).  Par défaut, elle porte le nom "channel_ANA4", ce qui est très laid.  Appelons-la plutôt "potentiometre".



Notre ADC est maintenant configuré:  on peut cliquer sur le bouton "Generate" pour que les fichiers appropriés s'ajoutent à notre projet.

Pour lire l'état du potentiomètre à l'intérieur d'un programme, il s'agira d'utiliser "ADCC_GetSingleConversion(potentiometre)".

Que faire avec cette valeur?  Je vous propose deux options:  la faire apparaître à l'écran de votre ordinateur, ou l'utiliser pour contrôler la luminosité d'une LED.

Exemple 1:  Affichage d'un signal analogique à l'écran de l'ordinateur

Pour que votre programme puisse transmettre des données à l'ordinateur par l'entremise du câble USB de la carte, vous devez configurer l'EUSART dans MCC.  Pour ce faire, suivez les instruction énumérées dans mon billet précédent:  Communication série avec un ordinateur.



En plus du module ADCC, votre projet comporte maintenant un module EUSART.  Vous n'avez pas oublié de cocher les cases "Enable Transmit" et  "Redirect STDIO to USART", en plus d'assigner TX et RX aux pins RC0 et RC1.

On clique sur le bouton "Generate" pour mettre à jour les fichier de notre projet.

De retour dans l'IDE MPLAB Xpress, on écrit notre programme (minimaliste!) dans le fichier "main.c":




On peut ensuite ouvrir notre programme de communication série préféré (ici, le moniteur série de l'IDE Arduino) pour observer le résultat à l'écran:


Le traceur série de l'IDE Arduino donne aussi des résultats intéressants:


Exemple 2: luminosité d'une LED contrôlée par le potentiomètre

Une autre option consiste à utiliser l'état du potentiomètre pour contrôler la luminosité d'une des 4 LEDs de la carte.

Dans MCC, en plus du module ADCC (convertisseur analogique-numérique), nous aurons besoin d'un module PWM (modulation par largeur d'impulsion) ainsi que d'un module timer, nécessaire au fonctionnement du module PWM.

En supposant que votre module ADCC a déjà été ajouté et configuré (si ce n'est pas le cas, retournez au début de ce billet pour effectuer les réglages nécessaires), vous ajouter les modules "PWM6" et "TMR4".


Dans la zone des cadenas, nous assignons le signal PWM à l'une des LEDs de la carte (pin RA0):


Cliquez sur "PWM6" dans la zone "Project Resources" afin de modifier les paramètres du module PWM.  Dans "Select a Timer", sélectionnez "Timer4".


Cliquez sur "TMR4" dans la zone "Project Resources"  pour modifier les paramètres du timer.  Dans "Clock Source", choisissez "FOSC/4".


Vous cliquez sur le bouton "Generate" afin que ces réglages soient transmis à l'IDE en ligne MPLAB Xpress.

Le programme à écrire dans le fichier "main.c" ne comporte qu'une modeste ligne de code:  il s'agit d'assigner au PWM6 (associé à notre LED) le résultat de notre convertisseur ADC (associé au potentiomètre).



Après avoir téléchargé ce programme dans la carte, vous pouvez constater que, tel que prévu, la luminosité de la LED "D2" sur la carte varie lorsque vous tournez le bouton du potentiomètre.

Sources:

Pour la rédaction de ce billet, j'ai consulté cette vidéo et ce tuto mis en ligne par Microchip.


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