🛠 Gestion de batterie LiPo : jauge, charge et seuils bas

Particle Boron · avance · Schéma : IMG-particle-boron-avance-2-boron-gestion-batterie.svg — Boron reliée à une LiPo avec chargeur intégré, LED de statut de charge, jauges tension et pourcentage lues par FuelGauge.

Objectifs

La Boron intègre tout le nécessaire pour une LiPo mono-cellule : chargeur, connecteur batterie et LED de statut (allumée = charge, éteinte = terminée, clignotement 1 Hz = défaut, clignotement rapide = batterie débranchée), plus une jauge de carburant TI sur I2C accessible par l'API FuelGauge (getVCell, getSoC). Ce tutoriel avancé met en place une télémétrie batterie robuste : lecture périodique, alerte cloud sous seuil, et stratégies pour survivre à la décharge profonde — une LiPo à plat a déjà « briké » le cloud de cartes communautaires (retour en 10 SOS, re-claim DFU nécessaire).

Matériel

Code complet

// Boron — telemetrie batterie avec alerte de seuil
#include "Particle.h"
SYSTEM_THREAD(ENABLED);

FuelGauge fuel;
const float SEUIL_CRITIQUE = 20.0;   // % de charge
const float SEUIL_BAS = 35.0;
uint32_t cycle = 0;
bool alerteEnvoyee = false;

void setup {
    Serial.begin(9600);
    Particle.variable("soc", cycle);          // derniere valeur lue
}

void loop {
    if (waitFor( => Cellular.ready, 30000)) {
        float v = fuel.getVCell;
        float soc = fuel.getSoC;
        char msg[96];
        snprintf(msg, sizeof(msg), "V=%.2f SoC=%.1f", v, soc);
        Particle.publish("batterie", msg, PRIVATE);

        if (soc < SEUIL_BAS && !alerteEnvoyee) {
            snprintf(msg, sizeof(msg), "SOC=%.0f%% U=%.2fV", soc, v);
            Particle.publish("batterie-alerte", msg, ALWAYS);
            alerteEnvoyee = true;
        }
        if (soc > SEUIL_CRITIQUE + 20) alerteEnvoyee = false;  // hysteresis
        Serial.printf("%.2f V / %.1f %%\n", v, soc);
    }
    delay(60000);   // 1 minute pour le test ; 1 h en production (+ sommeil)
}

Si la LED de charge rapide-clignote sans batterie, désactivez le chargement de façon persistante via SystemPowerFeature::DISABLE_CHARGING (Power Manager) plutôt que PMIC.disableCharging, que le Power Manager réapplique au reset.

Vérification attendue

Branchée sur USB avec LiPo vide : la LED de charge est allumée, le pourcentage monte régulièrement et les événements batterie suivent. Débranchez le USB : la tension mesurée correspond au repos de la LiPo. Simulez un seuil bas (soc < 35) : l'événement batterie-alerte est publié une seule fois grâce à l'anti-répétition, puis se réarme après recharge.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels