samedi 5 avril 2014

Exploration de la carte STM32 Nucleo


Note: cet article, qui date de plusieurs années, parle de la programmation de la carte Nucleo avec mbed. De nos jours, je préfère programmer cette carte avec l'IDE Arduino, en utilisant exactement la même syntaxe que pour les cartes Arduino conventionnelles.

Aujourd'hui, je vous parle de mes premières expérimentations avec la carte de prototypage STM32 Nucleo, mise sur le marché en février dernier par ST Microelectronics.  J'ai fait l'essai du plus modeste des 4 modèles présentement disponibles, soit le Nucleo-F030R8 (mémoire flash de 64K, alors que c'est 512K pour le F401RE).

Basé sur un microcontrôleur ARM Cortex 32 bits STM32, cette carte est dotée  de connecteurs femelles qui respectent la norme Arduino UNO:  on peut donc brancher au Nucléo un shield qui a été conçu pour l'Arduino, et programmer le Nucleo en utilisant la numérotation de pins Arduino (D0 à D13 et A0 à A5). La carte est également munie de connecteurs mâles (appelés Morpho, une norme propre à ST):  et là, c'est du sérieux, puisqu'on a accès à chacune des 64 pins du microcontrôleurs.


Autre aspect intéressant:  son prix:  une dizaine d'euros environ.  De toute évidence, ST utilise une stratégie similaire à celle utilisée par Texas avec ses cartes Launchpad.  Je suppose que leur but n'est pas de faire des profits sur les cartes elles-mêmes, mais plutôt de promouvoir l'utilisation de le leurs microcontrôleurs.

Petite anecdote:  selon la paperasse qui accompagnait mon colis (expédié au Québec depuis les États-Unis), ma carte Nucleo a été assemblée en France.



La carte arrive avec un programme d'exemple qui s'exécutera aussitôt que vous la brancherez au port USB d'un ordinateur:  une LED clignote, et la fréquence du clignotement change lorsque vous appuyez sur le bouton bleu.  Bon, rien de bien spectaculaire.

Pour programmer la carte, vous pouvez toujours installer un gros logiciel spécialisé sur le disque dur de votre ordinateur, mais ce n'est pas nécessaire puisque Nucleo est compatible avec mbed, un compilateur en ligne auquel vous accédez au moyen de n'importe quel fureteur web (c'est particulièrement pratique si vous avez l'habitude de programmer sur plusieurs ordinateurs différents).  Après avoir choisi un nom d'utilisateur et un mot de passe, vous pouvez cliquer sur le bouton "Compiler" pour accéder au compilateur.



Une fois dans le compilateur, le bouton "Import" vous donne accès à des centaines d'exemples (un peu comme si vous étiez dans github).  Il y a de la redondance, toutefois:  les trois premiers programmes que j'ai ouverts faisaient tous exactement la même chose, c'est à dire faire clignoter la LED intégrée à la carte.

Lorsque vous avez rédigé votre programme, vous cliquez sur le bouton "Compile", qui permet d'enregistrer sur l'ordinateur un fichier exécutable .bin qu'on upload ensuite dans le microcontrôleur en copiant le fichier dans la carte, comme si cette dernière était une clé USB.



Je vous présente ci-dessous trois petits programmes que j'ai conçus en me basant sur ceux qui étaient fournis.

Comme le veut la tradition, commençons par faire clignoter quelques LEDs:   trois LEDs sont branchées aux pins D2, D3 et D4 (qui occupent la même position que les pins 2, 3 et 4 de l'Arduino), avec leur résistance de protection bien entendu (150 Ω ou un peu plus, puisque la tension de sortie du Nucleo est de 3,3 V). Les 3 LEDs s'allument en alternance.


---

---

Comme vous pouvez le constater, ce n'est pas la même syntaxe qu'un sketch Arduino, mais ce n'est pas plus compliqué.

Maintenant qu'on sait allumer une LED, essayons de lire l'état d'un bouton.  La plupart des exemples disponibles allument la LED de la carte au moyen du bouton de la carte, pour changer en voici un qui permet d'allumer une LED (branchée à D3) en appuyant sur un bouton externe (branché à D2):


---

---

Pour terminer, tentons de lire un signal analogique.  Trois LEDs branchées à D2, D3 et D4 s'allumeront en fonction du signal envoyé en A0 par un potentiomètre:  plus le signal analogique est élevé, plus le nombre de LEDs allumées est grand.


---

---

Premières impressions:  pas chère, performante (si je me fie aux spécifications du fabricant), et plutôt facile à utiliser.

La carte Nucleo F030R8 utilisée pour la rédaction de cet article a été fournie gratuitement par ST Microelectronics.

Lire aussi:  STM32 Nucleo et afficheur LCD


Yves Pelletier (Twitter:  @ElectroAmateur)

4 commentaires:

  1. Bonjour,
    Merci pour le tuto.
    Je débute avec cette carte et je ne comprends pas comment câbler le potentiomètre ou comment programmer l'entrée analogique.
    Comment la carte sait elle le type de valeur analogique qu'elle doit lire ?
    damien.leoncini@gmail.com

    RépondreSupprimer
  2. Bonjour,

    je voudrais essayer de programmer un accelerometre mais je n'arrive pas , j'ai fais pas d'essaie pourtant je n'arrive pas.
    pouvez vous m'aider ?
    merci

    RépondreSupprimer
  3. Bonjour, vous avez une idée comment faire tourner un moteur a l'aide de cette carte et la température ?

    RépondreSupprimer