🛠 Sommeil profond du SAMD21 pour nœud sur batterie

Arduino MKR WAN 1300 · avance · Schéma : IMG-mkr-wan-1300-avance-3-mkrwan-sommeil-bas-courant.svg — SAMD21 en sommeil profond avec RTC, batterie et microampèremètre

Objectifs

Endormir le SAMD21 (deep sleep) et le réveiller par RTC pour un nœud sur batterie. Attention : la 1300 n'a pas de chargeur Li-Po (contrairement à la 1310) — l'alimentation batterie est externe. >

Matériel

Code complet

#include <RTCZero.h>

RTCZero rtc;
const uint8_t LED = 6;
volatile bool reveille = false;

void onAlarme { reveille = true; }

void setup {
  pinMode(LED, OUTPUT);
  rtc.begin;
  rtc.setAlarmTime(0, 0, 0);        // hh:mm:ss
  rtc.enableAlarm(rtc.MATCH_SS);    // toutes les minutes
  rtc.attachInterrupt(onAlarme);
}

void loop {
  // 1) Reveil : faire le travail radio (uplink LoRaWAN, cf. tutos précédents)
  digitalWrite(LED, HIGH);          // placeholder : acquisition + send
  digitalWrite(LED, LOW);

  // 2) Sommeil profond : STOP + WFI, le RTC reste seul actif
  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
  __DSB;                          // evite la course réveil/sommeil
  __WFI;
}

Vérification attendue

L'alarme RTC réveille la carte chaque minute (bref éclair LED) ; entre deux alarmes le multimètre en série avec l'alimentation chute nettement sous le niveau de fonctionnement normal. Le module LoRa doit aussi être remis en sommeil AT entre deux envois.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels