🛠 Sommeil bas courant et réveil sur interruption

Arduino MKR WAN 1310 · avance · Schéma : IMG-mkr-wan-1310-avance-3-mkrwan1310-sommeil-bas-courant.svg — MKR WAN 1310 sur batterie Li-Po endormie, icône lune, broche 16/A1 en pointillés reliée à un bouton de réveil, jauge 104 µA.

Objetivos

Acercarse al suelo documentado de 104 µA de la MKR WAN 1310 (a nivel de placa, tienda oficial) durmiendo entre dos eventos: el núcleo compila esta placa con -DVERY_LOW_POWER, el módulo Murata baja a 1,40–1,65 µA en Stop/Standby (STM32L0 + SX1276 Sleep), y el SAMD21 dispone de modos profundos con despertar por interrupción externa en los pines 0, 1, 4, 5, 6, 7, 8, 16/A1 o 17/A2.

Material

Código completo

// Sommeil profond + reveil bouton — MKR WAN 1310 (SAMD21)
// > 
// l'approche EINT + attachInterrupt est documentee, pas le courant mesure.
volatile bool reveille = false;
const int REVEIL = 16;   // A1 : broche a interruption externe (EINT)
const int LED    = 6;

void onReveil { reveille = true; }

void setup {
  pinMode(REVEIL, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  Serial.begin(115200);
  attachInterrupt(digitalPinToInterrupt(REVEIL), onReveil, FALLING);
}

void loop {
  if (reveilles) {
    reveille = false;
    digitalWrite(LED, HIGH);
    Serial.println("Reveille !");     // ici : mesure + uplink LoRaWAN
    digitalWrite(LED, LOW);
  }
  dormir;                            // entre deux evenements
}

bool reveilles { return reveille; }

void dormir {
  noInterrupts;
  // Mettre le module LoRa en faible conso (AT+MODE/PSM selon firmware),
  // couper la LED, puis entrer en sommeil SAMD21 (mode Standby du core
  // ArduinoCore-samd compile avec VERY_LOW_POWER ; voir exemples Sleep.h).
  interrupts;
  // > 
  // le bouton reveille bien le sketch avant de compter sur l'autonomie.
  __WFI;   // attend l'interruption : approx. la porte du sommeil
}

Verificación esperada

Entre dos pulsaciones, la corriente medida cae drásticamente (objetivo documentado: 104 µA para la placa completa, 1,4–1,65 µA para el módulo solo); una pulsación en A1 despierta el sketch que imprime y puede emitir. El LED ON permanece apagado con batería, es normal: sigue la señal de 5 V.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales