9 – Alimentation du Pi dans la voiture 3/3 – Extinction

A l’arrêt de la voiture

Le problème

Lorsque l’on coupe le contact, le moteur de la voiture s’éteint, et le Pi aussi… brusquement… pas le temps de faire un joli halt… ce n’est pas vraiment recommandé, le système de fichier peu être corrompu empêchant le prochain démarrage…

L’idéal serait de détecter la coupure de courant avant qu’elle n’est lieux pour lancer la commande halt…

La solution

J’ai tourné le problème dans tous les sens,… impossible de prédire à l’avance la coupure de courrant… En revanche, il est possible de détecter la coupure de courant au moment où elle a lieux grâce aux port GPIO et d’alimenter le Pi pendant une dizaine de secondes grâce à un petit circuit capacitif (à base de condensateurs), le temps de lancer le halt.

Détecter la coupure de courant

A suivre…

Alimenter le Pi avec un circuit capacitif

A suivre…

65 réflexions au sujet de « 9 – Alimentation du Pi dans la voiture 3/3 – Extinction »

  1. sbastienfnt

    Je vais être confronté au même problème pour mon projet de Web Radio à base de RPI. Comme je ne comprend pas totalement ton idée de circuit captatif, je vai attendre et je peux te soumettre quelques idées..
    Une toute bête, tu as du déja y penser, mais analyser les programmes qui mettent du temps a s’éteindre, supprimer les services inutiles etc. réduire le temps d’extinction en somme.
    Sur raspBMC, il y a une option qui indique au redémarrage si le RPI a été éteind brutalement avant la fin de l’arrêt. Je ne sais pas exactement comment ça marche, mais pour tes tests, pourquoi pas avoir le même principe. En tout cas je travaille la dessus

    Bonne continuation

    Répondre
    1. Olivier Auteur de l’article

      Hello sbastienfnt,

      Même en réduisant le temps d’extinction, le problème reste entier. Lorsqu’il n’y a plus du courant brutalement, il faut passer par une autre source d’énergie pour alimenter le Pi le temps qu’il s’éteigne.
      En gros, l’idée est de brancher une pile sur le Pi qui prend le relais pendant quelques secondes le temps que le Pi s’éteigne proprement.
      En revanche, je te rejoins sur le fait d’optimiser la chose en supprimant les services inutiles 🙂

      Répondre
  2. billou

    Une petite suggestion, si le PI n’avale pas grand chose en veille, pourquoi ne pas le brancher également sur le circuit batterie comme le faisaient les vieux postes qui pouvaient fonctionner contact éteint ?

    Ainsi, avec le système d’extinction que tu prévois, au lieu de choisir l’arrêt, il suffirait simplement de choisir qu’il passe en veille, et tu t’épargnerais les 40 secondes de boot du système du PI.

    Répondre
    1. Olivier Auteur de l’article

      Oui, MAIS, on ne peut pas mettre un Pi en veille 🙁 C’est bien là tout le problème 🙂

      Répondre
  3. siki

    Pourquoi ne pas jouer avec les relais que tu évoque dans l’allumage ? le Velleman VM188 ne peut’il pas capter l’arrêt (vu qu’il est entre l’alim et le Pi), puis lancer l’arrêt du Pi en le fessant survivre ces condo (je sais pas si ce relais à une capacité d’autonomie ? ) ?
    Sinon partir sur un boitier alim avec pile rechargeable (j’en est vu un il y a pas longtemps dans l’univers PI), qui te servirai de mini onduleur entre ton alim voiture et ton Pi. D’un autre coter une sonde capte le démarrage/l’arret et envoi l’ordre au Pi. Ton Pi est continuellement alimenté, la sonde envoi les start et stop, le block de pile est rechargé à chaque trajet.

    Point de vu ?

    Répondre
    1. Olivier Auteur de l’article

      Tout à fait, comem tu dis, il suffit d’envoyer un signal au Pi via un port GPIO pour lui dire de s’éteindre proprement lorsque le moteur se coupe. Un petit module couplé avec une petite batterie, devrait permettre d’alimenter le Pi quelques secondes le temps qu’il s’éteigne 🙂
      Je suis en train de prototyper ce montage. Dès que j’obtiendrai un montage satisfaisant, j’écrirai un article complet sur ce sujet 🙂

      Répondre
  4. Adrien

    Bonjour,

    Tout d’abord, bravo pour le tuto et pour la réalisation, c’est génial comme invention !
    En lisant ton tuto, j’ai pensé à un truc tout simple pour l’extinction de ton RPI:
    – pour commencer, il faudrait que tu relies ton convertisseur 12/5V sur le +12V permanent (souvent un fil rouge)
    – ensuite tu fais entrer le +12V après contact (fil noir ou marron) sur une GPIO du RPI, bien sûr, via un petit circuit d’adaptation de tension (un relais 12V par exemple ?)

    C’est super simple, donc je pense que tu as déjà dû y penser ?
    Tiens-moi au courant si tu as besoin de plus d’info.

    Encore bravo

    Répondre
    1. Olivier Auteur de l’article

      Bonjour Adrien, merci beaucoup pour tes encouragements, ça fait plaisir 🙂

      Effectivement, j’ai pensé utiliser une broche du GPIO pour détecter la chute de tension du 12V après contact lors de l’arrêt du moteur pour lancer un « shutdown » au Pi. Le problème, c’est qu’une fois OS « arrêté », le Pi reste sous tension :/ C’est cette partie qui pose problème. As tu une idée ?

      Merci à toi 🙂

      Répondre
  5. beemoon

    Bonjour,
    intéressant sujet! Je réfléchi en ce moment pour faire un serveur dlna pour la voiture. Pour cela j’avais pensé à faire un boitier autonome avec batterie-USB pour alimenter le Rpi et un HD de 2,5 pouces et une clé wifi. Ma question est pensez vous qu’en branchant la batterie sur l’allume-cigare, la recharge se coupera quand la batterie sera pleine (comme un ordi portable sur le secteur)?

    allume-cigare —> batterie-USB—>Rpi+HD+Wifi

    Répondre
    1. Olivier Auteur de l’article

      Pour gérer la charge d’une batterie correctement (et notamment stoper la charge quand la batterie est pleine) il convient d’utiliser un petit circuit de charge adapté au type de batterie utilisé.
      La charge d’une batterie plomb, li-ion, li-po, etc,… est différente.
      Sinon, sur le principe, ton momntage est tout à fait réalisable 🙂

      Répondre
  6. Kelias

    Salut

    je compte egalement embarquer mon raspberry en voiture, mais en tant que gps.

    As tu eu l’occasion de tester le circuit chargeur de batterie ?

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      Nope, pour le moment je n’ai pas eu l’occasion de tester ce type de circuit de charge :/ Mais j’ai vu des petits circuit de charge pour batterie Lipo qui ont l’air de bien fonctionner et de gérer correctement la bascule entre les deux sources d’alimentation.

      Répondre
  7. Siki

    Hey, j’ai eu une super idée (enfin je crois) pour l’alim du PI. Existe t-il des composant qui en tension ferme un contacteur, hors tension reste fermé ~60sec puis s’ouvre ? La solution est simplement de mettre le PI sur le + permanent, le composant sur le + temporaire (celui de l’autoradio) et de lui faire piloter (au composant) le + du PI (compliqué à l’écrit).

    Quand je met le contact, le +Temp ce ferme, active le composant qui ferme le +Perm et démarre le PI. Quand je coupe le contact (le halt est envoyé au PI via GPIO etc), le +Temp ce coupe, le composant maintient le +Perm fermé le temps que ces condo ce décharge, puis le contacteur s’ouvre et le PI est entièrement hors tension.

    Pbl : Je ne connais pas le nom de ce composant :p

    +Permanent —————-|–/ –|———- PI
    | com| |
    +Temporaire —————-| pos | |
    | san | |
    | |
    – ———————————————– |

    Répondre
    1. Olivier Auteur de l’article

      Hello Siki,
      C’est une bonne idée, mais cela nécessite d’alimenter un relay en continu, ce qui, sur le long terme risque de décharger la batterie de la voiture.
      Je ne l’ai pas encore testé, mais je pense que le mieux est de passer par un circuit de charge de batterie Lipo, avec une petite batterie Lipo qui alimenterait le Pi le temps qu’il s’éteigne correctement 🙂

      Répondre
  8. Siki

    Oui mais uniquement voiture en marche, le relais étant branché (pr sa partie alim) sur le +Temporaire, il n’est pas alimenté quand la voiture est éteinte. Mais effectivement, tant que la voiture est allumé il est alimenté et sert de contacteur sur le +P… Vous y voyer un problème (surchauffe, pas conseillé d’alimenter un relais des heures …) ? L’idée est de ne pas monté une machine à gaz avec batterie qui vont être recharger en dehors des cycle normaux etc …
    Le point important est que le relai doit avoir suffisamment de « batterie/condo » pour être maintenu fermé durant ~30sec quand il n’est pas alimenté.. un tel composant ce trouve coté relai ou a un nom particulier ?

    Répondre
  9. CrashDrives

    http://www.pobot.org/Les-super-capas.html
    Dans cet article, il est expliqué l’utilisation de super condensateur, dont le remplacement d’une pile 9v. Il serait possible de l’utiliser comme batterie de secours afin de donner à ton rpi une source de tension lui permettant de s’éteindre proprement l’ors de l’extinction du moteur

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      Effectivement on peut utiliser une capa pour accumuler de l’energie. C’est une solution que j’avais envisagé, mais je n’avais pas trouvé de montage convainquant pour alimenter un Pi pendant 30 à 60 secondes :/

      Répondre
  10. wouldsmina

    idée de minuit. et avec un arduino ce serait pas possible de gérer cette alimentation? en baissant ça fréquence au maxi et en utilisant les interruptions, sa conso serait négligeable…
    En tout cas, beau boulot Olivier.

    Répondre
    1. Olivier Auteur de l’article

      Hello,
      Merci pour tes encouragements 🙂
      C’est effectivement possible, mais dans ce cas, autant laisser le Pi en idle, la batterie de la voiture se videra avec le temps :/

      Répondre
  11. Pascal

    Bonjour,
    Pourquoi pas utiliser un relai temporisé fonction Ac(Temporisation combinée fermeture / ouverture )?

    U : Alimentation
    R : Relais de sortie ou charge
    T : Temporisation
    C (Y1) : Commande

    • Fonction Ac: Temporisation combinée fermeture / ouverture
    Après la mise sous tension,
    une fermeture du contact de commande entraîne le démarrage de la temporisation T.
    Le relais de sortie « R »(ou la charge) change d’état à la fin de celle-ci.
    Après l’ouverture du contact C (Y1), le relais « R » retombe après une seconde temporisation T.

    Répondre
    1. Olivier Auteur de l’article

      Hello, j’avais déjà exploré cette voie, mais cela ne me paraissait pas assez fiable :/

      Répondre
  12. François

    Bonjour,

    j’ai étudié le problème, car pour moi hors de question de risquer de corrompre le système de fichiers.

    Je ne voulais pas jouer avec des piles, batteries, ou condensateurs car c’est pour moi une source d’incertitudes.

    Donc ma solution (faite maison) :

    Il y a en principe un fil dans la voiture sur lequel viennent les 12V une fois la clé tournée dans le contact.

    C’est avec ce fil qu’on allume le PI (via le transfo, etc …).
    A l’allumage du système, on lit la tension du fil sur une entrée GPIO (avec un pont diviseur pour lui donner 3.3V). Nous l’appelons GPIO 1

    D’un autre côté, à l’allumage du PI, on met une sortie GPIO à 1. Nous l’appelons GPIO 2.
    Cette sortie alimente un relais (ça peut se faire via transitor), qui lui même envoie 5V PERMANENT (donc qui ne dépend pas de la clé de contact) à l’alimentation du PI.

    On se retrouve avec un PI alimenté d’un côté par le contact de la voiture, et de l’autre côté il s’auto-alimente grâce à la sortie GPIO 2 et un 5V permanent.

    Que se passe-t-il lorsqu’on coupe le contact ?

    L’alimentation à l’entrée du PI est coupée, pas grave on à une autre alim permanente qui le maintient en vie.

    La broche GPIO 1 détecte la perte de tension, et lance un HALT du système.

    La broche GPIO 2 se maintient à 1 tout le long du processus.

    Le PI s’éteint alors normalement … et lorsque c’est fait, la broche GPIO 2 se remet à 0 …. coupant ainsi l’alimentation en 5V qu’elle avait maintenue jusque là.

    Voilà 🙂 Plus de jus sur le PI, et il est éteint comme il faut.

    Pour améliorer le système, il faut penser à mettre une tempo avant de faire le HALT,pour éviter un arrêt du PI inutile. En effet, dans le cas ou on cale le moteur, il faut retirer le contact, puis le remettre de suite.

    Bon, bien entendu il faut placer quelques résistances et autres diodes dans le circuits, mais le principe est là.
    Je peux fournir un schéma sur demande ….

    Répondre
    1. François

      Bonjour à tous,

      comme promis, un schéma. Enfin non, plutôt 2 schémas de mon système d’alimentation.

      Je précise quand même que ce n’est encore qu’à l’état de papier, j’ai commandé les composants, j’attends de les recevoir pour tester sur une plaquette de labo.
      Quand ce sera validé, je ferai graver un PCB et je souderai le tout.

      Donc, premier schéma, simplifié, pour bien comprendre le principe :

      http://staticclub.caradisiac.com/1/mecanique-technique/raspberry/photo/hd/281377281/49907186f8/raspberry-schema-simple-big.jpg

      Le GPIO en mode IN détecte si la clé de contact et bien enclenchée. Lorsque ce n’est plus le cas, son entrée tombe à 0. On envoie alors la commande HALT (après une petite tempo) pour éteindre le PI

      Le GPIO en mode OUT a été mis à 1 au démarrage du PI. Il restera dans cet état jusqu’à son extinction. Une fois le PI éteint, le GPIO tombe alors à 0, coupant ainsi l’alim du PI

      Mais vous vous en doutez, ce n’est pas si simple. Au moins deux choses ne vont pas : on ne peut pas envoyer du 5V sur une entrée GPIO et on ne sait pas commander directement un relais avec une sortie 3.3V. Il faut donc un peu ruser ….

      J’ai donc remplacé les deux relais par 2 couples de transistors qui ont la même fonction. Avantage, ça consomme moins et ça coûte moins cher !
      J’ai ajouté des diviseurs de tension pour adapter le voltage au PI.
      Voici donc le schéma détaillé, le vrai cette fois-ci !

      http://staticclub.caradisiac.com/1/mecanique-technique/raspberry/photo/hd/281377281/4990717cdc/raspberry-schema-detaille-big.jpg

      Bonne lecture ….

      François

      Répondre
          1. Thomas Bishop

            Bonjour François,

            Voulant également faire un ‘PiJukeBox’ pour la voiture, je serais intéressé de connaître votre avancée sur le sujet

          2. François

            Bonjour,

            mon projet a bien avancé …. mais a totalement changé de cap !

            J’ai été confronté à un gros problème …. il s’appelle Linux, qui ma fait complètement péter les plombs ! J’ai failli balancer le Pi par la fenêtre….

            Du coup, j’ai trouvé un peu par hasard une solution toute faite sous Windows : Centrafuse.

            J’ai donc choisi d’aller dans ce sens là. Au niveau matériel, j’ai opté pour une carte mère Mini Itx avec un processeur AMD et refroidissement passif, et pour alimentation un Pico PSU.
            Pour éviter tout soucis, j’ai mis Windows 8 Embedded, qui supporte les coupures à chaud.

            Ca marche pas mal, même si il y a des choses à améliorer, notamment la réception radio qui est vraiment catastrophique.

          3. Thomas Bishop

            Bonjour,

            ce n’est plus un changement de cap à ce niveau là, ça s’appelle repartir à zéro 🙂

            Quels étaient les problèmes sous linux ?

            Pour ma part je souhaite rester sur le raspberry comme Hardware, à la base ce projet était pour moi une façon d’utiliser mon raspberry laissé à l’abandon après mon échec quant à la tentative d’en faire un Media Center (les perfo ne me satisfaisaient pas).

          4. François

            Le problème principal c’était de tout intégrer ensemble … je ne trouvais tout simplement pas de solution.
            XBMC propose une bonne base pour ce qui est de l’audio et vidéo, mais au niveau du kit main libre bluetooth, je ne suis jamais arrivé à aucun résultat.
            De plus le GPS semble venir de la préhistoire.
            Hors c’est surtout pour le bluetooth et le gps que le projet m’intéresse.

            Alors quand on découvre Centrafuse on a du mal à résister ….

            Je garde la raspberry bien au chaud, pour de la domotique par exemple.

          5. Thomas Bishop

            Bonjour,

            OK, je pensais que c’était en lien avec l’alimentation mais pas du tout.

            Effectivement coté solutions linux pour des applications kit mains libres c’est un peu compliqué…J’ai déjà fait fonctionner le profil bluetooth A2DP (streaming audio) sur raspberry mais pas le profil HSP (kit main libre).

          6. François

            Oui en effet le streaming audio fonctionne, même bien je trouve. Pour le kit main libre, bonne chance, je n’y suis jamais arrivé (avec HPF pour linux)

  13. Z

    Une idée : utiliser un accéléromètre pour savoir quand la voiture revient à l’arrêt, et au bout de X minutes d’immobilisation faire un shutdown du Pi…

    Répondre
    1. Olivier Auteur de l’article

      Ahah ^^ Pas mal ^^

      L’ennui c’est qu’il faudra attendre X minutes avant de couper le contact à chaque fois qu’on veut arrêter la voiture 😛

      Répondre
      1. Z

        Pas si branché sur le 12V permanent…

        Mais je connais pas vraiment le RPi donc je sais pas comment fonctionne son circuit d’alim, et si on peut capter électriquement son shutdown. Si oui il suffirait d’un petit relais statique + push bouton pour amorcer l’allumage, et le shutdown coupe le relais.

        Possible ?

        Répondre
        1. Olivier Auteur de l’article

          Ah oui tout à fait, en passant pour le 12V permanent, il suffit de mettre une petite tempo pour couper le circuit 🙂
          Le problème avec ça, c’est pour l’allumage ensuite :/

          Répondre
  14. altair31

    Hello,

    Pourquoi ne pas simplement utiliser une batterie de charge pour portable?
    Suffit juste de caler 2 relais pour l’allumage et l’instinction, ce sera la batterie qui se prendrait les pics de tension 😉

    Répondre
      1. altair31

        Allez quelques commentaires:
        Ci dessous, si un élément est répété, c’est que c’est le même !

        12V –> abaisseur 12V/5V –> Chargeur USB –> Relais 1 (circuit NO) -> RPI (Alim)
        12V –> abaisseur 12V/5V –> Chargeur USB –> Relais 2 (circuit NO) -> RPI (Alim)
        12V –> abaisseur 12V/5V –> Retardateur (COM) -> RPI (GPIO A)
        12V –> Relais 1 (COM)
        RPI (GPIO B) –> Relais 2 (COM)

        Relais 1: Met en marche le RPI.
        Relais 2: Laisse le RPI allumé même en cas de coupure de courant.
        GPIO A: reçoit l’info quand le contact est coupé pendant X secondes
        GPIO B: Alimenté tant que le RPI est en marche (pin 1 par exemple)

        Du coup, même si on cale, le RPI reste en marche. Le GPIO A sert à lancer la commande shutdown (ou halt).
        Le RPI reste alimenté même en cas de coupure jusqu’à ce qu’il s’éteigne proprement.

        J’espère être assez clair. Sinon, n’hésitez pas à demander…

        Répondre
      2. altair31

        Petite modif:
        12V –> abaisseur 12V/5V –> Retardateur (COM)
        Retardateur (circuit NC ou NO selon l’événement souhaité) -> RPI (GPIO A)

        Répondre
  15. Thomas Bishop

    Je vois que ça s’agite sur ce problème en ce moment…

    Pour ma part, j’ai trouvé la solution sur Mausberry Circuits (http://mausberry-circuits.myshopify.com/collections/car-power-supply-switches) qui avait déjà été proposé par Vincent Ouvrat un peu plus haut via un lien Kickstarter

    C’est en fait ni plus ni moins la solution proposée et détaillée par François et qui avait emballé notre cher blogger. J’ai acheté cet petite alimentation spécial voiture et ça marche nickel. Le fabricant fourni le script qui écoute les port GPIO et qui commande l’arrêt du Pi. Ce script est facilement adaptable : possibilité de changer les numéros des port utilisés et de changer la tempo avant de commander l’arrêt du Pi. Pratique quand on cale…

    Répondre
    1. Olivier Auteur de l’article

      Excellent 🙂 Merci pour l’info et le retour d’expérience 🙂 Cette solution semble marcher, est ce que quelqu’un se sent de rédiger un petit paragraphe explicatif avec une ou deux photos afin que je puisse compléter l’article ?

      Répondre
    2. François

      Lol je vais demander des royalties 🙂

      Et bien je suis content de savoir que ça fonctionne et donc qu’une solution aie été trouvée !

      De mon côté je dois appliquer le même principe à un port série de carte mère, ce qui ne devrait pas poser trop de problème.

      Répondre
  16. pouyoux

    Bonjour à tous, je sais que je fais du déterrage de blog, mais je suis assidûment ce blog depuis plus d’un an… voulant monter le PI3 dans ma 4l…
    Quelqu’un est il arrivé à un résultat « terminé » ???
    Je pense commencer sous peu, je rassemble le matériel, et j’entame ma 4l dans la foulée (peinture, etc..)
    Par avance, merci, et beau boulot de recherches à tous 😉

    Répondre
    1. Altair

      Personnellement, j’ai laissé tombé.
      Mais j’avais trouvé ce genre de produits qui peut faire le café : http://www.piups.net/
      Une petite recherche sur Google avec « rpi ups » et tu devrais trouver ton bonheur !

      Répondre
    2. Thomas Bishop

      Comme indiqué plus haut dans les commentaires, je suis satisfait de ma solution avec le switch pour raspberry de chez mausberry. J’avais promis un petit descriptif avec photos mais je me rends compte que cela fait déjà 1 an 🙁
      Je vais essayer de faire ça la semaine pro, n’hésite pas a me redemander si tu ne vois rien venir 😉

      Répondre
  17. LGnap

    Je ne pense pas l’avoir vu passer dans les commentaires et je pense que ça pourrait vous intéresser :

    https://www.blackvue.com/power-magic-pro

    Pour le présenter en qques mots c’est un système qui est à relier au 12v permanent et qui permet d’éviter que la batterie ne se décharge complètement avec l’utilisation d’un Pi.
    Il y a simplement un voltmètre dans ce tit boitier et quand cela passe en dessous d’un seuil prédéfini il coupe l’alimentation.

    Je l’ai acheté et testé pour ma dashcam et ça fonctionne niquel 🙂

    !!! ce n’est pas pour autant censé remplacer les discussions d’ici en haut, la dashcam est munie d’un supercap qui lui permet de s’éteindre proprement une fois que son alim est coupée par ce device !!!

    Répondre

Laisser un commentaire

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