Ich richte einige Raspberry Pis für die Verwendung in Demos für Kollegen ein, um die Funktionen des Pi selbst und einiger der verfügbaren Add-On-Boards zu demonstrieren.
Ich möchte wirklich in der Lage sein, ein Cron-Job / Start-up-Skript für alle möglichen Demos zu verwalten, die ich einrichte, und dieses Skript erkennen zu lassen, welche HAT- oder ältere GPIO-Karte angeschlossen ist, damit ich eine auslösen kann entsprechendes Demo-Skript / Programm.
Zum Beispiel,
- Wenn ein SenseHAT angeschlossen ist, starten Sie automatisch ein Sense HAT Marble Maze
- Wenn ein Display-O-Tron-HAT angeschlossen ist, führen Sie das Menübeispiel automatisch aus
- Wenn ein PiTFT-Bildschirm angeschlossen ist, starten Sie automatisch eine Foto-Diashow
Gibt es eine Möglichkeit, Python, sh oder ähnliches auszuführen, um festzustellen, welche der gängigen GPIO-Karten mit einem Pi verbunden ist?
Dinge, über die ich nachgedacht habe:
- Verwenden von Informationen aus Pinout.xyz , um die verwendeten Pins zu erkennen, aber das klingt nach viel Arbeit.
Beachten Sie, dass ich beabsichtige, die Konfiguration automatisch zu erkennen, ohne eine Tastatur, ssh in oder ähnliches anschließen zu müssen - daher der Wunsch nach automatischer Erkennung und warum so etwas wie das Festlegen einer Umgebungsvariablen nicht helfen würde.
Antworten:
Nachdem Sie die sehr hilfreichen früheren Kommentare und Antworten von Steve Robillard und Ghanima gelesen haben :
/ proc / device-tree / hat / product
Wenn
/proc/device-tree/hat/product
vorhanden, haben Sie einen HAT angehängt und geladen - und diese Datei enthält den Namen HAT.Hier sind einige Beispielausgaben:
Display-o-Tron HUT
Namen und Inhalt aller Dateien
/proc/device-tree/hat/
für dieses Gerät:Adafruit PiTFT Plus - 3,5 Zoll
Namen und Inhalt aller Dateien
/proc/device-tree/hat/
für dieses Gerät:Update: 2018-05-17
Einige Geräte werden als HATs vermarktet, haben jedoch kein EEPROM mit einem gültigen Daten-Blob. In diesem Fall kann der Typ "HAT" nicht erkannt werden, da er nicht der HAT-Spezifikation entspricht.
Update: 2020-01-07
Ich habe ein Github-Repo mit einem Skript erstellt, um die Daten für die HATs zu erhalten, auf die ich Zugriff hatte, und um diejenigen aufzuzeichnen, die nicht wirklich HATs sind:
https://github.com/claremacrae/raspi_hat_data
Pull-Anfragen sind willkommen - führen Sie einfach das
copy_hat_data.sh
Skript in diesem Repo aus.quelle
/sys/firmware/devicetree/base/hat
erhalte genau die gleichen Informationen, wenn ein Hut an das RPi angeschlossen ist. Welches wird empfohlen?SteveRobillards ausgezeichneter Kommentar abzocken:
Verwenden Sie das I2C-EEPROM des HAT
Der Raspberry Pi Blog verweist auf die HAT-Spezifikation für GitHub, wo sowohl Dokumentation als auch Software-Tools (
eepromutils
) zur Manipulation verfügbar sind.README.md :
Informationen zum HAT spiegeln sich im Gerätebaum wider, der
/proc/device-tree/hat
auf eine der genannten Arten (Python, Sh, ...) aus dem Benutzerbereich gelesen werden kann.Beachten Sie, dass es keine gestapelten HATs * gibt (laut Raspberry Pi Blog ):
Es wird also zu jedem Zeitpunkt nur ein HAT verbunden, sein EEPROM wird ausgelesen und seine Informationen werden im Gerätebaum verfügbar gemacht.
* Es ist möglich, stapelbare Hüte herzustellen, wenn sie vom gleichen Typ sind und daher keine mehrfache und unterschiedliche Identifizierung erfordern, z. B. der Adafruit 16-Kanal-PWM / Servo-HAT für Raspberry Pi .
quelle