如何检测插入了哪种HAT或GPIO板-如果有的话?


8

我正在设置一些Raspberry Pi,以便在演示中使用给同事,以展示Pi本身以及某些可用附加板的功能。

我真的很想能够为我正在设置的所有可能的演示维护一个cron-job / startup脚本,并让该脚本检测所插入的HAT或更旧的GPIO板,以便触发适当的演示脚本/程序。

例如,

  • 如果连接了SenseHAT,则自动启动Sense HAT大理石迷宫
  • 如果连接了Display-O-Tron HAT,则自动运行菜单示例
  • 如果连接了PiTFT屏幕,则自动开始照片幻灯片放映

有什么方法可以运行sh或类似的Python,以检测连接到Pi的某些通用GPIO板中的哪一个?

我考虑过的事情:

请注意,我的意图是自动检测配置,而无需连接键盘,ssh或类似物-因此希望自动检测,为什么设置环境变量之类的方法无济于事。


1
我认为使用帽子可以做到这一点,因为它们包含用于设置的eprom。您可能可以通过一些shell脚本并查看dmesg,lsusb等报告的内容来确定其他内容。您可能还需要考虑设置在交换硬件时更改的环境变量。
史蒂夫·罗比拉德

@SteveRobillard,所有的帽子都带有流行吗?它们不是可堆叠的吗?如果是这样,那么如何分别处理多个eprom?
加纳玛

@SteveRobillard谢谢您的建议。我已经澄清了我的问题,以尝试说为什么设置环境变量(以及任何其他键盘交互操作)将不起作用。我没听说过dmesg和lsusb。谷歌搜索使我指向了解您的Raspberry Pi,这看起来也不错。
克莱尔·麦克雷

@Ghanima我很乐意为单帽子解决此问题,而不用担心将它们堆叠起来!
克莱尔·麦克雷

Answers:


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的形式销售,但没有带有有效数据blob的EEPROM,在这种情况下,由于与HAT规范不匹配,因此无法检测到“ HAT”类型。

更新时间:2020年1月7日

我使用脚本创建了一个github存储库,以获取我已经访问过的HAT的数据,并记录那些并非真正的HAT:

https://github.com/claremacrae/raspi_hat_data

欢迎请求请求-只需copy_hat_data.sh在该仓库中运行脚本即可。


1
很高兴这很适合您!感谢设备树的真实内容。当然,这有助于更好地理解该问题。
加纳玛

它仍然有效!您在github上链接的问题只是用户错误。
Paul Slocum

谢谢@PaulSlocum-我已经更新了它,并使此回购记录更加明显....如果您尝试使用我没有数据的任何HAT,我将非常感谢您添加它...让我知道如果你需要更多的信息...
克莱尔麦克雷

我从得到完全相同的信息 /sys/firmware/devicetree/base/hat如果在RPi上插上帽子,。推荐哪一个?
testuser

4

摘下SteveRobillards的出色评论:

使用HAT的I2C EEPROM

树莓派博客为HAT规范点GitHub的其中两个文档和软件工具(eepromutils用于处理)可供选择。

README.md

ID EEPROM包含识别主板的数据,告诉B +如何设置GPIO以及主板上的硬件。这样,Pi软件可以在启动时自动识别并设置附加板,包括加载所有必需的驱动程序。

HAT的信息反映在设备树中/proc/device-tree/hat,可以通过上述任何方式(python,sh,...)从用户空间中读取。

请注意,没有堆叠的HAT *(每个Raspberry Pi Blog):

规范讨论中提到了可堆叠的HAT,但最终由于自动配置的复杂性和用户错误的可能性大大增加而被淘汰。

因此,在任何给定时间,仅将连接一个HAT,读出EEPROM,并在设备树中提供其信息。


*如果帽子属于同一类型,因此不需要多个且不同的标识,则可以制造可叠放的帽子,例如用于Raspberry PiAdafruit 16通道PWM / Servo HAT


@steverobillard,对不起,无法抗拒。
加纳玛

3
只要用户得到答案就没有问题-这就是所有。
史蒂夫·罗比拉德

非常感谢@SteveRobillard和Ghanima-这给了我一些非常好的指导。
克莱尔·麦克雷
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.