どのような種類のHATまたはGPIOボードが接続されているかを検出するにはどうすればよいですか?


8

Pi自体の機能と利用可能なアドオンボードの機能を紹介するために、同僚のデモで使用するためにいくつかのRaspberry Piをセットアップしています。

私が設定しているすべての可能なデモに対して1つのcronジョブ/起動スクリプトを維持し、HATまたは古いGPIOボードが接続されているものをそのスクリプトで検出できるようにして、適切なデモスクリプト/プログラム。

例えば、

  • SenseHATが接続されている場合は、Sense HAT Marble Mazeを自動起動します
  • Display-O-Tron HATが接続されている場合、メニューの例を自動実行します
  • PiTFT画面が接続されている場合は、写真のスライドショーを自動起動します

Pythonなどのshなどを実行して、Piに接続されている一般的なGPIOボードを検出する方法はありますか?

私が検討したこと:

  • Pinout.xyzからの情報を使用して使用中のピンを検出しますが、それは大変な作業のように思えます。

私の意図は、キーボードやsshなどを接続することなく、構成を自動検出することです-したがって、自動検出が必要であり、環境変数を設定するようなものが役に立たない理由。


1
セットアップに使用されるエプロムが含まれているので、これは帽子で可能だと思います。シェルスクリプトを使用して残りを決定し、dmesg、lsusbなどによって報告された内容を確認することができます。ハードウェアを交換するときに変更する環境変数の設定を検討することもできます。
Steve Robillard、2015

@SteveRobillard、帽子にはすべてエプロムが付いていますか?積み重ねることはできませんか?もしそうなら、当時の複数のepromはどのように個別に対処されますか?
ガニマ

@SteveRobillard提案ありがとうございます。環境変数の設定(およびその他のキーボード操作)が機能しない理由を説明するために、質問を明確にしました。dmesgやlsusbについて聞いたことがありませんでした。それらをグーグルすることは私にあなたのラズベリーパイ知っているように私に指摘しました、それも見栄えが良いです。
Clare Macrae、2015

@Ghanima 1つのHATのケースでこれを解決して本当に喜んでいるし、それらを積み重ねることを心配していません!
Clare Macrae、2015

お読みください:github.com/raspberrypi/hats
ガニマ

回答:


5

Steve RobillardとGhanimaからの非常に役立つ以前のコメントと回答を読み終えました

/ proc / device-tree / hat / product

場合/proc/device-tree/hat/productに存在する、あなたはHATが取り付けられており、ロードされている-と、そのファイルは、HATの名前が含まれています。

次に出力例をいくつか示します。

Display-o-Tron HAT

cat /proc/device-tree/hat/product
Display-o-Tron HAT

/proc/device-tree/hat/このデバイスのすべてのファイルの名前と内容:

name: hat
product: Display-o-Tron HAT
product_id: 0x0007
product_ver: 0x0001
uuid: 666dfe9b-9d78-4825-bbfe-1697048fc6cd
vendor: Pimoroni Ltd.

Adafruit PiTFT Plus-3.5インチ

cat /proc/device-tree/hat/product
Adafruit PiTFT Plus - 3.5 inch Resistive

/proc/device-tree/hat/このデバイスのすべてのファイルの名前と内容:

name: hat
product: Adafruit PiTFT Plus - 3.5 inch Resistive Touch
product_id: 0x0000
product_ver: 0x0000
uuid: 684cdc28-d27f-4065-9d11-bb3f3463786d
vendor: Adafruit Industries

更新:2018-05-17

一部のデバイスはHATとして販売されていますが、有効なデータブロブを備えたEEPROMがありません。この場合、HAT仕様と一致しないため、「HAT」タイプを検出する方法はありません。

更新:2020-01-07

私がアクセスしたHATのデータを取得し、実際にはHATではないものを記録するスクリプトを使用して、githubリポジトリを作成しました。

https://github.com/claremacrae/raspi_hat_data

プルリクエストは歓迎さcopy_hat_data.shれます。そのリポジトリでスクリプトを実行するだけです。


1
これでうまくいきます。デバイスツリーの実際のコンテンツをありがとう。それは確かに問題をよりよく理解するのに役立ちます。
ガニマ

それでも動作します!githubにリンクした問題は、単なるユーザーエラーでした。
Paul Slocum、

@PaulSlocumに感謝します-これを更新し、これについてのリポジトリをより明確にしました...データがないHATで試してみたら、追加していただければ幸いです...詳細情報が必要な場合は、私にお知らせください...
Clare Macrae

/sys/firmware/devicetree/base/hatRPiに接続されている帽子があれば、まったく同じ情報が得られます。どちらがお勧めですか?
テストユーザー

4

SteveRobillardsの優れたコメントをはぎ取る:

HATのI2C EEPROMを使用する

ラズベリーパイのブログへのHAT仕様のポイントGitHubのドキュメントとソフトウェアツール(両方のeepromutils操作用)が用意されています。

README.md

ID EEPROMには、ボードを識別するデータが含まれており、GPIOのセットアップ方法とボード上のハードウェアをB +に通知します。これにより、アドオンボードは、必要なすべてのドライバーのロードを含む、起動時にPiソフトウェアによって自動的に識別およびセットアップされます。

HATの情報はデバイスツリーに反映され/proc/device-tree/hat、前述の方法(python、shなど)でユーザー空間から読み取ることができます。

スタックされたHAT *がないことに注意してください(Raspberry Piブログによる):

スタッカブルHATが仕様の説明で取り上げられましたが、autoconfigの複雑さが大幅に増加し、ユーザーエラーの可能性があるため、最終的には除外されました。

したがって、常に1つのHATのみが接続され、そのEEPROMが読み取られ、その情報がデバイスツリーで利用可能になります。


*帽子が同じタイプで、複数の異なる識別を必要としない場合は積み重ね可能な帽子を作成することが可能です。たとえば、Raspberry Pi用Adafruit 16チャネルPWM /サーボHATです


@steverobillard、申し訳ありませんが、抵抗できませんでした。
ガニマ

3
ユーザーが回答を得る限り、問題ありません-それだけが重要です。
Steve Robillard、2015

@SteveRobillardとGhanimaの両方に感謝します-これは私にいくつかの本当に良い指針を与えてくれました。
Clare Macrae
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.