🛠 Sommeil profond et réveil programmé ou sur broche

Raspberry Pi Pico 2 W · avance · Schéma : IMG-pico-2-w-avance-8-pico2w-sommeil-reveil.svg — Pico 2 W sur batterie avec convertisseur RT6154, chronomètre d'alarme, réveil par GPIO et courant de veille en µA.

Objectifs

Alimenter la Pico 2 W sur batterie impose de dormir : endormir le RP2350 entre deux releves, le reveiller a heure fixe par les alarmes materielles (1 timer + 4 alarmes) ou sur un front GPIO, et mesurer le gain. Attention : le CYW43 doit eteindre sa partie radio, et les courants spécifiques Pico 2 W (radio comprise) ne sont pas publies par la datasheet.

Matériel

Code complet

// main.c - cycle : réveil -> releve -> dormant -> alarme 30 s plus tard
#include "pico/stdlib.h"
#include "pico/sleep.h"

#define BOUTON_REVEIL 15

int main(void) {
    stdio_init_all;
    sleep_init_runsleep_and_sleep_mode(
        SLEEP_MODE_DORMANT,
        WAKE_ON_GPIO | WAKE_ON_ALARM_0 | WAKE_ON_RP2350_DORMANT_WAKEUP_SOURCE_GPIO);
    gpio_init(BOUTON_REVEIL);
    gpio_set_dir(BOUTON_REVEIL, GPIO_IN);
    gpio_pull_up(BOUTON_REVEIL);
    while (true) {
        printf("Releve : je travaille\n");   // tache utile ici
        sleep_run_when_both_cores;          // les deux coeurs doivent dormir
        sleep_goto_dormant_until_timer_alarm_absolute(
            make_timeout_time_ms(30000));     // ou : bouton sur GP15
        printf("Reveille !\n");
    }
}

Vérification attendue

La carte imprime Releve toutes les 30 secondes en mode alarme, et immediatement quand on appuie sur GP15 en mode réveil GPIO. Un amperemetre en série avec la batterie montre une chute nette du courant pendant le sommeil (ordres de grandeur P1.x du Pico 2 : 148-233 microamperes, radio eteinte).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels