Buenas a todos!
Recientemente compré una placa MKRFox 1200 para un proyecto que estoy intentando echar a andar, pero me encuentro con el problema de que no consigo que llegue a funcionar de forma continua. Concretamente, si pongo la placa a dormir usando la librería LowPower, antes o después, y no sé por qué, se queda bloqueada y no despierta.
En el código he incluido la interrupción, tal y como indican en este hilo (LowPower.sleep(120000) does not work - MKRFOX1200 - Arduino Forum) y nada. Envía uno o ningún mensaje.
También he modificado la librería SigFox como indican en este otro (MKRFOX power saving issue - MKRFOX1200 - Arduino Forum), y he conseguido que envíe correctamente 6 veces y luego para. Envío los mensajes cada 10 o 15 minutos, con lo cual no es por el límite de mensajes de SigFox.
El código que estoy usando es el siguiente:
#include <SigFox.h>
#include <ArduinoLowPower.h>
void setup() {
// Inicia el módulo SigFox
if(!SigFox.begin()){
return;
}
// Apaga el módulo SigFox
SigFox.end();
// Interrupción para evitar que no despierte
LowPower.attachInterruptWakeup(RTC_ALARM_WAKEUP, dummy, CHANGE);
// Espera 10 segundos a enviar el primer mensaje
delay(10000);
}
void loop() {
// Inicia el módulo SigFox
SigFox.begin();
// Espera 200 ms hasta que conecta
delay(200);
// Lee la temperatura internat del módulo
int8_t temperatura = (int)SigFox.internalTemperature();
// Limpieza de todas las interrupciones pendientes
SigFox.status();
delay(10);
// Comenzamos el proceso para transmitir el mensaje
SigFox.beginPacket();
// Escribimos el mensaje
SigFox.write(temperatura);
// Terminamos el proceso de enviar el mensaje
int resultado = SigFox.endPacket();
Serial1.println(SigFox.status(SIGFOX));
Serial1.println(SigFox.status(ATMEL));
// Apagamos el módulo
SigFox.end();
// Duerme 15 minutos hasta enviar el siguiente mensaje
LowPower.sleep(15 * 60 * 1000);
}
void dummy() {
volatile int ttt = 0;
}
A ver si alguien de por aquí me da alguna idea más, porque veo que es un problema bastante habitual.
Muchas gracias y saludos.