Accueil / Mini ordinateur : Raspberry Pi, Orange Pi, cartes de développement... / Raspberry Pi / Test de l’alimentation UPS LiFePO4wered pour Raspberry Pi

Test de l’alimentation UPS LiFePO4wered pour Raspberry Pi

Vue arrière

Le LiFePO4wered est une alimentation intelligente qui permettra d’ajouter à votre Raspberry Pi une batterie en cas de coupure de courant ou de rendre le Raspberry Pi autonome pour des applications mobiles (projets RC, robotique, timelaps…). Le LiFePO4wered dispose de sa propre API qui permet d’intégrer la gestion d’énergie dans n’importe quel projet. Vous pouvez vous procurer le LiFePO4wered sur Tindie pour environ 35€ environ (hors transport, environ 4€).

Présentation du LiFePO4wered

Le LiFePO4wered est un système d’alimentation pour Raspberry Pi qui vient se substituer à l’alimentation standard. Ce nouveau bloc d’alimentation vient de brancher sur GPIO du Raspberry (4 premières colonnes). L’autonomie annoncée est comprise entre 1 et 3 heures avec une batterie LiFePo4 de 550mAh. Tout dépendra évidemment de l’utilisation du Raspberry et des connexions utilisées (WiFI, Bluetooth, GPIO…). Avec le LiFePO4wered en place, on utilise son Raspberry Pi comme un ordinateur portable. Son utilisation est parfaitement transparente, on peut le laisser branché en permanence. Lorsqu’on débranche le RPI du secteur, il continue d’être alimenté par la batterie.

Caractéristiques techniques

Voici les principales caractéristiques techniques

  • Batterie 3.2V LiFePO4 (Lithium Fer Phosphate) d’une capacité de 550mAh. 2000 cycles de recharge.
  • Chargeur USB avec protection de surcharge permettant d’alimenter le Raspberry sans interruption en cas de débranchement ou de coupure de courant : fonction UPS (Uninterruptible Power Supply).
  • Communication avec le Raspberry Pi via le bus I2C. Permet de suivre le niveau de charge et ajuster les paramètres de fonctionnement. Le module est capable de détecter un arrêt du système.
  • Bouton tactile programmable à l’aide de l’API. Le bouton tactile dispose d’une protection d’activation accidentelle, ce qui évite d’arrêter le Raspberry par erreur.
  • 2 indicateurs à Led. La Led verte indique l’état de fonctionnement du Raspberry. Elle est également programmable. La Led rouge située à l’étage inférieur à coté du connecteur micro-USB indique l’état de charge.

Le LiFePO4wered est compatible avec le Raspberry Pi Model A+, Model B+, Raspberry Pi 2, Raspberry Pi 3 et le Raspberry Pi Zero. Les modèles A et B (les plus anciens) nécessitent un câblage complémentaire.

Installation

Mettez hors tension le Raspberry Pi et débranchez le câble USB d’alimentation. Installez le module LiFePO4wered sur le connecteur GPIO et fixez le en vissant l’entretoise blanche comme sur la photo.

LiFePO4wered dessus raspberry pi ups
Vue avant. Fixation en place

 

LiFePO4wered dessus
Vue arrière

Branchez le câble d’alimentation et appuyez sur le bouton tactile pour allumer le Raspberry.

Installation des librairies

Le code source de la librairie est disponible sur GitHub https://github.com/xorbit/LiFePO4wered-Pi

Commençons par installer les outils nécessaires (git et build-essential)

sudo apt-get -y install build-essential git

Maintenant on clone le dépôt git en local

git clone https://github.com/xorbit/LiFePO4wered­-Pi.git

On entre dans le répertoire et on lance l’installation

cd LiFePO4wered-Pi
python build.py
sudo ./INSTALL.sh

Le script d’installation active le bus I2C et l’UART du GPIO. Si le bus I2C était déjà actif, la Led s’éclaire en vert, sinon elle clignote. Dans ce cas, il est nécessaire de redémarrer le Raspberry avec la commande sudo reboot.

Après le redémarrage, la Led verte ne clignote plus, ce qui signifie que le service a correctement été lancé au démarrage.

Configurer le touchpad

Le LiFePO4wered intégre un bouton sensitif (touch pad) qui permet d’allumer et d’éteindre le Raspberry Pi. Pour prévenir un arrêt accidentel, il faut maintenir le doigt appuyé sur le touch pad environ 2 secondes. Le touch pad arrive déjà pré-configuré. Si toutefois il n’est pas à votre goût, il est possible de personnaliser les paramètres du touch pad à l’aide des trois paramètres suivants :

  • TOUCH_CAP_CYCLES : nombres de cycle de pulsations produits par le capteur sensitif. 20 par défaut
  • TOUCH_THRESHOLD : seuil de détection d’un contact avec le capteur sensitif. 12 par défaut. Mesure combinée à l’hysteresis. Le courant mesuré doit être compris entre threshold – hyteresis et threshold + hyteresis pour déterminer un contact.
  • TOUCH_HYSTERESIS : valeur ajoutée et retranchée au seuil de détection qui permet de définir la zone de mesure du courant. 2 par défaut.

Alimentation électrique sécurisée

Le LiFePO4wered intégré plusieurs mécanismes de sécurité pour protéger le Raspberry Pi, surtout la carte SD. Tout d’abord, il permet d’éteindre correctement le Raspberry Pi à l’aide du Touch Pad (et de l’allumer bien évidemment). Ensuite, le micro-contrôleur surveille en permanence l’alimentation électrique et arrête ou refuse de démarrer le Raspberry Pi dans les cas suivants :

  • VIN_MIN : si la batterie délivre un tension inférieure à 2.85V (réglage usine), une demande d’arrêt immédiat est envoyée au RPI
  • VIN_SHDN : si la batterie délivre un tension inférieure à 2.95V (réglage usine), une demande d’arrêt est envoyée au RPI
  • VIN_BOOT : si la batterie n’est pas assez chargée, au moins 3.14V par défaut, le RPI ne peut pas démarrer. En mettant AUTO_BOOT à 1, le Raspberry Pi est démarré automatiquement lorsque la charge de la batterie est suffisante. Par défaut elle doit au moins délivrée 3.15V (réglage usine).
  • VOUT_MAX : le Raspberry ne peut pas démarrer si la tension de sortie est supérieure à 3.5V (réglage usine)

Tous les seuils de sécurité peuvent être modifiés (sous votre responsabilité) à l’aide de l’outil en ligne de commande présenté un peu plus bas. Enfin le Raspberry Pi est protégé des surtensions électriques car il n’est alimenté par le bloc d’alimentation mais par la batterie.

Configurer le LiFePO4wered à l’aide du CLI

Pour configurer le LiFePO4wered, inutile de se lancer dans un programme python, un petit programme en ligne de commande est disponible lifepo4wered­-cli.

On récupère l’état avec la fonction get, et on affecte une valeur avec la fonction set.

Par exemple, si on veut connaitre le courant délivré par la batterie :

lifepo4wered-cli get vin

Pour éviter toute corruption du système, les changements ne sont pas enregistrés dans la mémoire flash. On peut donc faire autant d’essais que désiré. En cas d’erreur, il suffit de débrancher l’alimentation et de retirer la batterie pour les effacer. Pour rendre les changements permanents, il faut flasher la mémoire avec la commande

Attention. Ne flasher la configuration que si vous être sûre de vous. La modification des réglages usine peut entraîner des dysfonctionnements du Raspberry Pi.

Voici les principaux paramètres que vous pouvez modifier

Fonction Action Lecture

(Get)

Ecriture

(Set)

Configurable

(Save To Flash)

AUTO_BOOT le Raspberry est démarré automatiquement lorsque la batterie est suffisamment chargée (3.15V par défaut).  X  X

LED_STATE

Mode d’allumage de la Led verte signalant l’état de fonctionnement. LED_STATE peut prendre les valeurs suivantes :

  • 0x00 (Led Off) : Raspberry arrêté
  • 0x01 (Led On) : Raspberry Pi sous tension et en fonctionnement
  • 0x02 (Led clignote) : démarrage ou arrêt en cours
  • 0x03 (Led clignote rapidement) : disponible pour utilisateur
 X X X
TOUCH_STATE Etat du touch pad :

  • 0x00 : n’est pas touché
  • 0x01 : le touch pad vient d’être touché
  • 0x0E : le contact avec le touch pad vient d’être libéré
 X
TOUCH_CAP_CYCLES Nombre de cycle de mesure. 20 par défaut X X X
TOUCH_THRESHOLD Seuil de détection d’un contact. 12 par défaut. X X X
TOUCH_HYSTERESIS Valeur ajoutée et retranchée au seuil pour déterminer la zone de détection d’un contact. 2 par défaut. X X X
VIN Tension d’alimentation de la batterie. X
VOUT Tension de sortie de la batterie (alimentation du Raspberry) X
VIN_MIN Tension minimale de sortie de la batterie avant un arrêt immédiat du système. 2.85V par défaut. X X X
VIN_SHDN Tension minimale de sortie de la batterie avant un arrêt du système. 2.95V par défaut. X X X
VIN_BOOT Tension minimale délibérée par la batterie permettant de démarrer le Raspberry. 3.15V par défaut X X X
AUTO_BOOT Démarre automatiquement le Raspberry Pi lorsque la batterie est suffisamment chargée. X X X
WAKE_TIME Arrête le Raspberry Pi durant une durée (approximative) indiquée en minutes X X X
SHDN_DELAY Temps laissé au système pour s’arrêter en secondes avant que l’alimentation soit arrêtée. 65 par défaut. X X X
PI_RUNNING Etat du Raspberry. 0 si arrêté. 1 si démarré. Déclenche l’arrêt du système si mis à 0 manuellement. X X
CFG_WRITE Déclenche l’enregistrement des paramètres lorsqu’on passe le paramètre à 1. Attention. Il n’est pas possible d’annuler l’opération. De mauvais paramètres peuvent détériorer et rendre inutilisable le matériel X X

Conclusions

Le LiFePO4wered apporte une alimentation sécurisée au Raspberry Pi ainsi qu’un bouton d’extinction fiable. La carte SD si sensible au débranchement accidentel du câble USB es enfin protégée. En cas de coupure de courant, le Raspberry sera arrêté « proprement » si vous êtes absent de chez vous. LiFePO4wered est une bonne solution pour développer des applications mobiles ou robotique. On regrettera toutefois la monopolisation de plusieurs broches (I2C, UART, +5V…) qui peuvent être nécessaires pour certains projets. Il faudra alors passer par un Arduino. Peut être que dans une prochaine version il sera compatible avec les spécifications HAT.

Liens utiles

Code source du projet : https://github.com/xorbit/LiFePO4wered-Pi

Site internet du projet : http://lifepo4wered.com

Documentation technique détaillée : http://lifepo4wered.com/files/LiFePO4wered-Pi-Product-Brief.pdf