Lorsque vous utilisez votre Raspberry Pi sans tête, l’une des premières choses dont vous devez vous préoccuper est de savoir comment l’éteindre en toute sécurité. L’arrêter en retirant simplement l’alimentation peut entraîner une carte SD corrompue ou des fichiers endommagés. Si vous l’aviez connecté à un réseau, vous pourriez bien sûr simplement s’y connecter en SSH et émettre la commande «halt». Cependant, que faire si vous ne pouvez pas vous y connecter? Ou que faire si vous vouliez simplement un moyen de l’éteindre simplement et facilement sans toucher du tout à un clavier?
Voici où Adafruit intervient et nous donne un script simple qui surveillera une broche GPIO et s’arrêtera s’il détecte un changement d’état. À quoi cela sert-il? Eh bien, cela signifie que vous devez simplement connecter deux broches sur le GPIO avec un trombone (ou tout autre élément conducteur) pour émettre la commande d’arrêt. J’ai pris le tutoriel Adafruit et quelques autres guides en ligne et rassemblé les instructions suivantes.
Installation
Tout d’abord, vous aurez besoin d’un Pi avec Git installé dessus.
sudo apt-get install git
Ensuite, vous téléchargez le script depuis le Github d’Adafruit:
git clone https://github.com/adafruit/Adafruit-GPIO-Halt
Si cela ne fonctionne pas, essayez:
git clone git://github.com/adafruit/Adafruit-GPIO-Halt
Un aparté: Le script est écrit en C, il peut donc être modifié si vous voulez, par exemple, allumer une LED lorsque la commande d’arrêt est émise. Tu pourrait réécrivez-le en tant que programme Python, bien sûr, ce qui pourrait faciliter l’adaptation de certains.
Accédez au nouveau répertoire, compilez et installez:
cd Adafruit-GPIO-Halt make sudo make install
Cela installe le script dans / usr / local / bin / gpio-halt. Vous devez ensuite l’exécuter en tant que service.
Notez s’il vous plaît
Dans les sections suivantes, si vous utilisez un Pi plus ancien avec un en-tête GPIO à 26 broches, utilisez la broche GPIO 7 au lieu de 21.
Exécutez-le automatiquement sur Jessie / Buster
Si vous utilisez Raspbian Jessie, vous devrez le faire via systemd:
sudo nano /lib/systemd/system/gpio-halt.service
Cela créera un fichier et l’ouvrira. Voici le contenu de ce fichier:
[Unit] Description=Short pins 21 and ground to shutdown the Pi After=multi-user.target [Service] Type=idle ExecStart=/usr/local/bin/gpio-halt 21 & [Install] WantedBy=multi-user.target
Ensuite, rendez le script exécutable par les bons utilisateurs:
sudo chmod 644 /lib/systemd/system/gpio-halt.service
Ensuite, dites à systemd d’utiliser le script:
sudo systemctl daemon-reload sudo systemctl enable gpio-halt.service
Et redémarrez votre Pi
sudo reboot
Lorsque le Pi revient, vous pouvez vérifier l’état du service en faisant:
sudo systemctl status gpio-halt.service
Exécutez-le automatiquement sur Wheezy
Si vous utilisez l’ancien Raspbian Wheezy, vous devrez le faire via rc.local:
sudo nano /etc/rc.local
Avant ‘exit 0’, ajoutez la ligne:
/usr/local/bin/gpio-halt 21 &
Maintenant, redémarrez votre Pi:
sudo reboot
Maintenant, utilisez-le
Prenez un trombone (ou un autre objet conducteur) et touchez les deux dernières broches GPIO verticales en même temps. Si vous utilisez un Pi 26 broches, ce sera GND et GPIO7. Si vous utilisez un Pi 40 broches, ce sera GND et GPIO21. Voir le diagramme ci-dessous. La première fois que vous faites cela, cela peut valoir la peine de connecter un moniteur pour que vous puissiez le voir se produire. Attendez environ 15 secondes pour que la procédure d’arrêt se termine, puis débranchez votre Pi en toute sécurité.
Remerciements
Grâce à Alex Eames pour repérer le script d’arrêt d’Adafruit. Merci à Adafruit, évidemment. Grâce à Matt Hawkins pour les instructions systemd.