🛠 Low-power : veille profonde et réveil
Objectifs
Minimiser la consommation de la Feather nRF52840 sur LiPo : éteindre le NeoPixel (consommation permanente notable), couper le régulateur via la broche Enable, puis plonger le SoC en SYSTEM OFF — le réveil se fait par appui RST (le pad de reset réalimente le circuit). Le nRF52840 gère LDO + DC/DC internes de 1,7 à 3,3 V ; c'est le régulateur de la carte et le NeoPixel, pas le cœur, qui tuent l'autonomie.
Matériel
- 1× Adafruit Feather nRF52840 Express + LiPo 3,7 V
- 1× ampèremètre/micro-ohmmètre en série sur la batterie (ou un second Feather en « testeur »)
- Fil sur la broche Enable (EN) pour coupure externe du régulateur
Code complet
// nrf52840-low-power-system-off.ino
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel neo(1, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);
void setup {
// 1) Eteindre le NeoPixel : alimente en permanence tant qu'on ne le force pas a 0
neo.begin;
neo.setPixelColor(0, 0);
neo.show;
// 2) Desactiver la charge USB inutilement, couper les broches inutilisees
// (les laisser en entrées pour eviter les courants de fuite).
Serial.begin(115200);
delay(2000); // fenetre pour lire la derniere mesure
Serial.println("Entree SYSTEM OFF : réveil par RST");
Serial.flush;
delay(100);
// 3) Sommeil profond : SYSTEM OFF coupe presque tout ; seul le pad RESET
// (bouton RST ou broche reset) relance l'alimentation du module.
NVIC_SystemOff; // equivalent: NRF_POWER->SYSTEMOFF = 1;
while (1) { /* jamais atteint */ }
}
void loop {}
Vérification attendue
Après le message console, l'ampèremètre chute brutalement vers le plus bas mesurable ; l'appui sur RST relance le programme (message revu en console). Comparez trois paliers : code actif / NeoPixel éteint + EN coupé / SYSTEM OFF — l'écart se joue surtout sur le régulateur et le NeoPixel.
Erreurs fréquentes
- Oublier d'éteindre le NeoPixel : il tire en permanence tant que son alimentation n'est pas coupée ou sa donnée forcée à 0.
- Croyance « SYSTEM OFF = réveil programmé » : SYSTEM OFF ne se réveille que par reset (RST/alim) ; pour un réveil périodique, restez en SYSTEM ON avec
__WFE+ RTC ou un GPIO SENSE. - Broches inutilisées en sortie haute : courant de fuite via les périphériques externes — les laisser flottants/entrée.
- Mesurer sans couper USB : le convertisseur USB domine la mesure ; testez sur batterie, EN géré.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython