🛠 Low-power : extinction, sommeil et 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
- 1 carte micro:bit V2
- 1 batterie avec connecteur JST-PH (ou 3V/GND via anneaux, jamais plus de 3,6 V ni polarité inversée)
- 1 câble micro-USB pour flasher d'abord
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
- Croire
sleep(60000)économique : le CPU et les capteurs restent actifs, la conso est quasi identique au mode actif. - Utiliser une powerbank USB : coupure automatique à faible courant, la carte s'éteint seule — alimenter en JST-PH ou piles.
- Confondre extinction logicielle et hold reset 3 s (extinction physique V2) : le premier passe par le firmware, le second par le matériel.
- Réutiliser P3/P4/P10 en GPIO sans
display.disable: ces broches partagent les colonnes de la matrice LED.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython