🛠 Sommeil profond et réveil programmé sur la Boron
Objetivos
La autonomía es la razón de ser de una tarjeta celular con batería. El nRF52840 del Boron ofrece modos de sueño profundo: la hoja de datos anuncia aproximadamente 106 µA en HIBERNATE en el modelo LTE (127 µA con despertar ULP GPIO), frente a 3,9 mA en reposo con la radio apagada. Usted dormirá la tarjeta con System.sleep(SLEEP_MODE_DEEP, segundos), la dejará despertarse sola gracias al RTC, medirá, publicará y volverá a dormir — el patrón clásico de un sensor con pila. Atención: estas cifras suponen una configuración cuidadosa; las primeras versiones de Device OS mostraban 0,6 a 1,2 mA en sueño profundo, de ahí el interés de medir su propio consumo.
Material
- 1× Particle Boron LTE sobre LiPo (3,6-4,2 V en el pin Li+)
- 1× nano-amperímetro en serie con la batería (o PPK2) para validar el presupuesto
- antena celular instalada; sensor a elección en un pin A0-A5
Código completo
// Boron — reveil RTC, mesure, publication, sommeil profond
#include "Particle.h"
SYSTEM_THREAD(ENABLED);
FuelGauge fuel; // jauge de batterie TI integratee
void setup {
Serial.begin(9600);
}
void loop {
// Patiente jusqu'a 60 s pour la liaison cellulaire ; sinon passe le cycle
if (waitFor( => Cellular.ready, 60000)) {
char msg[96];
snprintf(msg, sizeof(msg), "V=%.2fV SoC=%.1f%%",
fuel.getVCell, fuel.getSoC);
Particle.publish("battery", msg, PRIVATE);
Particle.process; // laisse partir l'evenement en file
delay(2000);
}
// Sommeil profond jusqu'au RTC (1 h). En HIBERNATE : ~106 uA (datasheet),
// mais prevoir les valeurs STOP ~0,5-0,6 mA si des sources de reveil
// restent actives. Le 3V3 est coupe : pas d'alimentation externe secourue.
System.sleep(SLEEP_MODE_DEEP, 3600);
}
Verificación esperada
Al despertar (después de 1 h, o temporalmente 60 s), el evento battery llega a la nube y luego la tarjeta vuelve a dormir. En el amperímetro, la corriente media se desploma tras la llamada a System.sleep — apunte a ~0,1-0,6 mA según el modo efectivo, y no a las decenas de mA del reposo conectado. Una pulsación de Reset despierta inmediatamente la tarjeta (reinicio completo, no reanudación).
Errores frecuentes
- Alimentar la electrónica externa por el pin 3V3: está cortado en sueño, su sensor muere con la tarjeta; use una línea de batería directa y un MOSFET de power-gating.
- Retroalimentar un pin GPIO desde un circuito externo alimentado: el nRF52840 nunca se apaga realmente (trampa equivalente a la del pin EN, que nunca debe estar conectado directamente al 3V3).
- Publicar justo antes de dormir sin
Particle.processni retraso: el evento queda en cola y se pierde al dormir. - Comparar su medición con los 106 µA de la hoja de datos sin desactivar la carga LiPo y las pull-ups externas: cada pull-up de 10 kΩ sobre 3,3 V cuesta 330 µA.
- Olvidar que el despertar es un arranque en frío: todo el estado RAM se pierde, persista lo que deba serlo (flash, RTC).
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino