8000
Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔋 pidog-energy

Surveillance de batterie pour le robot chien SunFounder PiDog. Quand l'Ă©nergie baisse, le chien vous le dit — Ă  voix haute.

« Énergie faible. 30 pour cent. »

Service de fond, sans dĂ©pendance, qui tourne en mĂȘme temps que vos autres programmes PiDog — notamment pidog-voice.


Ce qu'il fait

  • Lit la tension de la batterie et la convertit en pourcentage
  • À chaque palier franchi : aboie puis annonce le niveau Ă  voix haute
  • Chaque palier n'alerte qu'une fois — pas de harcĂšlement Ă  29 %, 28 %, 27 %

  • Se tait pendant la charge
  • Se rĂ©arme tout seul une fois la batterie rechargĂ©e
  • Survit aux redĂ©marrages : les paliers dĂ©jĂ  annoncĂ©s sont mĂ©morisĂ©s sur disque

Trois choix de conception qui comptent

Il ne bouge aucun servo. L'alerte est purement sonore. Un robot posĂ© sur une table peut donc ĂȘtre surveillĂ© sans risque de chute.

Il n'instancie jamais Pidog(). La tension est lue directement par l'ADC du robot-hat. C'est ce qui permet Ă  ce service de tourner en parallĂšle de pidog-voice : deux objets Pidog dans deux processus se disputeraient le GPIO.

Il ne croit pas aveuglĂ©ment l'ADC. Deux problĂšmes distincts, tous deux constatĂ©s : le convertisseur bruite de ±0,08 V, et — plus vicieux — il renvoie des 0,00 V francs quand les servos tirent du courant (2 lectures sur 9 pendant une marche). Le service Ă©carte donc toute lecture sous 5 V avant de prendre la mĂ©diane : un pack 2S sous 5 V n'alimenterait plus le Pi, qui serait Ă©teint.

Sans ce filtre, la mĂ©diane tombe sur 0 et le robot annonce « batterie critique, 10 pour cent » alors qu'il est Ă  7,4 V. C'est arrivĂ©, d'oĂč le correctif.


Installation

git clone https://github.com/koua29/pidog-energy.git
cd pidog-energy
./install/pi_service.sh          # cron @reboot + supervision, aucun sudo requis

Vérifier :

python3 energy.py --etat         # tension, pourcentage, paliers déjà annoncés
tail -f ~/pidog-energy.log

Désinstaller : ./install/pi_service.sh --retirer

Utilisation manuelle

python3 energy.py                # service (boucle infinie)
python3 energy.py --etat         # état actuel
python3 energy.py --test 30      # joue l'alerte du palier 30 % sans attendre
python3 energy.py --verifier     # valide config.json
python3 energy.py --oublier      # réarme tous les paliers

Configuration

Tout est dans config.json. Aucun code Ă  modifier.

"alertes": [
  { "pourcent": 30, "aboiements": 3 },
  { "pourcent": 20, "aboiements": 4 },
  { "pourcent": 10, "aboiements": 5,
    "annonce": "Batterie critique. {pourcent} pour cent. Rechargez-moi." }
],
"annonce_par_defaut": "Energie faible. {pourcent} pour cent.",
"rearmement_pourcent": 50
Réglage RÎle
alertes[].pourcent Seuil de déclenchement
alertes[].aboiements Nombre d'aboiements avant la phrase (0 = voix seule)
alertes[].annonce Phrase spécifique à ce palier ; {pourcent} est substitué
annonce_par_defaut Phrase utilisée si le palier n'en définit pas (null = aboiements seuls)
rearmement_pourcent Au-dessus de ce niveau, tous les paliers redeviennent annonçables
batterie.intervalle_s Période entre deux mesures (60 s par défaut)
batterie.lectures_par_mesure Nombre de lectures dont on prend la médiane
voix_langue Langue de la synthĂšse pico2wave (fr-FR)

Ajouter un palier ne demande qu'un bloc de plus dans alertes. Validez ensuite avec python3 energy.py --verifier : il refuse les doublons, les seuils hors bornes, et un rearmement_pourcent placé sous le plus haut palier.

Une chute rapide déclenche la bonne alerte

Si la batterie passe de 35 % Ă  8 % entre deux mesures, le service annonce 10 %, pas 30 % : il retient toujours le palier le plus bas atteint.


Limites, dites franchement

Le pourcentage est approximatif. Il vient d'une conversion linéaire de la tension (8,4 V = 100 %, 6,4 V = 0 %). Or une cellule lithium tient un plateau vers 7,4 V puis chute brutalement : le vrai « 50 % » arrive plus tard que ne l'indique le calcul. Les bornes sont dans config.json, ajustez-les à votre pack.

La dĂ©tection de charge est une dĂ©duction, pas une mesure. Le robot-hat n'expose aucun signal de charge. Le service conclut Ă  une charge en observant une hausse soutenue de tension, ou une tension de fin de charge (≄ 8,25 V). Deux consĂ©quences : les toutes premiĂšres minutes d'un branchement peuvent lui Ă©chapper, et un pack fraĂźchement dĂ©branchĂ© reste un moment considĂ©rĂ© comme en charge.


đŸ€ Le matĂ©riel du projet

Liens partenaires Amazon : si vous achetez via ces liens, le projet touche une petite commission, sans surcoût pour vous. Ce sont les trois machines sur lesquelles ce code a été développé et testé.

Robot chien SunFounder PiDog
SunFounder PiDog
Le robot chien
Raspberry Pi 4
Raspberry Pi 4
Le cerveau embarqué
Apple Mac Mini
Apple Mac Mini
Pour aller plus loin — voir pidog-voice

☕ Offrez-moi un cafĂ©

Ce projet est gratuit et open source. S'il vous est utile, vous pouvez me remercier en m'offrant un cafĂ© — il suffit de scanner ce QR code PayPal. Merci beaucoup ! 🙏

QR code PayPal pour offrir un café

Voir aussi

  • pidog-voice — commande vocale française pour le mĂȘme robot. Les deux services tournent ensemble sans conflit.

Licence

MIT © 2026 koua29

About

🔋 Surveillance de batterie pour le robot chien SunFounder PiDog — il annonce son niveau d'Ă©nergie Ă  voix haute, paliers configurables en JSON

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0