dimanche 17 août 2025

Programmer une carte TI Launchpad avec l'IDE Arduino

Les Launchpads sont des cartes de développement, assez similaires au cartes Arduino, commercialisées par la compagnie américaine Texas Instruments. Dans cet article, je présente l'installation des fichiers qui permettent de programmer les Launchpads à même l'IDE Arduino.

 

Mise en garde 

Avant d'aller plus loin, je tiens à préciser je ne recommande pas l'utilisation de ces cartes de Texas Instruments avec l'IDE Arduino. Ces cartes sont très peu utilisées par les amateurs qui font de l'électronique de façon récréative. En cas de problèmes il est difficile de trouver quelqu'un qui peut répondre à nos questions. De plus, rien ne garantit qu'Andreas Taylor, qui a adapté les fichiers dont je vous parle aujourd'hui, aura le temps et la motivation de les maintenir à jour indéfiniment.

Le MSP430 Launchpad et moi... 

Quelqu'un pourrait alors se demander pourquoi je me donne la peine d'utiliser des cartes dont je ne recommande pas l'utilisation. La raison est simple: je possède 3 cartes TI Launchpad que j'ai acquises entre 2012 et 2017, pour la simple raison que TI les vendait à un prix de lancement ridiculement bas ($4,30, livraison incluse).

Au départ, j'avais tenté de programmer mon premier Launchpad en utilisant Code Composer Studio, qui est encore de nos jours le logiciel de développement recommandé par TI. C'est un environnement de développement professionnel, très complet...que j'avais profondément détesté. 

Quelques mois plus tard, Robert Wessels lançait un logiciel nommé Energia, qui permettait de programmer les MSP430 Launchpad en utilisant la syntaxe Arduino. En fait, Energia était une copie exacte de l'IDE Arduino de l'époque (la version pré-1.0). Au moment où j'écris ces lignes, Energia est encore disponible, mais n'est plus supporté depuis 2019. De toute façon, si on désire utiliser la syntaxe Arduino, c'est plus pratique d'utiliser le véritable IDE Arduino (ce qui était impossible lors de la création d'Energia, puisque la fonction "Gestionnaire de cartes" n'existait pas encore). 

Installation des cartes TI Launchpad dans l'IDE Arduino

J'ai testé l'installation sur une version récente d'Arduino (2.3.6) dans Windows 11. Vous pouvez trouver d'autres information utiles sur la page gitHub d'Andy4495.

Pour que les cartes de Texas Instruments deviennent disponible via le gestionnaires de cartes de l'IDE Arduino, il faut d'abord aller dans le menu Fichier - Préférences.

 


Complètement en bas de la boîte de dialogue, vous trouverez le champ intitulé "URL de gestionnaire de cartes supplémentaires". 


Vous devez y copier l'adresse suivante:

https://raw.githubusercontent.com/Andy4495/TI_Platform_Cores_For_Arduino/main/json/package_energia_optimized_index.json 

(si d'autres adresses sont déjà présentes dans ce champ, vous pouvez les séparer par des virgules)

Lorsque c'est fait, on ferme le dialogue de préférences (bouton OK), et on va dans le menu "Outils -  Carte - Gestionnaire de cartes...".


Dans la liste des cartes disponibles, il devrait maintenant y avoir quelques cartes dont le nom débute par "Energia". 

Pour les cartes Energia MSP430, deux options sont offertes: 

  • "Energia MSP430 boards" : elle utilise le vieux compilateur GCC 4.6 qui était utilisé dans la dernière version d'Energia, en 2012. 
  • "Energia MSP430 boards (GCCv9)" : elle utilise une version plus récente du compilateur (2020), qui n'a pas été beaucoup testé en combinaison avec Arduino.

J'ai installé "Energia MSP430 boards (GCCv9)". Rien n'empêche d'installer les deux versions, ou d'installer l'autre plus tard en cas de problèmes. L'installation des fichiers peut prendre plusieurs minutes.

Puisque qu'une de mes cartes est un Stellaris Launchpad, j'ai aussi installé "Energia TivaC boards".

À partir de là, un tas de nouvelles cartes devraient s'afficher dans le menu "Outils - Carte - Energia MSP430 boards (GCCv9)". Évidemment, vous choisissez celle qui vous désirez programmer. 

 

Les pilotes USB (Windows)

Si vous êtes sous Windows, il faut installer des pilotes USB. J'ai trouvé les miens sur cette page du site de Texas Instruments. Pour les télécharger, j'ai été obligé d'ouvrir un compte gratuit "MyTI", de jurer que je ne vis pas à Cuba et que je n'utiliserai pas ces fichiers à des fins militaires, etc. 

J'ai démarré le logiciel d'installation, et ça c'est fait rapidement, sans problèmes. 

À noter toutefois que ces pilotes ne fonctionnent pas pour ma carte Stellaris, qui n'est pas basée sur le microcontrôleur msp430. Dans ses instructions, Andy4495 fournit un lien vers les pilotes qui étaient fournis avec Energia, tout en précisant qu'ils ne sont plus supportés depuis longtemps. Il indique également qu'une façon efficace d'avoir les pilotes à jour consiste à installer Code Composer Studio.

Sachez aussi que si  vous travaillez sur Linux, aucun pilote usb n'est nécessaire, mais vous devez éditer des règles udev­. Les informations détaillées peuvent être consultées sur la page gitHub d'Andy4495.

 

Test: clignotement des LEDs de la carte

Comme test rapide, j'ai fait clignoter les deux LEDs de la carte Launchpad (il y en a deux: une rouge et une verte).  Le sketch ci-dessous est inspiré des exemples fournis avec l'IDE Energia.

-

-

Ce test très simple a fonctionné (les deux LEDs de la carte s'allument et s'éteignent par alternance). Toutefois, je sais par expérience que des problèmes risquent de survenir lors de l'utilisation de bibliothèques. On peut présumer que certaines bibliothèques fonctionneront correctement avec le Launchpad, alors que d'autres ne fonctionneront pas. 

Yves Pelletier

 

Voici d'autres articles concernant l'ajout de cartes supplémentaires grâce au gestionnaire de cartes de l'IDE Arduino:

 Aussi, voici une liste de toutes les cartes qui peuvent être ajoutées à l'IDE Arduino.


mercredi 13 août 2025

Shield TFT Écran Tactile: accéder, malgré tout, aux entrées/sorties de l'Arduino

Dans mon article précédent concernant le shield TFT 2,8 po pour Arduino, j'avais fait état d'une certaine frustration: puisque l'écran recouvre en totalité l'Arduino Uno, il devient difficile de brancher autre chose aux entrées/sorties non-utilisées de la carte. En ce qui me concerne, un Arduino auquel on ne peut rien brancher d'autre qu'un écran tactile, ça manque un peu de polyvalence!

Une solution consisterait à ajouter, entre l'écran et la carte Arduino, un deuxième shield légèrement surdimensionné, permettant d'exposer les broches de l'Arduino. À ce propos, Adafruit propose un "wingshield" à 15 dollars américains qui fait certainement l'affaire, mais à un prix qui ne me convient pas vraiment.

Shield vendu par Adafruit
 

La solution que j'ai choisie ne fonctionnerait pas avec une carte Arduino Uno officielle fabriquée en Italie: de nombreux clones de Uno chinois comportent une deuxième rangée de connecteurs située juste à côté des connecteurs femelles principaux de la carte. 

Après avoir soudé dans ces trous des barrettes de broches recourbées à angle droit, je peux maintenant brancher à ma carte tout ce que je veux pendant que le shield TFT y est inséré. Problème réglé!

Le dessous de ma carte Uno



Pour fêter ça, je vous propose maintenant quelques sketches qui permettent d'utiliser le shield TFT en combinaison avec d'autres entrées/sorties de l'Arduino:

  1. Contrôler l'état d'une sortie numérique grâce à des boutons sur l'écran tactile.
  2. Contrôler l'état d'une sortie PWM grâce à un curseur sur l'écran tactile. 
  3. Afficher sur l'écran l'état d'une entrée numérique.
  4. Afficher sur l'écran l'état d'une entrée analogique.

Dans tous les cas, nous aurons besoin des bibliothèques énumérées dans mon article précédentAdafruit ILI9341, Adafruit GFX Library et Adafruit TSC2007

Nous prendrons soin de ne pas utiliser les broches 9 à 10 de l'Arduino, puisqu'elle sont déjà utilisées par l'écran. Quant aux broches 11, 12 et 13, elles sont réservées à l'utilisation de périphériques SPI. 

1) Sketch #1: contrôle d'une sortie numérique à partir de l'écran tactile

Dans ce premier sketch, on allume ou éteint une LED grâce à une paire de boutons "ON" et "OFF" affichés sur l'écran tactile.  Sans trop de surprise, la quasi totalité du sketch est consacrée à la gestion de l'écran (affichage des boutons et détection qu'un bouton a été touché).

 

Le circuit est minimaliste: une LED en série avec une résistance de protection connectée à la sortie numéro 6 de l'Arduino. 


Voici le sketch:

-

-

 2) Sketch #2: contrôle d'une sortie PWM à partir de l'écran tactile

Cette fois-ci, un bouton coulissant sur l'écran tactile nous permet de contrôler le rapport cyclique d'un signal PWM: l'écran devient un gradateur permettant de contrôler la luminosité de la LED.

 


Le circuit est le même que pour le sketch #2: une LED et sa résistance de protection sont connectées à la broche #6 de l'Arduino. 

Encore une fois, la majeure partie du sketch consiste à dessiner le bouton coulissant à l'écran et mettre à jour sa position en fonction de la position qu'on a touchée. 

 -

-

 

3) Sketch #3: afficher sur l'écran l'état d'une entrée numérique

Il s'agit sans doute du plus simple des 4 sketches: l'écran nous indique l'état logique (haut ou bas) d'une entrée numérique. Mais puisqu'on dispose d'un écran couleur, aussi bien en profiter pour montrer le résultat de façon graphique, en affichant l'illustration d'une LED éteinte ou allumée selon l'état de l'entrée (du coup, le sketch devient beaucoup moins simple qu'il aurait pu l'être...).

 

Bouton relâché 

 

Bouton enfoncé

Pour faire varier l'état logique de l'entrée #6, j'ai utilisé un bouton interrupteur et une résistance de tirage (pull-up) de 10 kΩ.


Presque tout le sketch consiste à dessiner la LED sur l'écran.

-

-

4) Sketch #4: afficher sur l'écran l'état d'une entrée analogique

Finalement, nous affichons à l'écran la tension reçue à l'entrée A0 de l'Arduino, avec une jauge qui ajoute une information visuelle supplémentaire.


 Pour varier la tension de l'entrée A0, j'ai utilisé un potentiomètre.

  

Et voici le sketch:

-

-

Voilà! j'espère que cet article vous aura fourni quelques idées utiles pour vos propres réalisations.

 

Yves Pelletier

 

D'autres articles qui pourraient vous intéresser:

 

mercredi 16 juillet 2025

Utilisation d'un shield TFT écran tactile pour Arduino

Dans cet article, nous explorons le shield TFT 2.8 pouces (240 X 320 pixels) pour Arduino, conçu par la compagnie américaine Adafruit.

 

Il s'agit de la version 2 (résistive) qui comporte, pour l'affichage à l'écran, un circuit intégré ILI9341 et, pour la détection tactile résistive, un TSC2007. Certains shields sont très similaires à celui-ci, mais comportent des circuits intégrés différents et, par conséquent, nécessiteront l'installation de bibliothèques différentes.

 



Shield vs module 

Dans le passé, j'ai eu l'occasion d'utiliser un écran tactile qui se présentait sous la forme d'un module plutôt que d'un shield Arduino. L'avantage principal du shield, bien sûr, c'est la facilité avec laquelle on le branche à l'Arduino: nul besoin de fouiller la documentation pour savoir quelle broche de l'Arduino se connecte à quelle broche de l'afficheur. De plus, le shield comporte les composants nécessaires pour qu'on puisse l'utiliser sans inquiétude aux tensions de 5 V fournies par un traditionnel Arduino Uno, ce qui n'est habituellement pas le cas des modules, plutôt conçus pour des tensions de 3,3 V.

Module TFT branché à un ESP32...avec beaucoup de fils
 

Un inconvénient qui m'apparaît irritant, c'est que le shield recouvre tous les connecteurs de la carte Arduino, ce qui en empêche l'accès. Si vous voulez ajouter un capteur à votre montage, vous devrez utiliser un deuxième shield, situé entre la carte Arduino et le shield TFT (à moins d'utiliser le petit connecteur Stemma/Qwicc sur le côté de l'écran). 

Évidemment, si vous souhaitez utiliser l'écran avec une carte qui n'a pas le format d'un Arduino Uno, le shield devient beaucoup moins pratique qu'un module.

Même si tout se connecte au bon endroit sans qu'on ait à y apporter la moindre attention, il peut être utile de savoir que l'affichage utilise les broches 9 (DC) et 10 (CS) de l'Arduino, alors que le lecteur de carte SD, si vous l'utilisez, a besoin de la broche 4. De son côté, le capteur tactile communique en I2C plutôt qu'en SPI.

Installation des bibliothèques

Pour que les sketches présentés ci-dessous fonctionnent correctement, vous devez installer une version à jour de trois bibliothèques conçues par Adafruit: Adafruit ILI9341, Adafruit GFX Library et Adafruit TSC2007. Comme d'habitude, la méthode la plus simple consiste à utiliser le gestionnaire de bibliothèque de l'IDE Arduino.

De tous les exemples qui accompagnent la bibliothèque Adafruit ILI9341, seul graphicstest fonctionne sans modification. Il est bien utile pour vérifier le fonctionnement correct de l'affichage à l'écran. Pour vérifier le fonctionnement correct du capteur tactile, vous pouvez utiliser l'exemple tsc2007_demo fourni avec la bibliothèque Adafruit TSC2007.

Sketch #1: 4 boutons tactiles

Dans ce premier exemple, j'ai voulu explorer la création de boutons tactiles à l'écran, ainsi que l'affichage d'images simples. Donc un jeu de 4 boutons permettra de sélectionner la forme géométrique qui s'affichera dans le bas de l'écran: un cercle, un carré, un rectangle ou un triangle. Pour ce faire, j'ai utilisé un très classique Arduino Uno.


Les lignes 18 à 21 permettent de calibrer le sketch en fonction des caractéristiques individuelles de chaque écran. En principe, les coordonnées retournées par le capteur tactile varient de 0 à 4000, mais ce n'est qu'approximatif. Pour savoir quelle valeur numérique inscrire, vous pouvez exécuter le script et noter les coordonnées brutes qui s'affichent dans le moniteur série lorsque vous touchez le coin supérieur gauche de votre écran (TS_MINX et TS_MINY), ainsi que les coordonnées qui s'affichent lorsque vous touchez le coin inférieur droit de l'écran (TS_MAXX et TS_MAXY).

La GFX library contient une classe "button" qui facilite la gestion des boutons tactiles. Les 4 boutons sont définis et dessinés aux lignes 63 à 74.

Pendant la boucle principale (loop()),  on vérifie si l'écran a été touchée (fonction read_touch, à la ligne 84). Puisque les coordonnées du capteur tactile ne correspondent par à celles de l'écran, on calcule une conversion (lignes 91 à 111).

On peut alors vérifier si la position touchée correspond à la position d'un bouton (lignes 116 à 131) et, si c'est le cas, on dessine dans le bas de l'écran la forme géométrique choisie (lignes 148 à 168).

 

-


Sketch #2: un chronomètre en mode paysage

J'ajoute un deuxième exemple, après avoir remarqué certaines complications quand on utilise l'écran en mode paysage. Question d'ajouter un peu de variété, il s'agit maintenant d'un chronomètre muni de deux boutons (marche et arrêt).

Je ne répéterai pas les explications fournies pour le premier sketch (c'est vraiment très similaire). La principale différence, c'est que l'écran affiche maintenant en mode paysage plutôt que portrait. Pour l'affichage, cette modification a été apportée à la ligne 51 : tft.setRotation(1).

Malheureusement, il ne semble pas y avoir de routine "setRotation" pour le capteur tactile: pendant que les images s'affichent en mode paysage, lorsqu'on touche l'écran, les coordonnées des positions touchées sont captées en mode portrait!

Ça complique un peu la conversion des coordonnées au lignes 93 à 112 du sketch, puisqu'il faut maintenant inverser les coordonnées x et y retournées par le capteur tactile. 

-

 

Yves Pelletier 

 

D'autres articles qui pourraient vous intéresser:

 

 

mercredi 9 juillet 2025

MIDI IN avec le Raspberry Pi Pico (Micropython)

Dans cet article, nous allons recevoir, au moyen d'un Raspberry Pi Pico programmé en Micropython, les messages MIDI générés par un clavier musical.

Il s'agit de la suite logique de mon précédent article (publié il y a presque deux ans...mieux vaut tard que jamais!) qui traitait de l'émission d'un signal MIDI.

 



Le circuit

J'ai utilisé l'interface MIDI dont j'avais parlée dans cet article. Le circuit permettant la réception de messages MIDI par un microcontrôleur nécessite l'utilisation d'un optocoupleur, afin d'éviter les boucles de masse. Plusieurs options sont possibles; j'ai choisi le H11L1 après avoir vu dans un forum de discussion qu'il s'agissait d'un bon choix pour un microcontrôleur utilisant un niveau logique de 3,3 V. Le schéma du circuit recommandé par la MIDI association peut être consulté ici.

  • La broche 1 du H11L1 est branchée à une résistance de 220 Ω, qui est elle-même connectée à la broche 4 du connecteur MIDI (DIN-5).
  • La broche 2 du H11L1 est branchée à la broche 5 du connecteur MIDI (DIN-5).
  • De plus, une diode pour petits signaux 1N914 est branchée entre les broches 1 et 2 du H11L1.
  • La broche 3 du H11L1 n'est pas connectée.
  • La broche 4 du H11L1 est reliée à l'entrée RX (UART) du Raspeberry Pi Pico, ainsi qu'à une résistance pull-up de 470 Ω qui est elle-même reliée à l'alimentation 3,3 V.
  • La broche 5 du H11L1 est reliée à la masse GND.
  • La broche 6 du H11L1 est reliée à l'alimentation 3,3 V.
(Attention, si l'optocoupleur que vous utilisez n'est pas un H11L1, son brochage pourrait être différent.)

Un câble MIDI relie le connecteur femelle DIN-5 à la sortie MIDI OUT du clavier musical alors que, du côté Raspberry Pi Pico, l'information arrivera par la broche GP5 du Raspberry Pi Pico. 

Numéro des broches du connecteur DIN-5


Script #1: affichage brut des données reçues

Ce premier exemple est volontairement minimaliste: il se contente d'afficher dans la console de Thonny tous les messages MIDI reçus en provenance du clavier musical.

La communication UART est d'abord initialisée (ligne #12). Nous utilisons le bus UART 1, qui est associé aux broches GP4 (TX) et GP5 (RX). Dans ce cas, seule la broche de réception (GP5) sera utile. La vitesse de la communication est réglée à 31 250 bauds, tel que requis par le protocole MIDI.

Ensuite, si nous recevons un message UART, nous l'affichons en format hexadécimal.

Lors de la mise à l'essai d'une première version de ce script, j'ai eu la surprise de voir s'afficher à l'écran une quantité effarante de données alors que je n'avais encore appuyé sur aucune des touches du clavier musical. Les valeurs affichées étaient 0xF8 et 0xFE qui correspondent respectivement à "Timing Clock" et "Active Sensing".  Les messages de type "Timing Clock" servent à synchroniser deux instruments MIDI pour qu'ils soient au même tempo, alors que les messages "Active Sensing" permettent de vérifier constamment qu'un appareil MIDI est toujours branché et actif. La ligne #17 du script désactive donc l'affichage de tous ces messages de type "System Real Time" pour éviter que les données générées par les actions du musicien soient noyées dans un océan de données répétitives inutiles. (Certains claviers MIDI n'émettent pas ces messages)

Affichage de messages "System Real Time"

Voici donc le script en micropython:

-

-

Voyons ce qui est affiché à l'écran lorsque j'appuie sur la note "Do2" de mon clavier:

Appui sur la touche Do2 du clavier musical

 

Trois octets sont envoyées par le clavier:

Le nombre hexadécimal 0x90 représente un message "Note On" sur le canal 1. Il indique que nous avons appuyé sur une touche du clavier. Il existe 16 canaux, qui sont officiellement numérotés de 1 à 16, mais nous les numérotons de 0 à 15 dans un programme. Le nombre hexadécimal 0x91 aurait signifié un message "Note On" sur le canal 2, le nombre hexadécimal 0x92 aurait signifié un message "Note On" sur le canal 3, et ainsi de suite jusqu'à 0x9F, qui représente un "Note On" sur le canal 16.

Un message "Note On" est toujours suivi de deux octets supplémentaires: un nombre qui représente le numéro de la note jouée, et un nombre qui représente la vélocité avec laquelle la touche a été enfoncée.

Ici, nous pouvons constater que j'ai joué la note numéro 0x24 en hexadécimal (ou 36 en décimal), qui correspond à un Do du 2e octave (cette page, qui énumère la signification des différents numéros de notes, peut s'avérer bien utile). Finalement,la vélocité de cette note était de 0x4d (ce qui correspond à 77 en décimal). Ce nombre serait plus grand si j'avais appuyé plus fort sur la touche du clavier.

