🛠 Low-power : extinction, sommeil et réveil
Objetivos
Alimentar la micro:bit V2 con batería ahorrando energía: comprender el apagado (mantener reset 3 s, o power.off), el reinicio y la lectura de la causa del reinicio con power.reset_reason. El regulador integrado de la V2 está diseñado para proyectos con batería (300 mA en total, de los cuales ~190 mA para el conector de borde).
Material
- 1 placa micro:bit V2
- 1 batería con conector JST-PH (o 3V/GND mediante anillos, nunca más de 3,6 V ni polaridad invertida)
- 1 cable micro-USB para flashear primero
Código completo
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 apaga la placa; el despertar físico (botón A/B o pulsación de reset) reinicia el programa, que puede entonces distinguir el origen mediante reset_reason. Para un verdadero sueño profundo con despertar por interrupción de movimiento, es necesario utilizar el runtime CODAL (C/C++), ya que MicroPython no expone una API de suspensión con fuente de acelerómetro.
Verificación esperada
Tras power.off, la placa está totalmente apagada (matriz negra, ningún LED). Una pulsación de A la enciende y muestra una marca de verificación si la causa es efectivamente el botón. Con pila, la autonomía en estado apagado es muy superior al funcionamiento continuo.
Errores frecuentes
- Creer que
sleep(60000)es económico: la CPU y los sensores permanecen activos, el consumo es casi idéntico al modo activo. - Utilizar una powerbank USB: corte automático por bajo consumo, la placa se apaga sola — alimentar mediante JST-PH o pilas.
- Confundir apagado por software y mantener reset 3 s (apagado físico V2): el primero pasa por el firmware, el segundo por el hardware.
- Reutilizar P3/P4/P10 como GPIO sin
display.disable: estos pines comparten las columnas de la matriz LED.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython