Estou configurando algumas Raspberry Pis para uso em demos para colegas, a fim de mostrar os recursos do próprio Pi e de algumas das placas complementares disponíveis.
Eu realmente gostaria de poder manter um script cron-job / start-up para todas as demos possíveis que estou configurando e fazer com que esse script detecte qual placa GPAT HAT ou mais antiga está conectada, para que eu possa acionar um script / programa de demonstração apropriado.
Por exemplo,
- Se um SenseHAT estiver conectado, inicie automaticamente um Sense HAT Marble Maze
- Se um Display-O-Tron HAT estiver conectado, execute o exemplo de menu automaticamente
- Se uma tela PiTFT estiver conectada, inicie automaticamente uma apresentação de slides de fotos
Existe alguma maneira de executar Python, sh ou similar, para detectar qual das placas GPIO comuns está conectada a um Pi?
Coisas que eu considerei:
- Usar as informações do Pinout.xyz para detectar os pinos em uso, mas isso parece muito trabalho.
Observe que minha intenção é detectar automaticamente a configuração, sem a necessidade de conectar um teclado, ssh ou similar - daí o desejo de detecção automática e por que algo como definir uma variável de ambiente não ajudaria.
Respostas:
Depois de ler os comentários e respostas anteriores muito úteis de Steve Robillard e Ghanima :
/ proc / árvore de dispositivos / chapéu / produto
Se
/proc/device-tree/hat/product
existir, você tem um HAT anexado e carregado - e esse arquivo contém o nome do HAT.Aqui estão alguns exemplos de saídas:
Exibir-o-Tron HAT
Nomes e conteúdo de todos os arquivos
/proc/device-tree/hat/
deste dispositivo:Adafruit PiTFT Plus - 3,5 polegadas
Nomes e conteúdo de todos os arquivos
/proc/device-tree/hat/
deste dispositivo:Atualização: 17/05/2018
Alguns dispositivos são comercializados como HATs, mas não possuem uma EEPROM com um blob de dados válido; nesse caso, não há como detectar o tipo "HAT", pois não corresponde à especificação HAT.
Atualização: 2020-01-07
Criei um repositório do github com um script para obter os dados dos HATs aos quais tive acesso e registrar aqueles que não são realmente HATs:
https://github.com/claremacrae/raspi_hat_data
Solicitações pull são bem-vindas - basta executar o
copy_hat_data.sh
script nesse repositório.fonte
/sys/firmware/devicetree/base/hat
se houver um chapéu conectado ao RPi. Qual é recomendado?Arrancando o excelente comentário de SteveRobillards:
Use a EEPROM I2C do HAT
O Blog do Raspberry Pi aponta para a especificação HAT para o GitHub, onde
eepromutils
estão disponíveis a documentação e as ferramentas de software ( ) para manipulação.README.md :
As informações do HAT são refletidas na árvore do dispositivo
/proc/device-tree/hat
que pode ser lida no espaço do usuário de qualquer uma das maneiras mencionadas (python, sh, ...).Observe que não há HATs empilhados * (por Blog do Raspberry Pi ):
Portanto, a qualquer momento, apenas um HAT será conectado, terá sua EEPROM lida e disponibilizado suas informações na árvore de dispositivos.
* É possível fazer chapéus empilháveis se forem do mesmo tipo e, portanto, não exigirem identificação múltipla e diferente, por exemplo, o PWM / Servo HAT Adafruit de 16 canais para Raspberry Pi .
fonte