Отказ от ответственности. В следующей статье упоминается несколько тем, таких как электронные схемы, макетные платы, деревья устройств, Raspberry Pi и многое другое. Мы не собираемся углубляться ни в один из них, но в Интернете есть бесчисленное множество ресурсов, чтобы получить больше информации о них.

Изучение информатики, электроники, робототехники и/или инженерии — непростая задача. Иногда трудно представить концепции в своей голове, не имея возможности связать их с физическими представлениями.

Входит Raspberry Pi. Это мощная серия одноплатных компьютеров начального уровня. Raspberry Pi стал чрезвычайно популярен как среди профессионалов, так и среди энтузиастов, поскольку его используют во всех областях, таких как развлечения, робототехника, образование, облачные технологии, энергетика и т. д.

В этой статье мы возьмем две 4-контактные кнопки и подключим их, как если бы они были событиями ввода, подобными клавиатуре, к модели B Raspberry Pi 4 с использованием наложения дерева устройств.

Примечание. Если вы только начинаете и у вас нет монитора/клавиатуры/мыши для вашего RPI, это руководство отлично подойдет.

Части

Примечание. В этом руководстве мы использовали ОС Raspberry Pi (32-разрядную), установленную через Raspberry Pi Imager, но, вероятно, использование другого дистрибутива Linux не будет проблемой.

Макет

Конфигурация оборудования

  • Вставьте две 4-контактные кнопки в макетную плату с некоторым расстоянием между ними и соедините их двумя перемычками с шиной заземления.

  • Подключите обе кнопки к GPIO по вашему выбору. В этой статье будут использоваться GPIO 2 и 3.

  • Наконец, подключите шину заземления (с черными кабелями) к контакту заземления на RPI.

Конфигурация программного обеспечения

  • Войдите в RPI и откройте текстовый редактор. Запишите следующие изменения по мере необходимости. Сохраните файл с расширением .dts.

Приведенный выше код представляет собой спецификацию Дерева устройств, которая будет добавлена ​​в дерево устройств RPI без необходимости изменения исходного кода ОС (это невозможно сделать во всех дистрибутивах Linux, некоторые из них потребуют добавления модификации, правильной настройки и затем перекомпилировать ОС).

В приведенном выше коде мы используем коды событий ввода Linux 0x100 и 0x101 для каждого из узлов наших кнопок, чтобы они были получены всей системой ОС при нажатии кнопок.

  • Откройте терминал и добавьте наложение в дерево устройств ОС. Сначала его необходимо скомпилировать с помощью следующей команды.
dtc -I dts -O dtb -o <filename>.dtbo <filename>.dts
  • Загрузите скомпилированный оверлей (тот, который заканчивается на .dtbo), используется следующая команда:
sudo dtoverlay <filename>.dtbo

Примечание. При работе с наложениями дерева устройств одно и то же наложение можно добавить дважды, поэтому, если вы хотите внести некоторые изменения и поэкспериментировать, не забудьте удалить предыдущее наложение с помощью sudo dtoverlay -r <name_of_overlay> .

  • Протестируйте наложение с помощью evtest, выполнив следующую команду.
evtest /dev/input/event<event_numver>

Тот же дескриптор файла можно использовать для доступа к входным событиям из других программ.

Примечание. В случае реализованной системы был только один дескриптор входного файла события (/dev/input/event0), но дескрипторы входного файла события можно проверить, запустив программу без каких-либо параметров.

Заключение

Электроника и Интернет вещей — очень увлекательные и интересные области, в которые стоит углубиться. Будь то работа со светодиодами, вентиляторами и кнопками или выполнение более сложных задач, подобных описанным в этой статье. Было несколько сложно достичь этого результата, и поэтому я подумал, что это будет полезно для других и для меня в будущем.