Publié le 3 août 2018 - par

PiJuice une alimentation ininterruptible UPS pour votre Raspberry Pi

PiJuice est une alimentation non-interruptible (UPS) qui se charge de maintenir l’alimentation de votre Raspberry Pi. Elle embarque une horloge (RTC) qui conserve l’heure même sans alimentation ni connexion Internet. Un microcontrôleur (MCU) gère les fonctionnalités d’arrêt « propre » et permet un véritable état de veille avec une consommation réduite d’énergie, ainsi qu’un redémarrage programmé.

============= Article sponsorisé =============

La carte PiJuice, une alimentation non-interruptible (UPS)

Le projet KickStarter

Je vous avais présenté ce projet KickStarter qui avait été largement financé puisque les « bakers » avaient misé 124 372 £ pour les 10 000 £ attendues ! On était en… février 2015 et l’article sur PiJuice : PiJuice pour donner la pêche à votre framboise avait suscité de nombreux espoirs d’avoir enfin une alimentation sauvegardée (UPS= Uninterruptible Power Supply)… Espoirs déçus puisque le projet a traîné en longueur et que les premières cartes PiJuice n’ont été disponibles que tout récemment (3 ans plus tard, quand même). Kubii vient de mettre cette carte à son catalogue et m’en a fourni un exemplaire pour ces premiers tests.

Des LED RVB permettent de surveiller le niveau de charge de la batterie et d’autres informations si besoin (elles sont programmables). Il y a aussi trois boutons poussoir programmables qui vous permettront de déclencher des événements ou des scripts personnalisables (en dehors de leurs fonctions prédéfinies). PiJuice n’utilise que cinq des broches GPIO du Raspberry Pi (alimentation et bus I2C), le reste est libre et disponible via le connecteur mâle  présent sur la PiJuice, qui permet d’utiliser d’autres cartes au dessus de la PiJuice. La carte peut être alimentée directement à partir du secteur avec une alimentation standard Raspberry Pi, par une batterie embarquée, par des batteries externes, des panneaux solaires, des éoliennes et d’autres sources d’énergie renouvelable. (pour l’énergie hydrolienne, c’est râpé ! A peine ouverte l’usine de Cherbourg vient de fermer 🙁 )

La carte est compatible Raspberry Pi HAT, avec une EEPROM embarquée (vous pouvez désactiver l’EEPROM si vous le souhaitez). Elle a été conçue pour les Raspberry Pi A+, B+, 2B et 3B mais elle est aussi électriquement compatible avec les Raspberry Pi Zero v1.3 et Zero W v1.1 ou tout autre Pi.

PiJuice est une carte approuvée CE et FCC et des tests de sécurité des batteries ont également été effectués pour assurer la sécurité lors de l’utilisation dans des environnements éducatifs ou industriels.

On déballe la PiJuice

Pas de surprise, le carton est correct, pas hyper solide mais comme la boîte était dans un emballage garni de bulles, tout est arrivé intact.

