🛠 Fonctionnement sur batterie LiPo et sommeil profond

Arduino Nicla Vision · avance · Schéma : IMG-nicla-vision-avance-2-niclavision-sommeil-bas-courant.svg — Nicla Vision alimenté par une batterie LiPo sur ses pads JST, chronologie éveil court / sommeil profond entre deux appuis bouton

Objectifs

Alimenter le Nicla Vision de façon autonome sur batterie LiPo et allonger l'autonomie en plongeant le STM32H747 en sommeil profond entre deux événements, avec réveil par bouton.

Matériel

Code complet

// Sommeil profond STM32H747 via Mbed, réveil par EXTI sur bouton D0
// > 
#include "mbed.h"

const pin_t BUTTON = D0;
volatile bool reveille = false;

void onReveil { reveille = true; }

void setup {
  pinMode(LED_BUILTIN, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(BUTTON), onReveil, FALLING);
}

void loop {
  // 1) tache breve : signal d vie
  digitalWrite(LED_BUILTIN, LOW); delay(50);
  digitalWrite(LED_BUILTIN, HIGH);

  // 2) extinction des peripheriques inutiles pendant le sommeil
  //    (couper camera, radio si initialises : les debrancher explicitement)

  // 3) sommeil profond : M7 et horloges principales a l arrêt
  reveille = false;
  while (!reveille) {
    sleep_deeplow;   // retourne au premier événement EXTI
    delayMicroseconds(200); // anti-rebond grossier
  }
  delay(300);          // laisse le temps au rebond de retomber
}

Vérification attendue

Entre deux appuis, la LED reste éteinte et le courant mesurable chute fortement. Chaque appui produit un éclair de 50 ms. L'horloge millis continue via le ticker, mais le RTC d'origine tourne sur LSI : le MCUboot est compilé avec lse_available=false et re-cloque le RTC depuis le LSE externe vers le LSI à chaque reset dur — le calendrier est donc perdu au reflash, à prendre en compte pour un horodatage de journal.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels