Estoy configurando algo de Raspberry Pis para usarlo en demostraciones a colegas, para mostrar las capacidades del Pi en sí y de algunas de las placas adicionales que están disponibles.
Realmente me gustaría poder mantener una secuencia de comandos cron-job / start-up para todas las demostraciones posibles que estoy configurando, y hacer que esa secuencia de comandos detecte qué placa HIO o GPIO anterior está conectada, para que pueda activar un guión / programa de demostración apropiado.
Por ejemplo,
- Si se adjunta un SenseHAT, inicie automáticamente un laberinto de mármol Sense HAT
- Si se adjunta un HAT Display-O-Tron, ejecute automáticamente el ejemplo de menú
- Si se adjunta una pantalla PiTFT, inicie automáticamente una presentación de diapositivas de fotos
¿Hay alguna forma de ejecutar Python, sh o similar, para detectar cuál de algunas placas GPIO comunes está conectada a una Pi?
Cosas que consideré:
- Usar información de Pinout.xyz para detectar los pines en uso, pero eso parece mucho trabajo.
Tenga en cuenta que mi intención es detectar automáticamente la configuración, sin necesidad de conectar un teclado, ssh in o similar, de ahí el deseo de detección automática y por qué algo como establecer una variable de entorno no ayudaría.
Respuestas:
Después de leer los útiles comentarios y respuestas anteriores de Steve Robillard y Ghanima :
/ proc / device-tree / hat / product
Si
/proc/device-tree/hat/product
existe, tiene un HAT conectado y cargado, y ese archivo contiene el nombre de HAT.Aquí hay algunos resultados de muestra:
Display-o-Tron HAT
Nombres y contenido de todos los archivos
/proc/device-tree/hat/
para este dispositivo:Adafruit PiTFT Plus - 3.5 pulgadas
Nombres y contenido de todos los archivos
/proc/device-tree/hat/
para este dispositivo:Actualizar: 2018-05-17
Algunos dispositivos se comercializan como HAT pero no tienen una EEPROM con un blob de datos válido, en cuyo caso, no hay forma de detectar el tipo "HAT", ya que no coincide con la especificación HAT.
Actualización: 2020-01-07
Creé un repositorio de github con un script para obtener los datos de los HAT a los que tenía acceso y para registrar aquellos que no son realmente HAT:
https://github.com/claremacrae/raspi_hat_data
Las solicitudes de extracción son bienvenidas, solo ejecute el
copy_hat_data.sh
script en ese repositorio.fuente
/sys/firmware/devicetree/base/hat
si hay un sombrero conectado al RPi. ¿Cuál es el recomendado?Estafando a SteveRobillards excelente comentario:
Utilice la EEPROM I2C de HAT
El blog Raspberry Pi señala la especificación HAT a GitHub, donde
eepromutils
están disponibles tanto la documentación como las herramientas de software ( ) para la manipulación.README.md :
La información del HAT se refleja en el árbol de dispositivos
/proc/device-tree/hat
que podría leerse desde el espacio del usuario en cualquiera de las formas mencionadas (python, sh, ...).Tenga en cuenta que no hay HAT apilados * (según el blog de Raspberry Pi ):
Entonces, en un momento dado, solo se conectará un HAT, se leerá su EEPROM y se pondrá a disposición su información en el árbol de dispositivos.
* Es posible hacer sombreros apilables si son del mismo tipo y, por lo tanto, no requieren identificación múltiple y diferente, por ejemplo, el Adafruit 16-Channel PWM / Servo HAT para Raspberry Pi .
fuente