Я настраиваю некоторые Raspberry Pis для использования в демонстрациях перед коллегами, чтобы продемонстрировать возможности самого Pi и некоторых доступных дополнительных плат.
Я действительно хотел бы иметь возможность поддерживать один сценарий cron-job / start-up для всех возможных демонстраций, которые я настраиваю, и чтобы этот сценарий определял, какая HAT или более старая плата GPIO подключена, чтобы я мог запустить соответствующий демонстрационный скрипт / программа.
Например,
- Если SenseHAT прикреплен, то автоматически запускайте Sense HAT Marble Maze
- Если подключен Display-O-Tron HAT, то автоматически запустите пример меню
- Если подключен экран PiTFT, автоматически запустите слайд-шоу с фотографиями
Есть ли способ запустить Python, sh или аналогичный, чтобы определить, какая из некоторых распространенных плат GPIO подключена к Pi?
Вещи, которые я рассмотрел:
- Использование информации из Pinout.xyz для определения используемых контактов, но это звучит как большая работа.
Обратите внимание, что мое намерение состоит в том, чтобы автоматически определять конфигурацию, без необходимости подключать клавиатуру, ssh или что-то подобное - отсюда и желание автоматического обнаружения, и почему что-то вроде установки переменной среды не поможет.
Ответы:
Прочитав очень полезные предыдущие комментарии и ответы от Стива Робилларда и Ганимы :
/ Proc / устройства дерево / шлем / продукт
Если
/proc/device-tree/hat/product
существует, у вас есть присоединенный и загруженный HAT - и этот файл содержит имя HAT.Вот несколько примеров выходных данных:
Display-o-Tron HAT
Имена и содержимое всех файлов
/proc/device-tree/hat/
для этого устройства:Adafruit PiTFT Plus - 3,5 дюйма
Имена и содержимое всех файлов
/proc/device-tree/hat/
для этого устройства:Обновление: 2018-05-17
Некоторые устройства продаются как HAT, но не имеют EEPROM с допустимым BLOB-объектом данных, и в этом случае невозможно определить тип «HAT», поскольку он не соответствует спецификации HAT.
Обновление: 2020-01-07
Я создал репозиторий github со сценарием для получения данных о тех HAT, к которым у меня был доступ, и для записи тех, которые на самом деле не являются HAT:
https://github.com/claremacrae/raspi_hat_data
Запросы на извлечение приветствуются - просто запустите
copy_hat_data.sh
скрипт в этом репо.источник
/sys/firmware/devicetree/base/hat
такую же информацию, если на RPi есть шляпа. Какой из них рекомендуется?Срывая SteveRobillards отличный комментарий:
Используйте I2C EEPROM от HAT
В Raspberry Pi Блог точки для спецификации HAT на GitHub , где и документацию и программные средства (
eepromutils
) для манипуляции доступны.README.md :
Информация о HAT отражается в дереве устройств,
/proc/device-tree/hat
которое может быть прочитано из пространства пользователя любым из упомянутых способов (python, sh, ...).Обратите внимание, что в стеке нет шляп * (на блог Raspberry Pi ):
Таким образом, в любой момент времени будет подключен только один HAT, будет считана его EEPROM и предоставлена информация в дереве устройств.
* Можно создавать составные шляпы, если они относятся к одному и тому же типу и, таким образом, не требуют многократной и разной идентификации, например, 16-канальный ШИМ / Серво HAT Adafruit для Raspberry Pi .
источник