Retour aux projets
Projet SNT - Objets connectés

Programmer un micro:bit

Découvre l'informatique embarquée en programmant une carte micro:bit. Crée un dé électronique, un thermomètre, une boussole ou un jeu !

3 heures
Intermédiaire
Thème : Objets connectés

Objectifs pédagogiques

  • Comprendre ce qu'est un système embarqué
  • Découvrir les capteurs et actionneurs du micro:bit
  • Programmer en Python ou en blocs (MakeCode)
  • Lire des données de capteurs (température, accéléromètre, boussole)
  • Afficher des informations sur la matrice LED

Prérequis

  • Une carte micro:bit (ou le simulateur en ligne)
  • Un câble micro-USB pour connecter le micro:bit
  • L'éditeur MakeCode (makecode.microbit.org) ou Python Editor
  • Aucune connaissance préalable requise (MakeCode) ou bases Python

Découvrir le micro:bit

Matrice LED 5x5

25 LEDs pour afficher des images, du texte défilant ou des animations.

Capteur de température

Mesure la température ambiante (approximative car proche du processeur).

Boussole (magnétomètre)

Détecte le champ magnétique terrestre pour indiquer le Nord.

Accéléromètre

Détecte les mouvements : secousses, inclinaison, chute libre.

Projet 1 : Dé électronique

Quand on secoue le micro:bit, il affiche un nombre aléatoire entre 1 et 6.

Python (micro:bit)
from microbit import *
import random

# Images pour chaque face du dé
faces = {
    1: Image("00000:00000:00900:00000:00000"),
    2: Image("90000:00000:00000:00000:00009"),
    3: Image("90000:00000:00900:00000:00009"),
    4: Image("90009:00000:00000:00000:90009"),
    5: Image("90009:00000:00900:00000:90009"),
    6: Image("90009:00000:90009:00000:90009")
}

# Boucle principale
while True:
    # Détecter une secousse
    if accelerometer.was_gesture("shake"):
        # Animation de lancement
        for i in range(10):
            display.show(str(random.randint(1, 6)))
            sleep(100)

        # Résultat final
        resultat = random.randint(1, 6)
        display.show(faces[resultat])

    sleep(50)

Comment ça marche : L'accéléromètre détecte quand on secoue le micro:bit. On génère alors un nombre aléatoire et on affiche la face correspondante.

Projet 2 : Thermomètre

Affiche la température ambiante et change la couleur selon la chaleur.

from microbit import *

# Icônes de température
chaud = Image("09090:99999:99999:09990:00900")  # Soleil
froid = Image("00900:09990:00900:09990:00900")  # Flocon

while True:
    # Lire la température
    temp = temperature()

    # Afficher la température
    display.scroll(str(temp) + "C")

    # Afficher une icône selon la température
    if temp > 25:
        display.show(chaud)
    elif temp < 15:
        display.show(froid)
    else:
        display.show(Image.HAPPY)

    # Attendre 5 secondes avant la prochaine mesure
    sleep(5000)

Note : La température mesurée peut être plus élevée que la température réelle car le capteur est proche du processeur qui chauffe.

Projet 3 : Boussole

Affiche une flèche qui pointe toujours vers le Nord.

from microbit import *

# Calibrer la boussole au démarrage
compass.calibrate()

# Flèches pour chaque direction
fleches = {
    "N": Image.ARROW_N,
    "NE": Image.ARROW_NE,
    "E": Image.ARROW_E,
    "SE": Image.ARROW_SE,
    "S": Image.ARROW_S,
    "SW": Image.ARROW_SW,
    "W": Image.ARROW_W,
    "NW": Image.ARROW_NW
}

def get_direction(angle):
    """Convertit un angle en direction cardinale"""
    directions = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"]
    index = round(angle / 45) % 8
    return directions[index]

while True:
    # Lire l'angle de la boussole (0-360°)
    angle = compass.heading()

    # Obtenir la direction
    direction = get_direction(angle)

    # Afficher la flèche correspondante
    display.show(fleches[direction])

    # Appuyer sur A pour voir l'angle exact
    if button_a.was_pressed():
        display.scroll(str(angle) + " deg")

    sleep(100)

Projet 4 : Compteur de pas

Compte les pas en détectant les secousses légères.

from microbit import *

pas = 0
dernier_z = accelerometer.get_z()
seuil = 500  # Sensibilité

while True:
    # Lire l'accélération sur l'axe Z
    z = accelerometer.get_z()

    # Détecter un pas (changement brusque)
    if abs(z - dernier_z) > seuil:
        pas += 1
        display.show(Image.HEART)
        sleep(200)
        display.clear()

    dernier_z = z

    # Bouton A : afficher le nombre de pas
    if button_a.was_pressed():
        display.scroll(str(pas) + " pas")

    # Bouton B : réinitialiser
    if button_b.was_pressed():
        pas = 0
        display.show(Image.YES)
        sleep(500)
        display.clear()

    sleep(50)

Projet 5 : Niveau à bulle

Affiche un point qui se déplace selon l'inclinaison du micro:bit.

from microbit import *

def map_value(value, in_min, in_max, out_min, out_max):
    """Convertit une valeur d'une plage à une autre"""
    return (value - in_min) * (out_max - out_min) // (in_max - in_min) + out_min

while True:
    # Lire l'accélération sur X et Y
    x = accelerometer.get_x()
    y = accelerometer.get_y()

    # Convertir en position sur l'écran (0-4)
    pos_x = map_value(x, -1024, 1024, 0, 4)
    pos_y = map_value(y, -1024, 1024, 0, 4)

    # Limiter aux bords de l'écran
    pos_x = max(0, min(4, pos_x))
    pos_y = max(0, min(4, pos_y))

    # Effacer et afficher le point
    display.clear()
    display.set_pixel(pos_x, pos_y, 9)

    # Si centré, afficher en vert (OK)
    if pos_x == 2 and pos_y == 2:
        display.show(Image.YES)
        sleep(500)

    sleep(50)

Critères d'évaluation

CritèrePoints
Programme fonctionnel sur micro:bit ou simulateur4 pts
Utilisation d'au moins un capteur3 pts
Affichage sur la matrice LED3 pts
Interaction utilisateur (boutons ou gestes)3 pts
Code commenté et structuré3 pts
Originalité et personnalisation4 pts
Total20 pts

Pour aller plus loin

Variante 1 : Jeu Pierre-Feuille-Ciseaux

Deux micro:bits communiquent par radio pour jouer ensemble.

Variante 2 : Station météo

Ajoute un capteur externe (humidité, pression) avec des câbles.

Variante 3 : Robot

Connecte des servomoteurs pour créer un robot téléguidé.

Variante 4 : Instrument de musique

Crée un instrument qui joue des notes selon l'inclinaison.

Pixel