🛠 Sommeil profond et réveil sur broche WKP
Objetivos
Prolongar la autonomía con batería: el Photon consume aproximadamente 80 mA con Wi-Fi activo, pero solo ~80 µA en sueño profundo (hoja de datos, sección Power). Dormirás la placa entre dos mediciones y la despertarás mediante el pin WKP o mediante un comando remoto en la nube.
Material
- 1 Particle Photon alimentado por batería (pin VIN 3,6–5,5 V, o micro-USB)
- 1 interruptor conectado entre WKP y 3V3 para el despertar por hardware
- >
Código completo
// photon-sommeil-reveil.ino — mesure, sommeil profond, réveil WKP
#include <application.h>
void setup {
Serial.begin(9600);
pinMode(D7, OUTPUT);
digitalWrite(D7, HIGH);
int brut = analogRead(A0); // mesure avant de dormir
Particle.publish("capteur/brut", String(brut), PRIVATE);
digitalWrite(D7, LOW);
Serial.println("Endormissement...");
// >
// Device OS API reference (modes, delai, broche de reveil).
System.sleep(WKP, RISING, 3600, SLEEP_MODE_DEEP);
// Au reveil, le Photon redemarre : setup est rejoue.
}
void loop { }
Verificación esperada
Tras el publish, la placa duerme (el consumo cae hacia ~80 µA); un cambio de estado en WKP (o la expiración del tiempo de espera) la despierta: se reinicia, se reconecta y publica un nuevo valor. El despertar remoto es posible: curl 0 -d arg=please -H "Authorization: Bearer $TOKEN" (endpoint confirmado por la ficha técnica).
Errores frecuentes
- Esperar una reanudación del loop: en sueño profundo, el despertar es un reinicio completo, se pierde todo el contexto.
- Olvidar que el Wi-Fi se reconecta en cada despertar: cuenta con varios segundos antes del primer publish.
- Desatender la varianza entre placas: existe un caso documentado que opone 1 día y 30 días de autonomía en tres Photon idénticos.
- Alimentación insuficiente: en el pico de Wi-Fi se debe poder proporcionar ~1 A en el pin VIN.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-evenement.inoArduinofonction-distance.inoArduinocapteur-dht.inoArduinoruban-neopixel.inoArduinopwm-respiration.inoArduino