vendredi 29 mai 2020

Micro:Bit - Première exploration avec MakeCode

Depuis le temps que j'en entendais parler, voici enfin l'occasion de faire l'essai du célèbre Micro:Bit. Voyons un peu si cette carte mise au point au Royaume Uni dans le but de faciliter l'apprentissage de la programmation à l'école saura me séduire, même si je ne fais pas tout à fait partie du public cible.



Une première caractéristique qui saute aux yeux, c'est la grande quantité d'éléments utiles présents sur la carte, malgré sa petite taille:
  • Un très respectable microcontrôleur ARM-Cortex M0 32 bits.
  • Une matrice de 25 LEDs (mine de rien, c'est 24 LEDs de plus que la plupart des autres cartes)
  • 2 boutons programmables, en plus du bouton reset
  • Bluethooth (pour communiquer à distance avec un téléphone ou un ordinateur)
  • Accéléromètre
  • Magnétomètre
  • Capteur de température (intégré au microcontrôleur)
  • Capteur de luminosité (ce sont les LEDs, en fait)
Par conséquent, on peut faire beaucoup de choses avec un Micro:Bit sans même y brancher quoi que ce soit.



Bien entendu, le micro:bit comporte aussi des connecteurs qui permettent de lui ajouter des capteurs, moteurs, afficheurs, etc. Sauf que...qui a eu l'idée de ces connecteurs????

Les 5 principaux connecteurs prennent la forme d'un trou jumelé à une surface plane conductrice d'environ 5 mm de largeur. Les trous ont la taille idéale pour y insérer une fiche banane...


...alors que la surface plane a tout juste la bonne largeur pour y installer une pince crocodile...



Sauf que ça ne nous fait que 5 connecteurs: deux pour l'alimentation (3 V et GND) et 3 entrées/sorties programmables. Je veux bien admettre que ces 5 connecteurs offrent certaines possibilités intéressantes, mais ce serait bien utile d'en avoir un peu plus!

Et il y en a, en fait, beaucoup plus: une vingtaine de surfaces conductrices dont l'épaisseur est de l'ordre du millimètre, et séparées d'une distance inférieure à celle qui sépare les trous d'une breadboard. Sauf qu'à moins d'avoir pensé à se procurer un module d'extension (une fente dans laquelle on insère la carte) ou d'utiliser des modules spécialement conçus pour le micro:bit, ces connecteurs sont difficilement utilisables.

Vous désirez brancher au micro:bit un capteur I2C? Il faut utiliser les connecteurs P19 et P20...inaccessibles sans module d'extension. Un capteur SPI? Ce sont alors les connecteurs P13, P14 et P15, également inaccessibles sans module d'extension.

Vous l'aurez deviné: je n'ai pas pensé à me procurer un module d'extension en même temps que mon micro:bit. J'ai une carte qui comporte plus d'une vingtaine d'entrées/sorties, mais je ne peux pour l'instant en utiliser que 5!!! C'est extrêmement frustrant.

Je comprends la pertinence de ces connecteurs dans un contexte scolaire: l'école se procure des périphériques conçus pour le micro:bit et les élèves n'ont qu'à y insérer la carte: c'est rapide, pratique, et ça évite les erreurs de connexions. Mais ça rend le micro:bit moins compatible avec l'écosystème de modules conçus pour les autres microcontrôleurs.

Un peu de programmation avec MakeCode

MakeCode est un environnement de programmation graphique similaire à Scratch ou à MIT App Inventor: puisque nous créons un programme en faisant glisser des briques, il n'est pas nécessaire de mémoriser la syntaxe d'un langage de programmation traditionnel. Remarquez qu'il existe bien d'autres façons de programmer le micro:bit: cet article sur Arduiblog en recense une bonne dizaine.

Je me suis donc dirigé vers makecode.microbit.org et j'ai cliqué sur le bouton "Nouveau projet".



L'écran est essentiellement divisé en trois zones: 
  • La moitié droite est l'endroit où nous construisons le programme. Dès le départ, deux blocs s'y trouvent déjà: "au démarrage" et "toujours".  Nul besoin de consulter la documentation pour deviner que les instructions que nous insérerons dans "au démarrage" s'exécuteront une seule fois, au démarrage du programme, et que celles que nous insérerons dans "toujours" s'exécuteront à répétition pendant toute la durée du programme.

  • Dans la partie centrale: un réservoir de blocs que nous pourrons insérer dans notre programme, en les faisant glisser dans la zone de droite.

  • À gauche: un simulateur qui permet de vérifier le fonctionnement correct de notre programme avant même de le téléverser dans la carte micro:bit. Puisque le téléversement dans la carte prend certain temps, ce simulateur s'est avéré beaucoup plus utile que prévu.

Je me suis amusé à improviser des programmes en navigant au hasard dans la réserve de blocs.

Mon premier programme consistait évidemment à contrôler la matrice de LEDs. Au démarrage,allumer des LEDs de façon à afficher un visage souriant, attendre 2 secondes, puis faire défiler continuellement le message "Eureka!!!".

Après avoir constaté grâce à la simulation que mon programme avait le comportement désiré, j'ai branché mon micro:bit à l'ordinateur (il est apparu comme une clé usb) et j'y ai enregistré le fichier ".hex" généré par MakeCode. La carte a automatiquement exécuté le programme au bout de quelques secondes.

Je bascule en mode JavaScript et je découvre avec plaisir que j'ai produit sans effort un programme en JavaScript assez élégant, malgré mon absence totale de connaissances en JavaScript.


Dans mon deuxième programme, j'ai utilisé les deux boutons. La LED centrale s'allume au démarrage. Le bouton de gauche déplace la LED allumée vers la gauche, alors que celui de droite la déplace vers la droite.


Puis je me suis un peu amusé avec l'accéléromètre: en inclinant la carte, on change la position de la LED qui s'allume...



Conclusion

Ça fonctionne bien, c'est extrêmement facile à programmer sans avoir à installer le moindre logiciel sur l'ordinateur, et ces foutus connecteurs sont tout simplement ridicules!

À lire aussi

La carte micro:bit utilisée pour la rédaction de cet article a été fournie gratuitement par DigitSpace.

Yves Pelletier (TwitterFacebook)




Aucun commentaire:

Publier un commentaire