Voyons maintenant ce qui s'affiche lorsque je relâche la touche de clavier que j'avais enfoncée.

Relâchement de la touche Do2 du clavier musical
 

Lorsque nous relâchons une touche, un instrument MIDI doit générer un message "Note Off". Certains instruments émettent un véritable message Note Off qui correspond à 0x80. D'autres émettent plutôt un "Note On" avec une vélocité de 0. C'est ce que vous pouvez constater sur la saisie d'écran ci-dessus: en relâchant la touche Do2 que j'avais enfoncée, le clavier musical a émis le message 0x90 (Note On), suivi du numéro de la note correspondant à la touche relâchée (0x24), et d'une vélocité nulle (0x0).

La saisie d'écran ci-dessous, réalisée avec un clavier différent, montre les données reçues lorsque la touche "Do2" est d'abord appuyée, puis ensuite relâchée (ce clavier émet un véritable message "Note Off" de 0x80).

Do2 enfoncée, puis relâchée, sur un autre clavier

 

Script #2: Interprétation des messages reçus

Dans ce deuxième exemple, je fais un effort pour présenter les données d'une façon plus compréhensible pour un être humain. Pour simplifier les choses, je me limite aux messages de type Note On ou Note Off reçues sur le canal 1 (0x80 ou 0x90). Je n'afficherai donc pas de message de type "program change", "pitch bend", etc.): le script ne réagit qu'aux touches enfoncées ou relâchées.

Cette fois, le numéro de la note s'affiche en valeur décimale, et le script détermine s'il s'agit d'un do, ou d'un sol, etc. 

La vélocité s'affiche également en valeur décimale, et le script indique si la touche a été enfoncée (note On) ou relâchée.


-

-

Et ensuite?

Maintenant que vous maîtrisez les bases de la réception d'un message MIDI, vous pourriez transformer votre Raspberry Pi Pico en un mini synthétiseur; pour ce faire, vous pourriez vous référer à cet article sur la production d'un son au moyen du Raspberry Pi Pico


À lire également:


Yves Pelletier