🛠 Low-power : veille profonde et réveil

Adafruit Feather nRF52840 Express · avance · Schéma : IMG-nrf52840-feather-avance-1-nrf52840-low-power-system-off.svg — Feather nRF52840 sur batterie LiPo, pin ENABLE coupant le régulateur, ampèremètre en série, bouton RST et broche de réveil annotés.

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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales