[TUTO] Ajouter un bouton LED d'Arret/Redemmarage à son Raspberry

 

Dans ce Tuto nous allons voir comment concevoir et utiliser un bouton pour arrêter proprement ou redémarrer son Raspberry.

( Peut fonctionner sur Odroid C1+, voir ici)

 

Préalable

 

Tout d'abord il nous faut :

  • Un circuit imprimé spécialement conçu pour notre bouton ( LED Tactile Breakout)
  • Un bouton poussoir à LED ( LED Tactile Button )
  • 3 résistances, une de 270 Ohm, une de 330 Ohm et une de 10 kOhm
  • 1 Cable Dupont à 4 Brins
  • 1 Cable noir
  • 1 Male Header 4 broches
  • Quelques cms de gaine thermorétractable à faible diamètre

 

Soudure sur le circuit imprimé

 

Une fois que nous avons tout en notre possession nous pouvons commencer.

 

La première des choses à faire est de positionner nos éléments afin de les souder donc  :

  1. Prendre le circuit imprimé, écriture vers le plafond et insérer par le dessous les 4 broches
  2. Les souder.
  3. Placer ensuite le bouton sur le circuit imprimé, dessin toujours vers le haut. Attention au polarité du bouton.( + à droite )
  4. Retourner le tout et souder le bouton.

On arrive, une fois les soudures terminées, à une pièce ressemblante à l'image ci-contre

 

Il est possible  d'utiliser une platine d’expérimentation et de se passer cette pièce, mais je conseille plutôt le circuit imprimé conçu pour.

 

Passons au câblage.

 

 

Câblage

 

L'ordre des couleurs dans notre câble Dupont à 4 fils n'est pas bon il va falloir le changer.

 

A l'aide d'un cutter ou autre lame défaire tout les fil des connecteurs Dupont ( mettre un connecteur 4 broches et 1 connecteur simple de coté ) et repositionner les câbles dans le bon ordre sur un des connecteurs 4 broches restant        ( celui qui sera connecté sur le circuit imprimé )  à savoir :

  • Noir en pin 1 et 4 ( câblage en Y )
  • Rouge en pin 2
  • Blanc en pin 3
  • Mettre votre fil jaune de coté ( nous le réutiliserons plus tard )

 

Pour les câbles noir ( GND ) :

  1. Sectionner les 2 câbles au 1/3 de la longueur. Mettre une des extrémités la plus longue de coté.
  2. Prendre l’extrémité de câble noir restante et faire passer un morceau de gaine de 1 à 2 cm à travers
  3. Connecter les 3 câbles noir ensemble de façon à former un Y
  4. Effectuer la soudure
  5. Positionner la gaine sur la soudure et la réduire à l'aide d'un sèche cheveux ou d'une allumette.

 

Il va falloir maintenant ajouter les résistances ( en réduisant les pâtes si besoins ) :

  1. Sectionner le câbles rouge à mi-longueur
  2. Faite passer un morceau de gaine de quelques centimètres ( plus long que la résistance de 1 cm minimum )
  3. Connecter la résistance de 270 Ohm aux 2 extrémités
  4. Faire la soudure puis positionner la gaine sur la résistance et la rétracter de la même façon que le fil noir.

 

Passons au câble suivant le blanc. Comme on peut le voir sur le schéma, il est divisé en 2 câbles, un blanc et un jaune :

  1. Sectionner le câble blanc et jaune au 1/3 de la longueur en mettant les portions les plus longues de coté
  2. Prendre le câble noir restant, le couper en 2 et les connecter au petit câble blanc pour former un Y 
  3. Faire la soudure puis insérer et placer un morceau de gaine thermorétractable sur celle-ci puis rétracter
  4. Souder chaque résistance sur chaque extrémité noir 
  5. Insérer un morceau de gaine (environ 2 cm plus long que la résistance) dans chaque fil restant ( Jaune et Blanc )
  6. Connecter le fil blanc sur la résistance de 330 Ohm et le fil jaune sur la résistance de 10 kOhm
  7. Faire la soudure puis placer les gaines sur les résistances et enfin rétracter.

 

Plus haut nous avons laissé un connecteur Dupont vide, un à 4 broches et un simple. Ils vont nous servir à effectuer la connexion sur notre Raspberry.

 

Tout d'abord insérer le connecteur Dupont simple sur le fil jaune. Il doit nous rester 3 fil à connecter,le Rouge, le Noir et le Blanc. Ils doivent être insérer dans cette ordre dans le connecteur 4 broches ( il reste un emplacement vide, s'il vous gène lors du branchement, supprimer le ).

 

Passons maintenant au branchement.

 

Connexion du bouton

 

 

Maintenant que nous avons effectué toutes les soudures, nous pouvons câbler notre bouton.

 

Le connecteur 4 broches, avec les 2 câbles noir, doit se connecter sur le bouton. Lorsque l'on a le bouton face à soi, l’ordre des couleurs doit être Noir / Rouge / Blanc / Noir, comme sur l'image un peu plus haut.

 

Pour l'autre extrémité, j'ai choisi les numéros de GPIO pour facilité le branchement.

 

Comme on peut le voir sur l'image de gauche, les GPIO 24, GND et GPIO25 sont contigus et me permette de localiser les Pins plus facilement.

 

Vous pouvez, si vous le voulez, changer de GPIO en utilisant les GPIO23 et GPIO24 à la place ( possédant également un GND contigus), mais il faudra modifier les valeurs dans le Script.

 

Le GPIO 3.3V quand à lui est très facile à trouver étant en haut à gauche ou à gauche du GPIO24.

 

Pour résumé :

  1. Connecter le fil Jaune sur le 3.3V sur la pin 1 ou la 9ème de la colonne de gauche.
  2. Connecter les fils Rouge/Noir/Blanc sur les GPIO 24 / GND / GPIO 25.

 

Faites les branchements sur votre Raspberry et passons à la partie Script qui gère notre bouton .

  

 

Script de gestion du bouton 

 

Le bouton est gérer par un petit script écrit en python ( qui n'est pas de moi mais que j'ai modifié pour mon utilisation ).

 

Il faudra au préalable :

  •  sous Openelec, ou autre distrib, installer le paquet "RPI.GPIO" disponible dans le Repository Unofficial d'Openelec
  • sous Libreelec installer le paquet "pi tools", normalement présent depuis la version 7 ( si vous avez installé l'addons RPI.GPIO et effectué une migration d'Openelec vers Libreelec, inutile d'installer ce paquet ).

 

Ce script permet:

  • D'arrêter le système dès que l'on appui brièvement sur le bouton
  • Le redémarrage du système lorsque l'on reste appuyer au minimum 3 secondes

Voici une copie du script à télécharger ici ou faire un copier/coller dans un éditeur de texte et le sauvegarder sous Shutdown.py

 

#!/usr/bin/env python

 

import sys

# De-commenter la ligne ci-dessous si installation de RPI-GPIO et commenter la ligne sys.path.append('/storage/.kodi/virtual.rpi-tools/lib')

sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')

 

#De-commenter la ligne ci-dessous si installation de pi-tools et commenter la ligne sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')

#sys.path.append('/storage/.kodi/virtual.rpi-tools/lib')

 

import RPi.GPIO as GPIO

import time

import os

 

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.setup(24, GPIO.OUT)

GPIO.output(24, True)

GPIO.setup(25,GPIO.IN)

 

button_previous = 1

button_current = 1

brojac = 0

flag_pressed = 0

 

while True:

 

  button_current = GPIO.input(25);

  flag_pressed = button_previous + button_current

 

  if (not(flag_pressed)):

    brojac += 1

  else:

    brojac = 0

 

  if (button_current and (not button_previous)):

    print("Shutdown")

    os.system("shutdown -h now")

    GPIO.output(24, False)

 

  if ((not flag_pressed) and  brojac >= 100):

    print("Reset")

    os.system("shutdown -r now")

    break

 

  button_previous = button_current

  time.sleep(0.03)

 

GPIO.cleanup()

 

 

Si vous étés sous Openelec/ Libreelec copier ce fichier dans le répertoire Home ( \\Ip_Du_Rpi si vous avez activé samba )

 

J'ai ajouté un fichier samba.conf + shares.conf ( pour les partages ) à ma configuration afin d’accéder directement au dossier /storage. Si vous voulez les réutiliser, ils sont à copier dans le répertoire /storage/.config . Le fichier est configuré pour l’authentification par utilisateur/motdepasse, donc activé cette option dans Libreelec, ou modifier le fichier en changeant cette ligne :

 

security = user

par

security = share

 

le fichier Shutdown.py peut être copié ailleurs mais les commandes SSH devrons être modifiées et exécutées en conséquence.

 

Ne reste plus qu'à ouvrir une  session SSH et à lancer notre programme pour effectuer des tests. 

 

 

 

 

 

 

 

Connexion SSH

 

Lorsque la connexion est établi, exécuter la commande ls -l et regarder si votre fichier est présent. S'il ne l'est pas, chercher le autre part.

 

Ensuite exécuter la commande python Shutdown.py pour lancer notre programme.

Si aucune ligne ne s'affiche à l’écran, que votre Raspberry ne redémarre pas et que la LED du bouton s'allume c'est bon signe.

 

Si ce n'est pas le cas c'est qu'il y a une erreur d’exécution au niveau de la soudure, du branchement, que vous avez fait une erreur dans le copier / coller ou que vous n’exécutez pas la commande correctement.

 

Ensuite appuyer brièvement sur le bouton, et constater l’arrêt du système. Rallumer le Pi et répéter les dernières opérations mais cette fois-ci en appuyant au minimum 3 secondes sur le bouton pour effectuer un redémarrage. ( LEDs du Raspberry doivent clignoter)

 

Si tout fonctionne correctement, exécuter cette ligne de commande pour rendre permanent le lancement du programme :

( !!! Attention !!! Cette ligne n'est à exécuter que lorsque tout fonctionne, sinon vous allez vous retrouver avec un système en Boot Loop)

 

echo "python /storage/Shutdown.py &" >> /storage/.config/autostart.sh

  

Petit rappel : La LED du bouton ne s'allume que lors de l’exécution du script, qu'elle reste éteinte lorsque vous branchez le Pi est normal.

Elle s’éteindra lorsque l'on demandera l’arrêt ou le redémarrage du Raspberry via la pression du bouton. 

 

Impression écran du résultat suite à l’arrêt et redémarrage de notre système et commande d'automatisation :

 

 

 

Pour aller plus loin 

 

Si vous le désirez, vous pouvez cumuler les commandes à exécuter.

 

Par exemple possédant un système Amblight fait maison, je peux lorsque j’arrête mon système, éteindre mes lumières en même temps.

Il suffira de remplacer cette ligne de code :

  •  os.system("shutdown -h now")

par celle-ci :

  • os.system("/storage/hyperion/bin/hyperion-remote.sh -c black ; shutdown -h now")

 

Faisons la même chose avec la partie de script gérant le redémarrage. Par exemple, on pourra rajouter l'exécution d'un script Monscript.sh avant de redémarrer le système en modifiant cette ligne de code :

  •  os.system("shutdown -r now")

qui deviendra :

  • os.system("/RepertoiredeMonScript/Monscript.sh ; shutdown -r now")

 

Voila maintenant vous avez un bouton d’arrêt/redémarrage paramétrable et fonctionnel pour votre Raspberry.

 

 

Bon mod à tous !!!

 

Commentaires : 0 (Discussion fermée)
    Aucun commentaire pour le moment.