Table des matières:

Construire un meilleur bouton d'alimentation Raspberry Pi : 4 étapes
Construire un meilleur bouton d'alimentation Raspberry Pi : 4 étapes

Vidéo: Construire un meilleur bouton d'alimentation Raspberry Pi : 4 étapes

Vidéo: Construire un meilleur bouton d'alimentation Raspberry Pi : 4 étapes
Vidéo: Que faire avec un Raspberry Pi ? 2024, Juillet
Anonim
Image
Image

Il est très facile de créer un bouton de mise hors tension ou d'arrêt du Raspberry. Il existe de nombreux projets de ce type sur le Web et quelques-uns ici sur Instructables, mais aucun d'entre eux (que je peux voir) ne vous dit quand votre Pi a fini de s'arrêter et qu'il est donc sûr de couper le courant. En fait, ils ne reconnaissent même pas que la pression sur le bouton a été vue.

Il existe également des projets pour redémarrer un Pi qui a été arrêté, mais ils ne vous donnent pas non plus de retour visuel.

Mais qui a besoin d'un tel bouton ? Si vous êtes un peu un nerd comme moi, ou même juste un nerd en herbe, vous pouvez toujours vous connecter à votre Pi localement ou sur le réseau et taper sudo shutdown -h now. Mais si vous construisez un projet pour des utilisateurs non techniques, cela ne fonctionnera tout simplement pas. Certes, vous pouvez presque toujours vous en tirer en tirant simplement sur le cordon d'alimentation, mais notez, j'ai dit presque toujours ! La chance de tout le monde s'épuise tôt ou tard. J'avais une carte SD sur moi seulement la semaine dernière, même si je ne saurai jamais si c'était vraiment dû à une coupure de courant brutale.

Dans mon cas, j'avais besoin d'ajouter un bouton d'alimentation à un Pi que nous utilisons comme séquenceur midi pour enregistrer et lire des hymnes et des chansons à l'église, lorsque nous n'avons pas de pianiste disponible. Je peux toujours taper la commande d'arrêt, mais je dois la désactiver lorsque je ne suis pas là.

Mon intention ici n'est pas de vous donner un produit fini, avec un boîtier magnifiquement imprimé en 3D, comme tant d'autres Instructables. Tout le monde en aura une utilisation différente ou voudra l'intégrer dans son propre projet. Au lieu de cela, je vais vous configurer avec la technologie que vous pouvez ajouter à votre projet, qu'il s'agisse d'un centre multimédia, d'un appareil IoT ou de toute autre chose.

(Dans la vidéo, je le démontre avec un Pi Zero v1.2 et un moniteur que j'ai fabriqué à partir d'un écran d'ordinateur portable réutilisé et d'un contrôleur d'Extrême-Orient.)

Étape 1: la conception

Comment ça fonctionne
Comment ça fonctionne

Voici ce que mon bouton d'alimentation fera pour vous:

  • Lorsque le Pi est en marche, une LED est allumée en continu. S'il est éteint manuellement, le voyant ne s'éteint que lorsqu'il est possible de débrancher l'alimentation en toute sécurité.
  • Pendant le fonctionnement, si vous appuyez sur le bouton pendant au moins une seconde, un arrêt est déclenché et la LED clignote pendant un quart de seconde toutes les secondes jusqu'à ce que vous puissiez débrancher l'alimentation en toute sécurité.
  • À partir d'un état d'arrêt (si l'alimentation n'a pas été coupée), une pression sur le bouton démarre le démarrage et fait clignoter la LED pendant un quart de seconde toutes les secondes jusqu'à ce qu'il soit démarré. (Cela peut prendre un peu plus de temps jusqu'à ce que tous les services tels que ssh et vnc soient en cours d'exécution.)

Les composants sont très bon marché. Tout ce dont tu as besoin c'est:

  • ATTiny85 (puce compatible Arduino)
  • 3 résistances: 2 x 330Ω et 1 x 10kΩ
  • 1 LED - Je suggère vert ou bleu, mais c'est votre choix
  • planche à pain et fils de raccordement, ou stripboard, ou comme vous voulez le construire.

Étape 2: Comment ça marche

Comme pour tous les boutons d'alimentation Pi, celui-ci tire une broche GPIO à un état bas pour signaler une demande d'arrêt à un programme d'assistance exécuté sur le Pi. J'ai utilisé GPIO4 (broche 7) mais vous pouvez utiliser n'importe quelle autre broche.

La seule façon de dire qu'un Pi a terminé son arrêt est de regarder la broche 8 de TxD, qui devient alors faible. Cela dépend de l'activation de la console série, ce qui est le cas par défaut. En fait, TxD montera et descendra régulièrement pendant qu'il est utilisé comme console série, mais il ne baissera jamais pendant plus de 30 mS environ à la fois, même au débit en bauds commun le plus lent. Il peut toujours être utilisé pour une console série car nous le regardons simplement passivement.

Pour redémarrer, nous devons tirer brièvement SCL1 (broche 5) vers le bas. Cette broche est utilisée par tous les appareils I2C (y compris mon interface midi), mais après avoir lancé le démarrage, nous la laissons tranquille.

La majeure partie de la complexité réside dans le croquis Arduino que nous chargeons dans l'ATTiny85. Cela met en œuvre une "machine à états" - un moyen très utile et puissant de coder tout problème pouvant être représenté par un certain nombre d'"états". Une machine à laver fonctionne exactement de la même manière. Les états représentent les étapes du cycle de lavage, et chacun définit ce que la machine doit faire à ce stade (moteurs ou pompes à faire fonctionner, vannes à ouvrir ou fermer) et quelles entrées de capteur (température, niveau d'eau, minuteries) déterminer quand passer à l'état suivant et quel prochain état choisir.

Le croquis à la main est ma première ébauche d'un diagramme d'état, montrant toutes les transitions d'état. Ceci est juste pour vous montrer comment vous pouvez initialement planifier vos états et transitions d'état - cela peut ne pas être tout à fait précis comme c'était avant que je commence le débogage.

Dans notre cas, nous avons 6 états que j'ai appelés OFF, BOOT REQUEST, BOOTING, RUNNING, SHUTDOWN REQUEST et SHUTTING DOWN. (Après l'ARRÊT, il revient à OFF.) Ceux-ci sont identifiés par des commentaires dans le croquis, et pour chacun, d'autres commentaires indiquent ce qu'il doit faire et quels événements le déplaceront vers un autre état.

Le programme d'assistance exécuté sur le Pi est juste un peu plus compliqué que pour la plupart des boutons d'arrêt. Il répond à une longue impulsion basse sur la broche GPIO en lançant un arrêt, mais il répond également à une courte impulsion en tirant brièvement la broche GPIO vers le bas. C'est ainsi que l'ATTiny85 peut dire qu'il est en cours d'exécution et peut ainsi passer de l'état de démarrage à l'état de fonctionnement.

Étape 3: Construire un prototype de démonstration

Construire un prototype de démonstration
Construire un prototype de démonstration
Construire un prototype de démonstration
Construire un prototype de démonstration
Construire un prototype de démonstration
Construire un prototype de démonstration

À des fins de démonstration, vous pouvez le prototyper sur une planche à pain sans soudure, comme indiqué, mais je vous ai également donné le schéma afin que vous puissiez élaborer votre propre mise en page à l'aide d'un stripboard ou d'un PCB personnalisé, peut-être dans le cadre d'un projet plus large.

Étape 4: Programmation de l'ATTiny85

L'esquisse Arduino et le programme d'assistance sont joints à cette étape. Dans votre dossier d'esquisses Arduino, créez un dossier appelé PiPwr et copiez-y le fichier PiPwr.ino. En lançant l'IDE Arduino, vous le trouverez maintenant dans votre carnet de croquis.

Il existe plusieurs façons de programmer un ATTiny85. Si le vôtre a un chargeur de démarrage installé, vous pouvez utiliser une carte de développement ATTiny85 ne coûtant que quelques livres. Celui-ci se connecte à votre PC via un port USB. J'ai utilisé un Hidiot qui est essentiellement le même mais avec une zone de prototypage.

Dans l'IDE Arduino sous Fichier - Préférences, ajoutez

digistump.com/package_digistump_index.json

aux URL du gestionnaire de cartes supplémentaires.

Sous Outils - Tableau, vous devriez maintenant voir un certain nombre d'options Digispark. Sélectionnez Digispark (par défaut - 16,5 MHz).

Si votre ATTiny85 n'a pas de chargeur de démarrage (ou si vous ne le savez pas), vous pouvez obtenir un programmeur AVR ISP pour quelques livres. Ou vous pouvez utiliser un Arduino Uno ou un Pro Mini ou Nano moins cher en tant que programmeur. Google pour "arduino as isp attiny85" (sans les guillemets) pour les instructions.

Si vous souhaitez modifier le croquis, vous le trouverez entièrement commenté et, espérons-le, facile à suivre. Pour le débogage, il est beaucoup plus facile d'utiliser un Arduino Pro Mini ou Nano. Décommentez le serial.begin() dans Setup et les instructions print dans loop() afin de voir les étapes par lesquelles il passe à l'aide du moniteur série. Il existe des définitions de broches alternatives dans la source, commentées, pour un Uno, un Pro Mini ou un Nano.

Sur votre Raspberry Pi, copiez le fichier shutdown_helper.py dans le dossier /etc/local/bin et définissez-le comme exécutable avec la commande

sudo chmod +x /usr/local/bin/shutdown_helper.py

Éditez maintenant le fichier /etc/rc.local avec votre éditeur préféré. (Vous devrez le faire en tant que root.) Avant la dernière ligne (sortie 0) insérez la ligne

nohup /usr/local/bin/shutdown_helper.py &

Redémarrez et le programme d'aide démarrera automatiquement.

Conseillé: