Пользовательская прошивка учит USB-релейную плату новым трюкам
ДомДом > Новости > Пользовательская прошивка учит USB-релейную плату новым трюкам

Пользовательская прошивка учит USB-релейную плату новым трюкам

Dec 14, 2023

Если вы ищете быстрый и простой способ управления несколькими устройствами с вашего компьютера, дешевая релейная плата USB может стать идеальным решением. Это довольно простые устройства, состоящие из микроконтроллера и нескольких реле. Но это не значит, что нет возможностей для улучшения, и, как недавно продемонстрировал [Михал Сломковский], прошивка этих плат специальной прошивкой позволяет пользователю изменить их функциональные возможности по умолчанию.

В его случае [Михал] хотел построить удлинитель, который отключал бы питание любых подключенных к нему устройств, когда его компьютер переходил в спящий режим. К сожалению, он не мог просто проверить, есть ли на линии напряжение 5 В, поскольку его материнская плата постоянно поддерживала питание портов USB. Но, внеся некоторые изменения в прошивку релейной платы, он решил, что сможет определять наличие какой-либо активности USB, отслеживая пакет начала кадра, который отправляется каждую миллисекунду, когда шина активна.

[Михал] не претендует на звание первого человека, придумавшего собственную прошивку для одной из этих плат, на самом деле он считает, что существующий проект прошивки с открытым исходным кодом вдохновил его на работу. Но он создал совершенно новую прошивку GPLv3 для этих устройств на базе ATtiny45, которая включает, помимо других улучшений, последнюю версию V-USB. Так получилось, что V-USB включает в себя обнаружение пакетов в начале кадра из коробки, что значительно упростило реализацию его кода обнаружения активности.

После того как новая прошивка была записана на чип релейной платы, [Михал] поместил ее в корпус и подключил розетки. Но оставался еще один недостающий кусочек головоломки. Похоже, что Linux на самом деле не будет отправлять пакеты начала кадра, если он не будет активно обмениваться данными с USB-устройством в рамках так называемой функции энергосбережения «выборочной приостановки». К счастью, существует поддержка отключения этой функции для определенных устройств на основе их пары «Идентификатор поставщика/продукта», поэтому после небольшой работы с udev все заработало как ожидалось.

Нам в Hackaday нравятся проекты кастомных прошивок. Они не только не допускают использования несвободного программного обеспечения на наших устройствах, но и зачастую открывают новые и расширенные возможности, которые в противном случае были бы скрыты за искусственным платным доступом.