🛠 Low-power : veille profonde et réveil
Objetivos
Minimizar el consumo de la Feather nRF52840 con batería LiPo: apagar el NeoPixel (consumo permanente notable), cortar el regulador mediante el pin Enable y luego sumergir el SoC en SYSTEM OFF — el despertar se realiza pulsando RST (el pad de reset vuelve a alimentar el circuito). El nRF52840 gestiona reguladores internos LDO + DC/DC de 1,7 a 3,3 V; es el regulador de la placa y el NeoPixel, no el núcleo, lo que arruina la autonomía.
Material
- 1× Adafruit Feather nRF52840 Express + LiPo 3,7 V
- 1× amperímetro/micro-óhmetro en serie con la batería (o un segundo Feather como «probador»)
- Cable en el pin Enable (EN) para corte externo del regulador
Código completo
// 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 entrees pour eviter les courants de fuite).
Serial.begin(115200);
delay(2000); // fenetre pour lire la derniere mesure
Serial.println("Entree SYSTEM OFF : reveil 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 {}
Verificación esperada
Tras el mensaje en la consola, el amperímetro cae bruscamente hacia el valor más bajo medible; pulsar RST reinicia el programa (se vuelve a ver el mensaje en la consola). Compare tres niveles: código activo / NeoPixel apagado + EN cortado / SYSTEM OFF — la diferencia se debe principalmente al regulador y al NeoPixel. > SIN VERIFICAR: los valores típicos en µA (sueño/funcionamiento) provienen de la hoja de datos de Nordic, inaccesible durante la compilación de la base documental — mida sus propios valores en lugar de citar una cifra.
Errores frecuentes
- Olvidar apagar el NeoPixel: consume permanentemente mientras su alimentación no esté cortada o su dato no se fuerce a 0.
- Creencia « SYSTEM OFF = despertar programado »: SYSTEM OFF solo despierta mediante reset (RST/alimentación); para un despertar periódico, permanezca en SYSTEM ON con
__WFE+ RTC o un GPIO SENSE. - Pines no utilizados en salida alta: corriente de fuga a través de periféricos externos — déjelos flotantes/entrada.
- Medir sin cortar USB: el convertidor USB domina la medición; pruebe con batería, gestionando EN.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython