Vraag:
Hoe te detecteren welk type HAT- of GPIO-bord is aangesloten - indien aanwezig?
Clare Macrae
2015-12-09 04:46:09 UTC
view on stackexchange narkive permalink

Ik ben Raspberry Pis aan het opzetten voor gebruik in demo's aan collega's, om de mogelijkheden van de Pi zelf en van enkele van de beschikbare uitbreidingsborden te laten zien.

Ik zou willen vind het erg leuk om één cron-job / start-up script te kunnen onderhouden voor alle mogelijke demo's die ik aan het opzetten ben, en dat script te laten detecteren welke HAT of oudere GPIO-kaart is aangesloten, zodat ik een geschikte demo kan activeren script / programma.

Bijvoorbeeld:

  • Als een SenseHAT is bevestigd, start dan automatisch een Sense HAT Marble Maze
  • Als er een Display-O-Tron HAT is bevestigd, voer dan automatisch het menuvoorbeeld uit
  • Als een PiTFT-scherm is bevestigd, start dan automatisch een diavoorstelling met foto's

Is er een manier om Python, sh of iets dergelijks uit te voeren om te detecteren welke van enkele veelvoorkomende GPIO-kaarten is aangesloten op een Pi?

Dingen die ik overwoog:

  • Informatie van Pinout.xyz gebruiken om de gebruikte pinnen te detecteren, maar dat klinkt als veel werk.

Merk op dat mijn inte De bedoeling is om de configuratie automatisch te detecteren, zonder dat je een toetsenbord, ssh in of iets dergelijks hoeft aan te sluiten - vandaar de wens voor automatische detectie en waarom zoiets als het instellen van een omgevingsvariabele niet zou helpen.

Ik denk dat dit mogelijk is met hoeden, omdat ze een eprom bevatten die wordt gebruikt voor de installatie. U kunt de rest waarschijnlijk bepalen met wat shell-scripting en kijken naar wat wordt gerapporteerd door dmesg, lsusb enz. U kunt ook overwegen om een ​​omgevingsvariabele in te stellen die u wijzigt wanneer u hardware verwisselt.
@SteveRobillard, worden alle hoeden geleverd met een eprom? Zijn ze niet stapelbaar? Zo ja, hoe worden de dan meerdere eproms afzonderlijk geadresseerd?
@SteveRobillard Bedankt voor de suggestie. Ik heb mijn vraag verduidelijkt om te proberen te zeggen waarom het instellen van omgevingsvariabelen (en elke andere toetsenbordinteractie) niet werkt. Ik had nog nooit van dmesg en lsusb gehoord. Door ze te googelen, kwam ik op [Know your Raspberry Pi] (http://raspberry-pi-guide.readthedocs.org/en/latest/system.html) dat er ook goed uitziet.
@Ghanima Ik zou dit graag oplossen voor de one-HAT-zaak, en ik hoef me geen zorgen te maken over het stapelen ervan!
Goed gelezen: https://github.com/raspberrypi/hats
@SteveRobillard, Ik trek mijn eerste opmerking in, per rpi.blog * Stapelbare HAT's die in de specificatiediscussie voorkomen - maar uiteindelijk werd het weggegooid vanwege de grote toename in complexiteit van autoconfig en de kans op gebruikersfouten. *
Twee antwoorden:
Clare Macrae
2015-12-09 15:10:32 UTC
view on stackexchange narkive permalink

Na het lezen van de zeer behulpzame eerdere opmerkingen en antwoorden van Steve Robillard en Ghanima :

/ proc / device-tree / hat / product

Als / proc / device-tree / hat / product bestaat, heb je een HAT bijgevoegd en geladen - en dat bestand bevat de naam van HAT.

Hier zijn enkele voorbeelduitvoeringen:

Display-o-Tron HAT

  cat / proc / device-tree / hat / productDisplay-o-Tron HAT  

Namen en inhoud van alle bestanden in / proc / device-tree / hat / voor dit apparaat:

  name: hatproduct: Display-o-Tron HATproduct_id: 0x0007product_ver : 0x0001uuid: 666dfe9b-9d78-4825-bbfe-1697048fc6cdvendor: Pimoroni Ltd.  

Adafruit PiTFT Plus - 3,5 inch

  cat / proc / device-tree / hat / productAdafruit PiTFT Plus - 3,5 inch Resistive  

Namen en inhoud van alle bestanden in / proc / device-tree / hat / voor dit apparaat:

  naam: hatproduct: Adafruit PiTFT Plus - 3,5 inch resistief aanraakproduct _id: 0x0000product_ver: 0x0000uuid: 684cdc28-d27f-4065-9d11-bb3f3463786 leverancier: Adafruit Industries  

Update: 17-05-2018

Sommige apparaten worden op de markt gebracht als HAT's, maar heb geen EEPROM met een geldige datablob, in welk geval er geen manier is om het "HAT" -type te detecteren, aangezien het niet overeenkomt met de HAT-specificatie.

Update: 2020-01 -07

Ik heb een github-repo gemaakt met een script om de gegevens te verkrijgen van de HAT's waartoe ik toegang had, en om de gegevens op te nemen die niet echt HAT's zijn:

https : //github.com/claremacrae/raspi_hat_data

Pull-verzoeken zijn welkom - voer gewoon het copy_hat_data.sh -script uit in die repo.

Fijn dat dit goed voor je werkt! Bedankt voor de echte inhoud van de apparaatstructuur. Het helpt zeker om het probleem beter te begrijpen.
Het werkt nog steeds! Het probleem dat je op github hebt gelinkt, was gewoon een gebruikersfout.
Bedankt @PaulSlocum - ik heb dit bijgewerkt en de repo hierover duidelijker gemaakt ... Als je het uitprobeert op HAT's waar ik geen gegevens voor had, zou ik het erg waarderen als je het toevoegt ... Laat me weet of je meer info nodig hebt ...
Ik krijg exact dezelfde informatie van `/ sys / firmware / devicetree / base / hat` als er een hat op de RPi is aangesloten. Welke wordt aanbevolen?
Ghanima
2015-12-09 05:37:29 UTC
view on stackexchange narkive permalink

Uitstekende opmerking van SteveRobillards afbreken:

Gebruik de I2C EEPROM van de HAT

De Raspberry Pi-blog geeft punten voor HAT-specificatie naar GitHub waar zowel documentatie als softwaretools ( eepromutils ) voor manipulatie beschikbaar zijn.

README.md:

De ID EEPROM bevat gegevens die het bord identificeren, vertelt de B + hoe de GPIO's moeten worden ingesteld en welke hardware er op het bord zit. Hierdoor kan het uitbreidingsbord automatisch worden geïdentificeerd en ingesteld door de Pi-software tijdens het opstarten, inclusief het laden van alle benodigde stuurprogramma's.

Informatie van de HAT wordt weergegeven in de apparaatstructuur / proc / device-tree / hat die op een van de genoemde manieren uit de gebruikersruimte kan worden gelezen (python, sh, ...).

Merk op dat er geen gestapelde HAT's * zijn (volgens Raspberry Pi Blog):

Stapelbare HAT's die in de specificatiediscussie aan bod kwamen - maar uiteindelijk werd weggegooid vanwege de grote toename in complexiteit van autoconfig en de kans op gebruikersfouten.

Dus op een bepaald moment zal er maar één HAT worden aangesloten, de EEPROM worden uitgelezen en informatie beschikbaar in de apparaatboom.


* Het is mogelijk om stapelbare hoeden te maken als ze van hetzelfde type zijn en dus geen meerdere en verschillende identificatie vereisen, bijv. de Adafruit 16-kanaals PWM / Servo HAT voor Raspberry Pi.
@steverobillard, sorry, kon het niet laten.
Geen probleem zolang de gebruiker antwoord krijgt - dat is het enige dat telt.
Heel erg bedankt zowel @SteveRobillard als Ghanima - dit gaf me een aantal echt goede tips.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...