A l’intérieur un sac antistatique protège la carte. La batterie est déjà en place, mais  entre la batterie et le connecteur il y a une plaquette de plastique transparent qu’on va retrouver un peu plus loin. Une notice d’utilisation plutôt légère (pas que pour le poids du papier !) et en anglais. En fait toute la doc est en ligne (en anglais) et vous trouverez les liens dans la rubrique Sources en bas de cette page. On trouve aussi un sachet avec les vis pour fixer la PiJuice sur un Raspberry Pi, ainsi qu’une sonde à ressort (pogo/spring pin (Mill-Max 0929-7-15-20-75-14-11-0 ou 0929-7-15-20-77-14-11-0) destinée à faire contact sur la pastille « Run » du Raspberry Pi pour le « réveiller »… je vous en reparle plus loin.

On trouve aussi quelques autocollants qui pourront décorer un coffret dans lequel vous utiliserez la PiJuice.

Pour les tests, j’ai choisi un Raspberry Pi 2 qui passait par là. Il a déjà bien vécu et sa mission du jour est de montrer comment cette carte fonctionne…

Une fois la carte en place sur le Raspberry Pi 2, on remarque le connecteur GPIO qui va permettre de continuer à utiliser les ports disponibles, la carte PiJuice n’utilisa que le port I2C et les pattes d’accès à l’EEPROM HAT.

patte 3 => I2C_SDA to MCU
patte 5 => I2C_SCL to MCU
patte 27 => I2C_SDA to HAT EEPROM
patte 28 => I2C_SDL to HAT EEPROM

Mise en service de la batterie

Retirez la languette en plastique transparent qui empêche le contact entre la batterie et son connecteur. « Cigoulez » (bougez) la batterie pour qu’elle vienne bien faire contact. Au premier démarrage j’ai eu quelques soucis pour afficher la charge batterie, car le contact était mauvais…

Vous pouvez maintenant connecter l’alimentation sur la prise du Raspberry Pi et continuer avec l’installation du logiciel dédié.

Installer le logiciel de la carte PiJuice

PiJuice a tout prévu et l’installation est d’une facilité déconcertante. Je suis parti d’une version graphique de Raspbian Stretch, version 2018-06-27 datée de juin 2018. Faites d’abord un update/upgrade comme d’habitude puis :

L’installation démarre… Répondez « Voui » pour continuer et….

Quelques minutes plus tard la totalité des utilitaires nécessaires à l’exploitation de votre carte PiJuice est installée.

Le menu « Préférences » du Raspberry Pi avant installation des utilitaires PiJuice.

Après un redémarrage, une nouvelle icône « PiJuice Settings » apparaît sous Menu > Préférences. Le même menu sera aussi accessible en cliquant avec le bouton droit de la souris sur l’icône qui apparait dans la barre de tâches.

[stextbox id=’info’ caption=’Raspbian Lite’]Si vous souhaitez installer uniquement la version légère de PiJuice sans interface graphique utilisez :
sudo apt-get install pijuice-base
Ceci est plus particulièrement indiqué pour Raspbian Lite ou pour une installation headless.[/stextbox]

La configuration de la carte PiJuice

Ici je ne vais faire qu’effleurer la configuration. Je vous présente les fenêtres du menu de configuration, pour vous montrer les nombreuses options. Si certaines vous intéressent, il faudra vous reporter à la notice d’origine, très détaillée…

Entrez dans le menu de configuration en passant par le menu, ou en faisant un clic droit sur l’icône de la PiJuice dans la barre des tâches.

 

La fenêtre s’ouvre sur le premier onglet : HAT. Il indique la charge de la batterie et sa tension. Vous pourrez ainsi la surveiller de près. Sur la deuxième ligne, GPIO power input on voit que la tension qui arrive sur la PiJuice via le GPIO est à 4,831v et est indiquée faible. J’utilise pourtant une « vraie » alimentation officielle avec un Raspberry Pi gravé dessus…  La ligne suivante USB Micro power input indique que l’alimentation n’est pas présente sur la micro USB de la PiJuice (normal, je l’ai branchée sur le Raspberry Pi 🙂 )

Une ligne indique une éventuelle erreur (je n’en ai pas encore vu)… et enfin on a
System Switch : Ce commutateur hardware piloté par soft est prévu pour une utilisation avec VSYS sur J3 (les deux picots à gauche sur l’image ci-dessus marqués GND et VSYS) pour alimenter des périphériques externes.

  • off – la broche VSYS est inactive
  • 500mA – La broche VSYS fournit jusqu’à 500mA
  • 2100mA – La broche VSYS fournit jusqu’à 2100mA

Le bouton Configure HAT sera vu plus loin, il ouvre une deuxième série de menus…

Le deuxième onglet donne accès aux réglages du « réveil« . C’est ici que vous définirez des horaires pour que votre Raspberry Pi se réveille automatiquement. C’est par exemple utile pour les applications de surveillance à distance… mais vous adapterez en fonction de votre application. Cette fonction ne fonctionnera que si vous alimentez l’ensemble via la prise micro USB de la PiJuice ou si le fonctionnement se fait sur batterie. Si la batterie est faible et que vous alimentez via le GPIO du Raspberry Pis GPIO, la seule façon d’activer cette fonction est de souder la « broche à ressort » optionnelle fournie avec le PiJuice HAT (voir un peu plus loin pour plus de détails).

Lors du réglage de l’alarme de réveil pour un réveil répété, après le redémarrage initial, la fonction Wakeup que vous aviez activée est désactivée en raison de l’initialisation de l’horloge par Raspbian, qui réinitialise le bit correspondant dans le firmware de PiJuice. Pour résoudre ce problème, vous devrez exécuter un script pour réactiver la capacité de réveil.

=> voir https://github.com/PiSupply/PiJuice/blob/master/Software/README.md

Le troisième onglet System Task permet de gérer les tâches système. Vous pourrez régler la minuterie du chien de garde (WatchDog) – utile pour les applications distantes lorsque vous ne pouvez pas venir physiquement faire une réinitialisation vous-même, si le Raspberry Pi plante ou se bloque.
Le logiciel associé à PiJuice surveille un « battement de cœur » (HeartBeat) – s’il ne le détecte pas après une période de temps définie, il réinitialise automatiquement le Raspberry Pi. Vous pouvez également régler ici le réveil en fonction du niveau de charge, du niveau de batterie minimum et d’une tension.

Le réglage du Watchdog définit le temps après lequel il sera mis sous tension s’il ne reçoit pas de signal de battement de cœur. Le pas de temps est en minutes, de sorte que le délai d’attente minimum est d’une minute et le maximum est de 65535 minutes (45 jours et demi). Le nombre peut être n’importe quel nombre entier compris entre un et 65535. Si vous réglez l’heure sur zéro, le chien de garde sera désactivé.

System Task Enabled (Tâche système activée) – Cochez cette case pour activer une ou plusieurs des options suivantes :

    • Watchdog – Chien de garde – Voir ci dessus
    • Wakeup on charge – Réveil en charge – Définissez un pourcentage de charge de la batterie pour réveiller le Raspberry Pi. Habituellement, cette valeur est élevée, entre 90-100%. Ce réglage est généralement utilisé en conjonction avec la « charge minimale ».
  • Minimum Charge – Charge minimale – Définissez un pourcentage minimum de charge de la batterie pour arrêter le Raspberry Pi en toute sécurité lorsque la batterie devient inférieure à cette valeur. Les valeurs basses doivent généralement se situer entre 5 et 10 %. REMARQUE : Le type d’arrêt du système peut être réglé sous « Événements système » dans le menu « Faible charge ».
  • Minimum Battery Voltage – Tension minimale de la batterie – Définir un niveau minimum de tension de la batterie qui provoque l’arrêt du Raspberry Pi en toute sécurité lorsque le niveau devient inférieur au niveau réglé. Remarque : Le type d’arrêt du système peut être réglé sous « Événements système ».

Le quatrième onglet est System Events (Evénements système). Il vous permet de déclencher des événements pour certains scénarios tels qu’une charge faible, une tension basse et autres. Chaque paramètre a un couple d’options prédéfinies à choisir, et vous pouvez également sélectionner des options dans l’onglet « scripts utilisateur » qui vous permet de déclencher vos propres scripts personnalisés lorsque certains événements système se produisent pour un maximum de flexibilité.

Le dernier onglet est User Scripts. C’est l’onglet des scripts utilisateur dont nous avons parlé plus haut.Vous pouvez ajouter des chemins d’accès aux scripts personnalisés que vous pouvez déclencher sur les événements.

Les scripts utilisateur peuvent être assignés à des fonctions utilisateur appelées par System Task lorsque des événements surviennent. Il doit s’agir d’une fonction de rappel non bloquante qui implémente des fonctions système personnalisées ou l’enregistrement d’événements.

Les fonctions utilisateur sont codées en binaire sur 4 chiffres et ont 15 valeurs possibles, le code 0 est USER_EVENT ce qui signifie qu’il ne sera pas traité par System Task, mais laissé à l’utilisateur et à l’API python qui doivent le gérer. L’interface graphique n’affiche initialement que 8 lignes. Cliquez sur le bouton « Show more » pour afficher les 15 lignes.

[stextbox id=’warning’ caption=’Remarque’]Pour que votre script utilisateur s’exécute, vous devez vous assurer qu’il est exécutable et que la System Task est activée dans le menu System Task. Si vous affectez également une fonction utilisateur à un bouton, vous devez également affecter la fonction utilisateur sous l’onglet Boutons dans PiJuice HAT Configuration. Pour rendre votre script exécutable, vous pouvez le faire à partir en ligne de commande avec la commande suivante :
chmod +x user_script.py
NOTE : Les scripts exécutés par le service pijuice.service s’exécuteront en tant que root et non en tant que pi.
Autrement, vous pouvez simplement ajouter ce qui suit dans l’onglet Scripts utilisateur pour la fonction correspondante :
python user_script.py [/stextbox]

Si vous cliquez sur le bouton Configure HAT de l’onglet HAT de PiJuice Settings, Vous ouvrez la fenêtre PiJuice HAT Configuration. Cette fenêtre donne accès à 6 onglets…

Le premier intitulé General permet de régler la configuration générale pour la carte PiJuice. Il vous permet de configurer un grand nombre de paramètres matériels (hardware) sur la PiJuice elle-même (par opposition aux menus précédents qui configuraient en fait le logiciel – j’espère que vous me suivez !?).
Il vous permet par exemple de sélectionner si vous avez installé la broche à ressort pour le « Run », les adresses I2C de la carte HAT et du RTC,  de changer la protection en écriture sur l’EEPROM ainsi que son adresse physique I2C réelle. Ces fonctionnalités EEPROM peuvent être très utiles si vous voulez empiler une autre carte HAT sur la PiJuice mais que vous cette autre carte HAT est auto-configure.

Priorité des entrées : Inputs precedence – Sélectionne l’entrée d’alimentation qui aura priorité pour la charge et pour l’alimentation de la sortie VSYS lorsque les deux sont présents, micro USB de la carte HAT et Borne GPIO 5V. 5V_GPIO est sélectionné par défaut.
Entrée GPIO activée : GPIO input Enabled – Active/désactive l’alimentation HAT à partir de l’entrée GPIO 5V. Activé par défaut.
Limite de courant Micro USB : USB Micro current limit – Sélectionne le courant maximum que la carte HAT peut consommer sur une source d’alimentation connectée à la micro USB. 2.5A est sélectionné par défaut.
USB Micro IN DPM : Sélectionne la tension minimale à l’entrée d’alimentation sur la Micro USB pour la gestion dynamique de l’alimentation.réglé par défaut à 4.2V .
Mise en route si pas de batterie : No battery turn on – Si activé, la PiJuice s’alimentaera automatiquement sur le rail 5V et déclenchera le réveil dès que l’alimentation apparaîtra sur l’entrée micro USB et qu’il n’y a pas de batterie. Désactivé par défaut.
Mode régulateur de puissance : Power Regulator Mode – Sélectionne le mode de fonctionnement du régulateur de puissance. POWER_SOURCE_DETECTION par défaut.

[stextbox id=’info’ caption=’Note’]L’utilisation du bouton « Reset to default configuration » en bas à gauche, rétablit les paramètres par défaut de la carte et pendant un court instant, l’interface graphique indique « COMMUNICATION_ERROR« .[/stextbox]

L’onglet suivant c’est le menu des boutons – c’est ici que vous configurez ce qui se passe quand on appuie sur les boutons de la PiJuice. Il y a trois boutons CMS, dont un relié à un connecteur 2 broches espacées de 2,54 mm, pour que vous puissiez connecter un bouton extérieur sur un câble, monté sur un boîtier ou n’importe où ailleurs.

Il y a un certain nombre de comportements prédéfinis pour les boutons – startup/shutdown etc. et ce menu est également lié au menu « User Scripts » vu plus haut, ce qui signifie que vous pouvez déclencher vos propres scripts en appuyant sur l’un de ces boutons très facilement.

Vous pouvez même déclencher différents événements pour un appui court, un relâché, un appui simple ( 800mS), un double appui et deux appuis longs de durée différente – vous pouvez même configurer le temps que ces appuis longs mettront avant de déclencher l’événement. Comme vous pouvez le voir, le premier bouton est déjà configuré pour la mise en route du système et nous vous recommandons fortement qu’au moins un des boutons soit configuré avec ces paramètres, au cas où vous auriez des problèmes pour allumer et éteindre votre PiJuice :-).

[stextbox id=’warning’ caption=’Remarque’]Le paramètre Parameter est une durée exprimée en millisecondes pour chaque pression de touche.[/stextbox]

Cet onglet donne accès au menu LEDs – comme pour les boutons, les LEDs sont très polyvalentes. Elles peuvent avoir des fonctions standard (celles affichées ci-dessus), Elles peuvent aussi avoir des fonctions prédéfinies grâce auxquelles vous pouvez définir des comportements personnalisés pour chacune d’elles.

Chaque LED peut être affectée à une fonction prédéfinie prédéfinie ou configurée pour être commandée par le logiciel utilisateur USER_LED.

Le menu Battery est très important. Il vous permet de définir des profils de charge pour le circuit de charge de la carte PiJuice afin de charger correctement et efficacement la batterie, de surveiller correctement les pourcentages de charge etc.Il y a un certain nombre de réglages intégrés comme ceux qui concernent la batterie livrée par défaut avec la PiJuice. : la BP7X, mais aussi toutes celle sui seront disponibles. Vous aurez aussi la possibilité d’ajouter vos propres profils de charge personnalisés et même votre propre capteur de température de batterie afin d’augmenter la sécurité et l’efficacité de charge de vos batteries.
Certains profils sont même codés en dur dans le firmware du PiJuice, ce qui vous permet de sélectionner des profils à l’aide du commutateur DIP Switch intégré PiJuices.
Vous trouverez plus d’informations sur les profils par défaut et la façon de créer des profils supplémentaires dans la section Matériel.

Cet onglet donne accès à la configuration des deux ports d’E/S du microcontrôleur de la carte PiJuice, sur le connecteur P3. La boîte de sélection des modes permet de programmer chaque broche IO comme vous le voyez dans la liste déroulante.

Enfin, ce menu Firmware est très important. Il vous permet de mettre à jour le firmware sur la puce MCU de la PiJuice, ce qui signifie que le firmware évolue, qu’il est amélioré et que vous pourrez appliquer facilement les mises à jour ou améliorations qui seront disponibles.

Notez que le paquet PiJuice que vous avez installé est livré avec un firmware par défaut situé sur le chemin d’accès ci-dessous :
/usr/share/pijuice/data/firmware/ /usr/share/pijuice/data/firmware/. Le nom de fichier ressemble à PiJuice-V1.2-2018_05_05_02.elf.binary
Si vous voulez utiliser l’interface graphique pour mettre à jour le firmware vers une version plus récente, vous devrez remplacer ce fichier par le nouveau que vous pouvez télécharger à partir de la section Firmware du site.
Rappelez-vous cependant que le firmware que vous téléchargez avec APT ou Github est généralement le seul que vous devrez utiliser pour cette version spécifique de la version du logiciel, donc ne mettez à jour le firmware que si l’interface graphique signale que le firmware n’est pas à jour ou si PiJuice vous le demande.
Pendant la mise à jour, la fenêtre peut se figer. Attendez que la mise à jour soit terminée avant de continuer quoi que ce soit d’autre. N’éteignez surtout pas le Raspberry Pi.

Sur ma PiJuice, la fenêtre graphique (ci-dessus) indiquait que la version de firmware 1.2 est disponible, j’ai donc cliqué sur le bouton Update Firmware, puis validé la fenêtre d’avertissement et le firmware de ma PiJuice a été mis à jours sans plus de difficulté 🙂

Après la mise à jour la fenêtre indiquait que le firmware était la dernière version disponible (Firmware is up to date).

Exemple de changement de couleur de la LED D1. Les niveaux dans chaque bandeau de couleur ne semblent pas très bien gérés 🙂

Mise à jour de l’horloge RTC de la PiJuice… très compliqué, cliquez sur le bouton Set RTC time 😉 l’heure du Raspberry Pi est transférée à la carte PiJuice et… c’est fini 🙂

Pijuice CLI : PiJuice en ligne de commande

Pour les utilisateurs qui préfèrent utiliser leur Raspberry Pi avec une version Lite de Raspbian ou qui accèdent au Raspberry Pi en SSH via un accès à distance. Il est possible d’utiliser un outil en ligne de commande, simple et pratique, qui réplique fidèlement l’interface graphique du logiciel PiJuice.

Pour lancer la CLI de PiJuice, il suffit d’ouvrir le Terminal ou en ligne de commande, de taper la commande suivante :

L’interface en ligne de commande PiJuice est une extension de l’interface graphique de configuration de la carte PiJuice. Cependant, les tâches système, les événements système et les scripts utilisateur ne peuvent pas être configurés à partir de l’interface en ligne de commande. Pour configurer ces options, vous devrez modifier directement le fichier JSON /var/lib/pijuice/pijuice_config.JSON.

Pour faire défiler le menu, utilisez simplement les flèches de votre clavier et appuyez sur la touche Entrée pour sélectionner des options ou naviguer dans le système de menus.
voir https://github.com/PiSupply/PiJuice/blob/master/Software/README.md#pijuice-cli

La carte PiJuice

Cliquez pour agrandir

L’image ci-dessus présente les deux face du circuit-imprimé PiJuice. Vous trouverez ci-dessous un descriptif de certaines des parties mises en évidence. Pour le reste, rendez vous sur la page Hardware (en anglais).  est utilisée dans les descriptions suivantes pour mettre en évidence certaines des entrées/sorties et d’autres informations matérielles utiles.

Un connecteur situé au dessus des contacts de la batterie permet de connecter une batterie externe. L’entrée des fils se fait volontairement du côté batterie, pour empêcher l’utilisation simultanée de deux batteries.

Interrupteurs

Sur la carte PiJuice, et en vert sur l’image ci-dessus, il y a trois boutons poussoirs et un interrupteur DIP. Noter que SW1 et J5 ont la même fonction… J5 permet de relier un bouton-poussoir externe pour faciliter l’utilisation, par exemple si vous mettez la carte dans un boîtier (il fonctionne comme le bouton A/M d’un PC).

Boutons poussoir et LEDs

Les boutons poussoir sont sur le bord de la carte PiJuice, côté carte SD du Raspberry Pi. Ils ont des fonctions par défaut mais peuvent être configurés par l’utilisateur dans un fichier JSON

    • SW1/J5 est le bouton A/M par défaut :
      Appuyer une seule fois pour mettre sous tension (relâcher en moins de 800 ms)
      Appuyer au moins 10 secondes pour arrêter « proprement » le système.
      Une pression longue d’au moins 20 secondes coupe l’alimentation « sauvagement »
    • SW2 est un bouton utilisateur par défaut, configuré pour déclencher des scripts utilisateur :
      Appuyer une seule fois en moins de 400ms pour lancer « USER_FUNC1 ».
      Double-appui dans les 600ms pour lancer « USER_FUNC2 ».
  • SW3 est un bouton utilisateur par défaut, configuré pour déclencher des scripts utilisateur :
    Un appui appelle « USER_FUNC3 ».
    Le relâchement du bouton appelle « USER_FUNC4 ».

Les réglages par défaut sont accessibles via l’onglet « Buttons » de la fenêtre de configuration de PiJuice. Consultez les sections hardware et software pour plus d’informations [en anglais].

Les LED

  • LED1 – Etat de la charge:
    • Raspberry Pi éteint
      • #00FF00 Clignote en vert : Standby
      • #0000FF Clignote en bleu : Charge
      • #FF0000  Clignote en rouge : Batterie faible
    • Raspberry Pi en fonctionnement
      • #00FF00 Vert fixe : Alimentation en fonctionnement – Batterie à plus de 50%
      • #0000FF Clignote en bleu : Charge
      • #FFA500 Orange fixe : Batterie basse – niveau < 50%
      • #FF0000 Rouge fixe : Batterie basse – niveau < 15% ou batterie absente

Configuration des LED de la carte PiJuice.

Le contact de « réveil » du Raspberry Pi

C’est une broche à souder qui est fournie. Sur l’image ci-dessus la partie droite de la broche sera soudée au circuit imprimé de la PiJuice, et la partie gauche, montée sur ressort, viendra appuyer sur la partille « Run » du Raspberry Pi que vous souhaitez réveiller. Ça fonctionne sans doute très bien, mais j’avoue que je ne suis pas vraiment partisan de ce genre de contact…

En fonction du Raspberry Pi que vous utilisez, il faudra souder la broche dans le trou correspondant, bien à la perpendiculaire du circuit imprimé… et vérifier qu’elle se « pose » parfaitement sur la borne « Run » du Raspberry Pi quand vous procédez au montage…

  • TP1 – pour le Raspberry Pi 3B
  • TP2 – pour le Raspberry Pi Zero
  • TP3 – pour le Raspberry Pi B+ et le 2B

Fonctions spéciales

  • Une double pression longue sur SW1 et SW2 pendant 20 secondes réinitialisera la configuration PiJuice HAT à sa valeur par défaut. Ceci s’applique uniquement à la configuration du microcontrôleur MCU.
  • Maintenir la touche SW3 enfoncée pendant la mise sous tension de PiJuice lancera le bootloader. Ceci n’est utilisé que dans les cas où l’initialisation normale via I2C ne fonctionne pas, à cause d’un firmware endommagé.
  •  

Les composants actifs principaux de la carte PiJuice


L’image ci-dessus met en évidence les principaux circuits intégrés utilisés sur PiJuice. Des liens vers les différentes fiches techniques ont été fournis conformément à la description.

  1. Le microcontrôleur est un ST Micro STM32F030CCT6 ARM Cortex-M0, 48MHz, F64KB, R8KB, I2C, SPI, USART, 2.4-3.6V.
  2. Circuit de gestion de la charge batterie – BQ24160RGET Chargeur Lithium-Ion/Polymère, 2.5A, 4.2-10V
  3. Jauge de charge – LC709203FQH-01TWG Jauge de charge de la batterie, 1 cellule Li-ion, 2,8%.
  4. Commutateur de distribution de puissance – NCP380LMUAJAJAJAATBG Commutateur à limitation de courant fixe et réglable
  5. EEPROM – CAT24C32WI-GT3 EEPROM, I2C, 32KBIT, 400KHZ, 1V7-5V5

Sous le soleil

Il est possible de recharger la batterie avec autre chose qu’une alimentation. Chez Kubii vous trouverez un panneau solaire de 12 watts, par exemple, adapté à la PiJuice

Pour ma part, j’ai opté pour un panneau de 6 watts, car je ne pense pas réaliser un système complètement alimenté par le solaire.

A noter le logo de PiJuice joliment brodé sur la toile du panneau solaire. Si ça ne participe pas au fonctionnement, c’est quand même joli 😉

A l’arrière du panneau une pochette contient une prise USB (le convertisseur 5v est sans doute intégré à la prise)… et un câble USB d’alimentation pour le Raspberry Pi. Comme on est sur de l’USB classique, vous pourrez aussi recharger votre smartphone sans participer au réchauffement du Rhône par ces temps de canicule (on est le 3 août et il fait 32°C en ce moment)

Le panneau solaire est bien protégé dans une pochette rigide. Celui qua j’ai reçu avait un séparateur en mousse pris en sandwich entre les panneaux.

Gros plan sur la prise USB et le câble d’alimentation pour le Raspberry Pi.

Cliquez pour agrandir

Allez hop, tout le monde au soleil pour un test. En vrai, j’ai dû protéger le testeur de charge USB avec un gros rouleau d’adhésif plus un pare-soleil car la lumière était telle que je ne pouvais pas distinguer l’affichage sur la photo 🙂

Sur cet agrandissement de l’image, on voit que le panneau solaire délivre 5,16v, ce qui est bien pour le Raspberry Pi. Le courant consommé est de 250mA pour le Pi2 plus la carte PiJuice. La batterie étant complètement chargée, le courant consommé est limité, mais il reste de la marge, puisque le panneau peut délivrer 6 watts (plus de 1A). Ici le panneau solaire est simplement posé sur une table de jardin, à plat. Il est possible d’augmenter un peu l’énergie fournie en « tournant » le panneau solaire en direction du soleil.

Bonus

Vous trouverez en ligne cette étiquette à imprimer et à coller sur la batterie, pour garder sous les yeux les fonctions préprogrammées de la PiJuice. Après, rien ne vous interdit de créer votre propre étiquette en fonction du paramétrage de votre carte…

Conclusion

Cette carte PiJuice (vendue un peu plus de 50€ par Kubii) augmente d’une façon énorme les possibilités du Raspberry Pi. Sa fonction première est bien sûr de le préserver des coupures de courant (bon, faut pas que ça dure une semaine comme à Montparnasse, sinon, à défaut de panneau solaire votre Raspberry Pi va s’arrêter 🙂 ). Elle apporte au Raspberry Pi les fonctions d’arrêt « propre » qui lui manquent, ce qui évitera bien des tracas de redémarrage pour des applications critiques.

Mais en plus, une horloge RTC maintient l’heure (pratique quand il n’y a pas de connexion réseau : ruche, cabane au fond du jardin…) et permet de réveiller le RasPi à intervalles programmés. Sans compter les possibilités offertes par les 3 boutons poussoirs capable de déclencher de multiples scripts en fonction des actions qu’ils détectent… ainsi que la possibilité d’empiler une autre carte par dessus…

A mon avis, si vous avez des applications sensibles (coupures de courant à proscrire, démarrage programmé du Raspberry Pi, besoin de fonctions supplémentaires), les 50€ consacrés à l’acaht de cette carte seront vite amortis.

Si vous avez testé la PiJuice, n’hésitez surtout pas à dire ce que vous en pensez dans les commentaires ci-dessous, ils sont faits pour ça !

Sources

Bases de la carte PiJuice
https://github.com/PiSupply/PiJuice

Chez Kubii
Carte Pi JuicePanneau Solaire 12wBatterie de rechange 2300 mAh

Hardware
https://github.com/PiSupply/PiJuice/blob/master/Hardware/README.md

User Guide
https://github.com/PiSupply/PiJuice/blob/master/Documentation/PiJuice%20Guide.pdf

Battery config
https://github.com/PiSupply/PiJuice/blob/master/Hardware/Batteries/Pijuice_battery_config.xlsx

Logos de charge batterie
https://www.kickstarter.com/projects/pijuice/pijuice-a-portable-project-platform-for-every-rasp/posts/1893636

Calculateur de durée batterie
https://github.com/PiSupply/PiJuice/raw/master/Hardware/Batteries/PiJuice%20Battery%20Discharge%20Levels.xlsx

Projet KickStarter
https://www.kickstarter.com/projects/pijuice/pijuice-a-portable-project-platform-for-every-rasp?lang=fr

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

41 réflexions au sujet de « PiJuice une alimentation ininterruptible UPS pour votre Raspberry Pi »

  1. CDBI30

    Je viens de la recevoir….. super
    Dommage que les poussoirs SW2 et SW3 n’aient pas de connecteur pour les déporter
    Donc non utilisables dans un boitier

    Répondre
    1. CDBI30

      pour l’I2C pas de problème
      mais attention aux conflits d’alimentation:
      la carte Pjuice alimente le PI par le GPIO et contrôle proprement l’Arret/Marche
      la carte Sabre fait pareil

      Répondre
  2. CDBI30

    un petit/gros défaut:
    les fenêtre de configuration General et Buttons de Configure HAT
    ne rentrent pas en hauteur dans un écran de 800×480
    Donc impossible de la programmer, les boutons de validation étant cachès en bas
    il faut au minimum un écran 800×600

    Répondre
  3. Nicolas

    En fait je cherche un moyen pour que le pi s’éteigne proprement quand son alim est coupée, car il est sur une alimentation avec un interrupteur général.
    Un système avec une batterie qui détecte la coupure de courant et provoque un shutdown serait parfait.

    Répondre
  4. CDBI30

    Allo la RTC
    Configuration et mise à l’heure avec le WiFi
    Je coupe le Wifi (pas de réseau)
    Halt puis power off avec SW1 et j’attends un peu
    Je remets tout en marche, uniquement sur batterie et l’heure du raspi n’est pas bonne
    un sudo hwclock -r donne la bonne heure
    comment faire pour raffraichir l’heure system

    Répondre
    1. CDBI30

      je me répond, mais cela peut servir à d’autres:
      il faut déclarer la DS1307 dans
      /boot/config.txt et dans /etc/modules
      et modifier /lib/udev/hwclock-set
      comme pour une RTC-PI normale

      Répondre
      1. 15bd621

        Hello, how to proceed, these online commands or in the files? I do not understand the implementation being novice on raspberry, thank you in advance for your answer.

        Répondre
  5. marc

    Concernant l’utilisation de l’i2c je me pose des questions…

    Je ne comprends pas que cela ne soit pas plus explicite dans la documentation.

    Les broches 2 et 3 (SDA, SDC) sont marqués « used ».
    Ca veut dire qu’on ne peut plus faire d’i2c ?

    Je suppose que c’est une erreur et que le fait de pouvoir configurer une adresse présuppose que l’on peut communiquer avec le bus sur d’autres addresses, non ?

    Pour un projet clairement destiné à l’embarqué et à la domotique ca serait un peu dommage.. Les périphérique en i2c sont légions !

    Quelqu’un aurait-il cette info ?

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      il faut parcourir la doc d’origine. Cet article n’est qu’un extrait de cette doc.
      Les liens sont en fin d’article
      sur https://github.com/PiSupply/PiJuice il est indiqué :
      « PiJuice only uses five of the Pi’s GPIO pins (just power and I2C), the rest are free and made available via the stacking header which allows for other boards to be used along side PiJuice. »
      et plus loin :
      « The EEPROM can be disabled and its I2C address changed for increased compatibility with other boards »
      et sur cette image (qui figure dans cet article)
      Configuration de la carte PiJuice

      Vous voyez que les adresses i2c peuvent être modifiées…
      cordialement
      François

      Répondre
      1. marc

        Merci pour vos réponses.

        A mon sens la doc est pas hyper claire, mais bon, j’avais bon espoir avec les possibilité d’adressage de l’i2c.

        Répondre
  6. Mercusyo

    Bonjour,
    Tout d’abord, merci beaucoup pour votre article. J’ai acheté le PiJuice il y a peu de temps, et je viens de l’intégrer dans un de mes futurs projets. Mon RPi 3B est alimenté via une alimentation officielle sur le Raspberry et non le PiJuice.
    J’ai une question, lorsque j’arrête mon RPi 3B : j’utilise soit la commande « shutdown » dans un terminal ou en utilisant le bouton « Shutdown » de Raspbian, ensuite j’éteins tout … ; lorsque je ré alimente le raspberry … rien ne se passe, soit je suis obligé d’enlever et remettre la batterie pour que cela re démarre, ou alors, il faut appuyer 10 secondes sur le bouton correspondant du PiJuice … chose qui à terme dans ce projet n’est pas réalisable, vu que le système sera dans un boîtier homemade avec l’imprimante 3D du labo …
    Merci par avance,
    Bien à vous,

    Répondre
    1. Mercusyo

      Bonjour,

      J’ai trouvé une solution à ma problématique, pour celles et ceux que cela intéresse, voici un snippet de codes Python 3 :

      from pijuice import PiJuice
      import os
      import time

      _pijuice = PiJuice(1, 0x14)
      _pijuice.power.SetWakeUpOnCharge(0)
      _pijuice.power.SetSystemPowerSwitch(0) # arrêt de l’alimentation sur les pins d’entrée/sortie
      _pijuice.power.SetPowerOff(30) # coupure de l’alimentation vers le RPi après 30 secondes …
      time.sleep(0.01)

      os.system(« sudo shutdown -h now »)

      Répondre
  7. Mercusyo

    Bonjour,

    Désormais, j’ai un autre souci, quand j’enlève l’alimentation branchée que se soit au RPi ou au PiJuice, le pijuice s’éteint immédiatement, et donc le RPi …
    J’avais pensé utiliser le pijuice dans mon système composé d’un arrêt d’urgence notamment, et cela me permettrait d’intercepter la non présence d’alimentation générale (AU), et de prévenir l’utilisateur, et d’enregistrer et éteindre le système le plus proprement possible.
    Est-ce que quelqu’un a déjà rencontré ce « souci » ?

    Merci,
    Cordialement,

    Répondre
    1. sakura

      Bonjour,

      Désolée pour le déterrement du topic mais… avez-vous trouvé une solution à ce problème ? J’en suis à mon 2e PiJuice qui le rencontre (j’avais renvoyé le premier, encore sous garantie).

      Le problème apparaît après quelques semaines ou quelques mois d’utilisation, il concerne mon Pi 3B+ (curieusement avec un PiZero le PiJuice semble fonctionner correctement).

      Cela me déçoit beaucoup, d’autant que ce produit répond par ailleurs totalement à mes besoins. J’ai déjà passé des jours et des jours dessus, posté ma question sur Github, sans obtenir malheureusement de réponse satisfaisante.

      Avec tous mes remerciements.

      Répondre
  8. pascal-tours

    Bonjour François,
    Tres bon article, pouvez-vous me dire si l’on peut monter cette platine dans le boitier Raspberry Pi Desktop ?
    La batterie fait bien partie du kit ?
    Merci
    Cordialement.

    Pascal

    Répondre
  9. Mercusyo

    Bonjour,
    Je reviens vers vous concernant le PiJuice. J’aimerais changer de batterie, et passer vers une batterie LIPO de 5000 mAh voir 10000 mAh, comme écrit sur le site web PiJuice. Malheureusement, il ne donne pas de référence. Est-ce que quelqu’un aurait déjà utilisé ce genre de batterie ?
    Merci,

    Répondre
  10. Pierre

    Bonjour,
    que sa passe-t-il si le pi « plante »? Est-ce que le PiJuice continue de fonctionner et coupera « sauvagement » le pi à l’heure programmée? Puis le rallumera à l’heure suivante programmée?

    Je demande ça car j’avais essayé la carte WittyPi et WittyPi mini et aucune ne coupait le pi si celui-ci était « planté ». Du coup, lorsque le pi était planté, il fallait inévitablement intervenir physiquement pour débrancher et rebrancher le tout.

    Merci

    Répondre
  11. Julio

    Bonjour, question bête peut-être, lorsque l’on est branché sur panneau solaire, la batterie du pi Juice peut se charger /et en même temps faite fonctionner un pi ? A ma connaissance seul zendure propose cette fonction sur ses batteries portables. Merci

    Répondre
  12. titouan

    Bonjour Monsieur Mocq, 
    Peut-on mettre un pi juice sur raspberry pi quatre ?
    J’aimerais réaliser l’appareil photo que vous avez fait avec la caméra HQ, et l’alimenter avec un pi juice puis mettre un écran tactile 3.5″ au dessus.
    Pouvez vous m’envoyez le lien pour la carte qui indique le nombre de watt délivré au raspberry pi qui est brancher au panneau solaire et au pi.
    Merci beaucoup
    Cordialement
    Titouan Langlet

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.