Je mets en place des Raspberry Pis à utiliser dans des démos à des collègues, afin de montrer les capacités du Pi lui-même et de certaines des cartes d'extension disponibles.
J'aimerais vraiment pouvoir conserver un script cron-job / start-up pour toutes les démos possibles que je configure, et faire en sorte que ce script détecte quel HAT ou une carte GPIO plus ancienne est branchée, afin que je puisse déclencher un script / programme de démonstration approprié.
Par exemple,
- Si un SenseHAT est attaché, démarrez automatiquement un labyrinthe de marbre Sense HAT
- Si un HAT Display-O-Tron est connecté, exécutez automatiquement l' exemple de menu
- Si un écran PiTFT est connecté, lancez automatiquement un diaporama photo
Existe-t-il un moyen d'exécuter Python, sh ou similaire, pour détecter laquelle de certaines cartes GPIO communes est connectée à un Pi?
Choses que j'ai considérées:
- Utiliser les informations de Pinout.xyz pour détecter les broches utilisées, mais cela ressemble à beaucoup de travail.
Notez que mon intention est de détecter automatiquement la configuration, sans avoir besoin d'attacher un clavier, ssh in ou similaire - d'où le souhait d'une détection automatique, et pourquoi quelque chose comme la définition d'une variable d'environnement n'aiderait pas.
Réponses:
Après avoir lu les commentaires et réponses précédents très utiles de Steve Robillard et Ghanima :
/ proc / arbre-appareil / chapeau / produit
S'il
/proc/device-tree/hat/product
existe, vous avez un HAT attaché et chargé - et ce fichier contient le nom du HAT.Voici quelques exemples de sorties:
Casquette Display-o-Tron
Noms et contenu de tous les fichiers
/proc/device-tree/hat/
de cet appareil:Adafruit PiTFT Plus - 3,5 pouces
Noms et contenu de tous les fichiers
/proc/device-tree/hat/
de cet appareil:Mise à jour: 2018-05-17
Certains appareils sont commercialisés en tant que HAT mais n'ont pas d'EEPROM avec un blob de données valide, auquel cas, il n'y a aucun moyen de détecter le type "HAT", car il ne correspond pas à la spécification HAT.
Mise à jour: 2020-01-07
J'ai créé un dépôt github avec un script pour obtenir les données des HAT auxquels j'ai eu accès et pour enregistrer celles qui ne sont pas vraiment des HAT:
https://github.com/claremacrae/raspi_hat_data
Les demandes de tirage sont les bienvenues - il suffit d'exécuter le
copy_hat_data.sh
script dans ce dépôt.la source
/sys/firmware/devicetree/base/hat
J'obtiens exactement les mêmes informations s'il y a un chapeau sur branché sur le RPi. Lequel est recommandé?Arrachant SteveRobillards excellent commentaire:
Utiliser l'EEPROM I2C du HAT
Le blog Raspberry Pi pointe pour la spécification HAT vers GitHub où la documentation et les outils logiciels (
eepromutils
) pour la manipulation sont disponibles.README.md :
Les informations du HAT sont reflétées dans l'arborescence des périphériques
/proc/device-tree/hat
qui peuvent être lues à partir de l'espace utilisateur de l'une des manières mentionnées (python, sh, ...).Notez qu'il n'y a pas de HAT empilés * (par Raspberry Pi Blog ):
Ainsi, à tout moment, un seul HAT sera connecté, sa lecture EEPROM sera lue et ses informations seront disponibles dans l'arborescence des périphériques.
* Il est possible de fabriquer des chapeaux empilables s'ils sont du même type et ne nécessitent donc pas d'identification multiple et différente, par exemple le Adafruit 16 canaux PWM / Servo HAT pour Raspberry Pi .
la source