🛠 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.

Objectifs

Approcher le plancher documenté de 104 µA de la MKR WAN 1310 (board-level, store officiel) en dormant entre deux événements : le core compile cette carte avec -DVERY_LOW_POWER, le module Murata tombe à 1,40–1,65 µA en Stop/Standby (STM32L0 + SX1276 Sleep), et le SAMD21 dispose de modes profonds avec réveil par interruption externe sur les broches 0, 1, 4, 5, 6, 7, 8, 16/A1 ou 17/A2.

Matériel

Code complet

// Sommeil profond + réveil 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 événements
}

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
}

Vérification attendue

Entre deux appuis, le courant mesuré chute fortement (cible documentée : 104 µA à la carte entière, 1,4–1,65 µA pour le module seul) ; un appui sur A1 réveille le sketch qui imprime et peut émettre. La LED ON reste éteinte sur batterie, c'est normal : elle suit le 5 V.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels