Micro:Bit (v1.5) et Python – Premiers pas

Soyez patient, cet article / partie sera bientôt prêt ! Faites moi savoir votre impatience via les commentaires 😉

Micro:Bit est une carte de programmation destinée aux élèves (collège, lycée, supérieur). Conçue au Royaume-Uni, la carte se veut extensible et modulable (communication intégrée entre Micro:bits, vente de Shields permettant un brochage aisé, …)

La carte n’embarque pas de port WiFi, l’alimentation est limitée à 3V et les 256 Ko de mémoire sont très peu pour un programme python. Créer un dispositif IoT, ou robotique est donc limité. Heureusement, la documentation fournie par le concepteur est complète, disponible en Anglais et des shields existent. Les IDE utilisables avec la carte sont :

  • L’interface online / offline MakeCode (Graphique / JavaScript)
  • L’IDE Arduino (C++)
  • L’IDE MU (Python)
  • L’IDE TigerJython (Emulateur / Python)

1 – Caractéristiques

Les composants

Destinée à des usages simples et purement interactifs, les principaux constituants du micro:bit sont listés sur microbit.org/fr/guide/features avec des exemples pour Python et MakeCode :

  • Microprocesseur ARM Cortex-M0
    • 32 bits,
    • 256 Ko ROM,
    • 16 Ko RAM,
    • 16 MHz
  • Capteurs
    • Thermomètre (on-core nRF51, pas de 0.25°C)
    • Accéléromètre 3 axes (LSM303GR)
    • Boussole 3 axes (LSM303GR)
    • Capteur de lumière (Matrice)
    • 2 boutons poussoirs
  • Actionneur
    • Matrice 5×5, LEDs rouges 700 nm, 10 niveaux d’intensité
  • Communication
    • Radio (communication avec autres micro:Bits)
    • Bluetooth BLE 4.1 (Low Energy)
    • Port USB 1.1 (max 12Mbit/s)
  • Autres
    • Prise JST pour batterie LiPo 3.7V
    • Taille 5 x 4cm, 5g
    • Bouton reset

Les Broches

Disponibles sur une tranche du micro:bit, les broches sont difficilement accessibles (hormis celles désignées pour les grosses connectiques comme les pinces crocodiles) :

  • Broches d’alimentation et masse : 3.3V, GND
  • 18 Broches IO (0-11, 13-16, 19-20) dont :
    • Broches PWM : jusqu’à 3 au choix
    • Broches capacitives (Touch) : jusqu’à 3 au choix
    • 2 Ports : 1 SPI, 1 I2C
    • 2 Broches boutons : 5, 11
    • 5 Broches d’entrée analogique 10bits : 0-4

Le Shield Grove 2.0 (for micro:bit)

Des extensions (appelées Shields) sont disponibles pour la Micro:bit. Crées par d’autres entreprises, ils permettent l’exploitation des petites broches de notre carte ainsi qu’un brochage aisé de nouveaux périphériques. Souvent moins documentés, ils peuvent cacher quelques surprises (apport de puissance, adaptation 5V, …).

Parmi les shields, on retrouve :

  • L’IO Expansion board v2.0, conçue pour pleinement exploiter la carte
  • Le Crowtail Base Shield for microbit v2.0, pour apprendre simplement
  • Le Shield Grove for microbit v2.0, pour apprendre simplement

2 – Préparation

Il existe au moins trois langages possibles pour la micro:bit :

  • Le C++ (IDE Arduino)
  • Le MicroPython (Mu editor, mBlock, TigerJython, Thonny …)
  • Le JavaScript (MakeCode)

Dont seulement une partie est équipé d’un émulateur, utile pour simuler notre code avant de l’envoyer à la micro:bit.

  • Le MicroPython (TigerJython)
  • Le JavaScript (MakeCode)

Nous parlerons ici des IDE Arduino, TigerJython, et MakeCode. Mu étant pour ma part similaire (Langage Python), mais moins complet (pas d’émulateur) que TigerJython, je ne l’aborderai pas.

N’hésitez pas à jongler entre plusieurs éditeur Python, car chacun possède ses défauts et ses qualiés. Ainsi TigerJython contient un émulateur, mais ne supporte pas certaines fonctions de microPython. De plus, en fonction de l’éditeur, soit :

  • Votre code est directement exécuté dans la micro:bit
  • Votre code est sauvegardé, puis exécuté dans la micro:bit
  • Votre code est compressé, sauvegardé, puis exécuté dans la micro:bit
Le microbit n’ayant que 256Ko de ROM principalement occupé par MicroPython, l’espace restant pour y enregistrer votre code Python (environ 4Ko) est court. Si votre programme ne s’exécute pas sur le microbit, racourcissez-le ou compressez-le avec le bon éditeur.

Micropython : Préparation de TigerJython sur Windows

TigerJython est un IDE basé sur Jython (une implémentation Java de Python) ne nécessitant pas de préparation supplémentaire (Java, Python et les éléments de flashage de la micro:bit sont déjà inclus). Se présentant comme un éditeur python simple, il nous permet de lancer notre code :

  • directement avec l’interpréteur python du PC (émulateur micro:bit)
  • directement avec l’interpréteur python du micro:bit
  • Indirectement en sauvegardant le code sur la micro:bit

Simple, il ne peut programmer que 5 appareils (Lego EV3, Raspberry, ESP32, Micro:Bit, Oxocard) tout en proposant des outils confortables (Emulateur, Flashage, Manuel des API, …). Notons cependant que toutes les fonctionnalités du micro:bit ne sont pas inclues dans l’émulateur (comme les broches analogiques, …).

  • Installez la dernière version de TigerJython
  • Outils > Devices : Sélectionnez Micro:Bit
  • Outils > Enumérer … : Vérifiez que le bon port COM est reconnu
  • Outils > Flashez la cible : Flashez MicroPython sur Micro:bit
  • Votre carte est prête

3 – Premiers essais

Essai de TigerJython

TigerJython se révèle très facile à utiliser à l’aide des aides fournies sur microPython pour Micro:Bit. Merci à tous ceux qui ont participé a ce lourd travail. Notons que pour l’instant :

  • Certaines fonctions (Boussole) ne sont pas sur l’émulateur.
  • Certains codes exemples (Gesture) contiennent une erreur (facile à corriger)

Vous pouvez par exemple essayer les programmes ci-dessous (disponibles sur microbit-micropython.readthedocs.io) :

Hello WorldAccelerometerGestures
from microbit import *

display.scroll("Hello, World!")
from microbit import *

while True:
    reading = accelerometer.get_x()
    if reading > 20:
        display.show("R")
    elif reading < -20:
        display.show("L")
    else:
        display.show("-")
#Note : Ce programme est un correctif du programme "gesture"
from microbit import *

display.show(Image.ANGRY)
while True:
    gesture = accelerometer.current_gesture()
    if gesture == "up":
        display.show(Image.HAPPY)

4 – Sources

Pour plus d’information concernant les caractéristiques :

Pour plus d’informations concernant la programmation sur :

Votez cet article :

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Laisser un commentaire