🛠 Low-power : extinction, sommeil et réveil

micro:bit V2 (BBC micro:bit v2) · avance · Schéma : IMG-microbit-v2-avance-3-microbit-v2-low-power-sommeil-reveil.svg — micro:bit V2 alimentée par une pile JST, icône lune de sommeil sur la matrice, bouton A et pictogramme mouvement entourés comme sources de réveil

Objectifs

Alimenter la micro:bit V2 sur batterie en économisant l'énergie : comprendre l'extinction (maintenir reset 3 s, ou power.off), la remise en route, et la lecture de la cause du redémarrage avec power.reset_reason. Le régulateur embarqué de la V2 est prévu pour les projets sur batterie (300 mA au total, dont ~190 mA pour l'edge connector).

Matériel

Code complet

from microbit import *
import power

# Au démarrage : pourquoi la carte s'est-elle réveillée ?
reason = power.reset_reason
if reason == power.ResetReason.WAKEUP_BUTTON:
    display.show(Image.YES)      # réveillée par un bouton
elif reason == power.ResetReason.SOFT_RESET:
    display.show(Image.HAPPY)
else:
    display.show(Image.THUMBS_UP)

sommeil = 0
while True:
    display.show(Image.SLEEP)
    # Compter les appuis avant extinction
    while not button_a.is_pressed and not accelerometer.was_gesture("shake"):
        sleep(100)
        # (le comptage d'événements se fait via les flags MicroPython)
    sommeil += 1
    display.scroll("REVEIL %d" % sommeil)
    sleep(1500)
    display.clear
    power.off   # extinction complète ; réveil par bouton/reset

power.off éteint la carte ; le réveil physique (bouton A/B ou appui sur reset) redémarre le programme, qui peut alors distinguer l'origine via reset_reason. Pour un vrai sommeil profond avec réveil sur interruption mouvement, il faut passer par le runtime CODAL (C/C++), MicroPython n'exposant pas d'API de veille avec source accéléromètre.

Vérification attendue

Après power.off, la carte est totalement éteinte (matrice noire, aucune LED). Un appui sur A la rallume et affiche une coche si la cause est bien le bouton. Sur pile, l'autonomie en extinction est très supérieure au fonctionnement continu.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels