Installer l’IDE Arduino et les packages pour STM32 sous Windows

L’API Arduino pour STM32, autrement appelée STM32duino, permet de programmer une liste conséquente de cartes d’évaluation de la société STMicroelectronics (ou de cartes tierce-parties conçues avec des microcontrôleurs STM32) avec l’IDE et l’API Arduino. En fait, STM32duino est également une extension de l’API Arduino apportant des outils pour tirer profit des spécificités de l’architecture STM32.

Dans cette section nous rappelons comment :

  1. Installer l’IDE Arduino 1.8.x et les bibliothèques pour les cartes et microcontrôleurs de STMicroelectronics
  2. Configurer l’IDE Arduino 1.8.x pour développer un projet avec une carte donnée.
  3. Manipuler les principales fonctions de l’IDE Arduino 1.8.x.
  4. Ouvrir un exemple de programme, le compiler en firmware et l’envoyer dans le microcontrôleur qui anime la carte.

L’IDE Arduino est sans doute l’une des plus populaires pour l’apprentissage de la programmation embarquée. Elle est facile à installer, très épurée et efficace. Il lui manque cependant des fonctions désormais courantes dans la plupart des envrionnements de développement intégrées telles que l’autocomplétion, le déboguage… Pour cette raison, une version 2 de cette IDE est actuellement en développement, mais elle est encore en phase de “béta test”. Donc, nous préférons détailler l’installation des versions 1.8.x dans un premier temps.

Etape 1 : Téléchargement et installation de l’IDE Arduino sous Windows

Commençons par installer l’environnement de développement intégré (IDE) Arduino. Téléchargez et installez la dernière version l’IDE Arduino Arduino IDE 1.8.x depuis le lien https://www.arduino.cc/en/Main/Software :


Page de téléchargement IDE Arduino


Dans l’encart de droite, sélectionnez : « Windows ZIP file ». Vous pouvez choisir « Just Download » ou « Contribute & Download » (si vous souhaitez contribuer financièrement).

NB : Si vous avez des droits d’administration sur le PC cible, vous pouvez également télécharger l’installeur par le lien « Windows, Win 7 and newer »).

Dézippez le dossier à l’emplacement souhaité (ou lancez l’installeur « arduino-1.8.xx-windows.exe » selon votre choix à l’étape 1) puis lancez « arduino.exe » depuis le répertoire ainsi créé.

Etape 2 – Téléchargement et installation du support des cartes ST dans l’IDE Arduino

Une fois l’IDE Arduino installée, ouvrez l’application et allez dans le menu « Fichiers / Préférences », volet « Paramètres » puis collez dans la boite « URL de gestionnaire de cartes supplémentaires » l’adresse suivante :

https://github.com/stm32duino/BoardManagerFiles/raw/master/package_stmicroelectronics_index.json

La fenêtre « Préférences » de l’IDE Arduino devrait avoir l’aspect suivant :


Page de préférences IDE Arduino


Etape 3 – Configuration d’un éventuel proxy

  • Si votre connexion Internet passe par un serveur proxy sélectionnez ensuite onglet « Réseaux », cochez la case « Détectez automatiquement » et renseignez le proxy avec la valeur qui convient. La configuration de cette page dépend des modalités d’administration de votre réseau local, nous vous conseillons donc de vous rapprocher de votre administrateur réseau.

  • Si votre connexion Internet ne passe par un serveur proxy la configuration par défaut (vide !) ci-après devrait faire l’affaire :


Page de proxy IDE Arduino


Etape 4 – Installation du package STM32 MCU based boards

Il faut à présent télécharger l’ensemble des bibliothèques et définitions (essentiellement des codes sources en langages C et C++) pour les cartes et microcontrôleurs de STMicroelectronics.
Allez dans le menu « Outils / Type de carte : : xxxx / Gestionnaire de carte ». Tapez « STM32 » dans la barre de recherche, en haut. Assurez-vous que la fenêtre « Gestionnaire de carte » affiche bien « STM32 MCU based boards », dans sa version 2.0.0 (ou supérieure) :


Page gestionnaire de cartes IDE Arduino


Si c’est le cas, installez cette dernière version en cliquant sur le bouton « Installer » ; cela peut prendre jusqu’à 20 minutes selon la qualité de votre connexion au réseau. Si tout s’est bien déroulé, vous devriez voir affiché « INSTALLED » :


Page gestionnaire de cartes IDE Arduino


S’il y a un problème à cause du proxy et/ou de filtrage par un pare-feu zélé l’IDE Arduino affichera des messages d’erreur, en rouge, commençant par « Erreur durant le téléchargement … » dans la zone de messages en bas de la fenêtre de l’IDE Arduino comme ceci :


Page gestionnaire de cartes IDE Arduino


Dans cette situation, nous vous conseillons de vous rapprocher de votre administrateur réseau.

Etape 5 – Vérification du bon accès aux bibliothèques Arduino

Il faut à présent vérifier que vous pourrez télécharger sans difficultés les bibliothèques dont vous aurez besoin depuis l’IDE Arduino.
Allez dans le menu « Croquis / Inclure une bibliothèque / Gérer des bibliothèques… ». Recherchez ensuite « STM32duino » dans la barre de recherche de la fenêtre « Gestionnaire de bibliothèque ». Si vous obtenez des réponses et pas de message d’erreur, tout va bien :


Page gestionnaire de bibliothèques IDE Arduino


Si cette étape est compromise, un message d’erreur en rouge de la forme « Erreur durant le téléchargement… » apparaitra en bas de la fenêtre « Gestionnaire de bibliothèque » complété par d’autres messages en rouge dans zone de messages de l’IDE Arduino, comme illustré ci-dessous :


Page gestionnaire de bibliothèques IDE Arduino


Dans cette situation, nous vous conseillons de vous rapprocher de votre administrateur réseau.

Configurer l’IDE Arduino pour programmer la carte B-L475E-IOT01A

Pour les besoins de ce tutoriel, nous avons choisi de configurer l’IDE Arduino pour programmer une carte de protoypage de STMicroelectronics de la famille Discovery, la B-L475E-IOT01A. Bien évidemmment, la procédure serait exactement la même si vous en choisissiez une autre.

Etape 1 : Sélection du groupe de cartes « Discovery »

Lancez l’IDE Arduino, puis allez dans le menu « Outils ». Cliquez sur « Type de carte », puis « STM32 boards group… » et enfin sur « Discovery ».


Menu sélection de carte IDE Arduino


Etape 2 : Sélection de la carte B-L475E-IOT01A

Retournez dans le menu « Outils ». Cliquez sur « Board part number ». Dans le menu qui s’affiche, sélectionnez enfin le modèle de la carte qui nous concerne, à savoir la « B-L475E-IOT01A ».


Menu sélection de carte IDE Arduino


Etape 3 : Sélection du port de communication

Commencez par brancher la carte B-L475E-IOT01A sur un port USB de votre PC. Sur la carte, le connecteur de type mini-USB doit être positionné comme indiqué ci-dessous, sur le connecteur USB correspondant au ST-LINK :


Connexion ST-LINK Discovery IoT Node


Retournez dans le menu « Outils ». Allez sur la ligne « Port » et sélectionnez dans le menu déroulant le port qui s’affiche (COM7 dans notre cas, mais votre IDE Arduino affichera probablement un autre numéro). Si tout est OK, il doit être coché :


Connexion ST-LINK Discovery IoT Node


Il est aussi possible que votre ordinateur propose plusieurs ports COM. Dans ce cas, le moyen le plus simple pour identifier celui de votre carte consiste à identifier quel port apparait et disparait du menu ci-dessus lorsqu’on branche et débranche le câble USB.

Etape 4 : Sélection de l’option “upload method”

Dans le menu « Outils », vérifiez que l’option du mode de chargement du firmware est bien validé sur Mass Storage.

Présentation de l’IDE Arduino 1.8.x

L’IDE Arduino dans sa révision 1.8.x est très simple et très lisible (par comparaison avec les autres environnements de développement intégrés). La figure qui suit liste ses principales fonctions :


Description IDE Arduino


Légende

  • (1) Bouton « Vérifier »
    Lorsque vous appuyez sur ce bouton, le programme écrit dans votre sketch est transformé en instructions binaires par le compilateur gcc, puis il est « lié » pour fournir un fichier appelé Firmware. Pour plus d’explications sur ces mécanismes, nous vous renvoyons à cet article.

  • (2) Bouton « Téléverser »
    Réalise les mêmes opérations que le bouton « Vérifier » et transfère finalement le firmware dans le microcontrôleur de la carte sélectionnée.

  • (3) Bouton « Nouveau »
    Ouvre un nouveau sketch vide comme le fait la commande « Fichier / Nouveau (Ctrl + N) ».

  • (4) Bouton « Ouvrir »
    Appelle la commande « Ouvrir » autrement accessible par « Fichier / Ouvrir (Ctrl + O) ». Ouvre un sketch sélectionné par l’utilisateur.

  • (5) Bouton « Enregistrer »
    Appelle la commande « Enregistrer » autrement accessible par « Fichier / Enregistrer (Ctrl + S) ». Enregistre un sketch sélectionné par l’utilisateur.

  • (6) Bouton « Moniteur série »
    Appelle le moniteur série connecté au ST-LINK pour afficher les messages générés par les appels à Serial.print(...); (et ses variantes). La fenêtre du moniteur série a l’aspect ci-dessous, pour une carte connectée au port COM4 (sous Windows).


Connexion ST-LINK Discovery IoT Node


Vous noterez que le débit du port série doit être précisé dans cette fenêtre, ici 9600 bauds, ainsi que le format du séparateur de ligne. Ces valeurs doivent être les mêmes que celles écrites dans le sketch Arduino autrement l’affichage sera illisible.

  • (7) Pour gérer les onglets
    L’IDE est capable de gérer plusieurs onglets via ce menu.

  • (8) Fenêtre de l’éditeur
    C’est là que s’affiche le listing en C++ du programme Arduino, que vous pourrez le modifier.

  • (9) Barre de statut
    Indique ce que l’IDE est en train de faire (compilation, transfert du sketch…).

  • (10) Zone de messages
    Ici s’affichent les messages de compilation, les messages de link, les messages d’erreur, etc. Il est possible de copier son contenu (qui peut être conséquent) dans le presse-papier.

  • (11) Informations sur la configuration
    Rappelle une partie des informations renseignées dans le menu « Outils ».

Autres outils et raccourcis bien pratiques

  • Dans le menu « Outils », le raccourci « Formattage automatique Ctrl + T ». N’hésitez pas à en abuser ! Il force l’indentation de votre code, ce qui contribue à améliorer sa lisibilité, mais surtout à piéger des erreurs de syntaxe qui seraient autrement très difficiles à localiser (omission d’un ;, d’un { ou d’un }) au sein d’un listing un peu long.

  • Dans le menu « Outils », le raccourci « Traceur série Ctrl + Maj + L ». Le Traceur série est une alternative à l’affichage du Moniteur série déjà présenté (les deux ne peuvent d’ailleurs pas être affichés simultanément). Comme pour le traceur série, il faut lui préciser le débit su port série connecté au ST-LINK de la carte (en bauds). Il affichera ensuite les informations renvoyées par celui-ci sous forme de courbe si les messages renvoyés par le sketch sont correctement formattés.

Utiliser l’IDE Arduino

Pour finir ce tutoriel, et valider complètement l’installation, nous allons charger dans l’IDE l’exemple “Blink”, puis le compiler et programmer le microcontrôleur STM32 de notre carte avec le fichier binaire (firmware) produit.

Etape 1 : Retours sur les configurations de l’IDE Arduino

Dans l’IDE Arduino vous conseillons de configurer les options du menu « Fichiers / Préférences », volet « Paramètres » comme ci-dessous :


IDE Arduino, préférences compilation


Notamment, nous demandons l’affichage de tous les avertissements du compilateur. Ces options permettent d’afficher dans la console de l’IDE des informations sur les problèmes de compilation et de link (édition de liens) de la chaine de compilation « gcc pour ARM ».

Bien que cela ne compense pas l’absence de debugger, les messages en question vous signaleront des erreurs de code basiques, des maladresses de syntaxe ….

Au départ ces messages vous paraitront obscurs, mais ils vous seront très rapidement indispensables. Par exemple, pour un sketch (non détaillé ici) dans lequel il manque un ; (une erreur très classique en C/C++ !) quelque part avant la ligne « s2 = xTask… », vous obtiendrez le message suivant :

C:\Documents\Arduino\Station_Meteo\Station_meteo_BTLE\station_meteo_BTLE.ino: In function 'void setup()':

station_meteo_BTLE:116:3: error: expected ';' before 's2'

   s2 = xTaskCreate(TaskBTLE, "BTLE", 1024,  NULL, 2,  NULL);
   ^~
exit status 1
expected ';' before 's2'

Chargeons à présent le sketch « Blink » dans l’IDE. Allez dans le menu « Fichiers/Exemples/01.Basics/Blink» :


IDE Arduino, préférences compilation


Une nouvelle fenêtre de l’IDE s’ouvre et affiche le code correspondant :


IDE Arduino, code source de Blink


Etape 3 : Compilation du sketch et chargement du firmware sur la carte

Vous n’êtes plus qu’à un clic de terrminer votre apprentissage. Cliquez à présent sur le bouton « Téléverser » et attendez que les messages du compilateur arrêtent de défiler. Cela peut prendre quelques minutes ! Lorsque c’est terminé, un message en rouche appraît dans la zone de messages, confirmant que le chargement du firmware s’est déroulé correctement.

Eventiellement, appuyez sur le bouton « Reset de lla carte » (je n’ai jamais rencontré de situation où cela était nécessaire…) et voilà, la LED clignote ! (ce qui est porécisément l’objet du sketch « Blink »). La figure qui suit résume ces étapes :


IDE Arduino, Blink en oeuvre


C’est terminé ! Vous disposez à présent d’un environnement Arduino fontionnel et de toutes les connaissances requises pour développer vos propres projets. Bien évidemment, il y aurait bien plus à raconter sur ce sujet. Notre site se concentre sur l’utilisation de l’API STM32duino, mais il nous est évidemment impossible de couvrir tous les sujets possibles. La littérature concernant Arduino est abondante sur Internet et nous vous conseillons vivement de compléter votre expertise grâce à l’excellent Blog d’Eskimon !