HID-совместимый ИБП с Arduino
Компоненты и расходные материалы
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Об этом проекте
Недавно я играл с Arduino, чтобы посмотреть, что он может для меня сделать. У меня есть старый «фиктивный» ИБП, который не может сообщить о своем состоянии на главный компьютер, поскольку на нем нет порта USB. Один из моих проектов - создание «мозгов» для фиктивного ИБП с помощью платы Arduino. Целью таких мозгов ИБП будет считывание внутреннего состояния ИБП путем измерения оставшейся емкости батареи, состояния зарядки / разрядки, тока батареи, напряжения и т. Д. Все эти показания должны затем передаваться через интерфейс USB и интерпретироваться операционной системой хоста. компьютер так же, как это делается с коммерческими интеллектуальными ИБП (например, APC).
Я не хотел связываться с разработкой аппаратных драйверов для своего собственного ИБП и хотел, чтобы все было по принципу plug-and-play, поэтому после некоторых исследований я решил реализовать HID-совместимый интерфейс в соответствии с этой спецификацией. HID расшифровывается как «Human Interface Device» и изначально был разработан для клавиатур, мышей, джойстиков и аналогичных устройств для ввода данных человеком, однако недавно он был расширен для поддержки таких устройств питания, как ИБП, аккумуляторы и зарядные устройства, которые могут получить выгоду от использования HID стандарты интеллектуальной связи с главным компьютером. Следующим моим шагом было узнать, что некоторые Arduinos, такие как Leonardo, Pro Micro и их клоны, могут представлять себя хосту как HID-клавиатуру или мышь. После некоторого анализа библиотеки HID Arduino, библиотеки клавиатуры и множества поисковиков :) я написал свою собственную библиотеку HIDPowerDevice. Подробную информацию о том, как его настроить и использовать, вы найдете в файле readme на GitHub.
Моя тестовая лаборатория очень проста и состоит из моего ноутбука, Arduino Pro Micro, подключенного к ноутбуку (в моем случае Macbook, но он также будет работать с Windows 10 и Ubuntu) через USB, макетную плату и один переключатель (на самом деле я использовал джемпер). Я также добавил пару светодиодов для диагностики и потенциометр для имитации уровня заряда. Схема ниже:


S1 соединяет контакт 4 Arduino Pro Micro с землей, имитируя, что ИБП работает от батареи. Когда S1 ВЫКЛЮЧЕН, Arduino сообщает ПК, что он «заряжается».


Поскольку мой «ИБП» является HID-совместимым, Windows 10 также распознает Arduino как HID-батарею, и процент оставшейся емкости отображается правильно:


Следует упомянуть одно важное ограничение - Windows 10 допускает использование нескольких батарей в системе, и все они могут отображаться на панели задач. Однако батареи должны сообщать о своем состоянии в том же режиме (спецификация HID поддерживает мАч, МВтч и процент), но большинство ИБП сообщают только процент заряда. Если в вашей системе уже есть аккумулятор ACPI (допустим, вы тестируете на ноутбуке), процентное значение может отображаться некорректно.
Точно так же ИБП работает и в Linux, хотя может потребоваться дополнительная настройка, см. README.



ОБНОВЛЕНИЕ 12 июня 2021 г. После получения нескольких запросов о поддержке Synology (платы Arduino не были признаны Synology как HID-совместимые устройства ИБП) я решил немного изучить этот вопрос. Проблема заключается в инструментах Network UPS Tools (NUT), используемых дистрибутивом Synology - он предполагает USB-интерфейс 0 по умолчанию для всех HID-совместимых моделей ИБП, но Arudino Leonardo / Pro Mini объявляет себя на USB-порт как составное устройство с доступным ИБП. на интерфейсе 2. Аналогичная проблема связана с конечными точками прерывания. Более подробную техническую информацию об этой проблеме можно найти здесь.
Модифицированная библиотека NUT с поддержкой Arduino находится здесь. Вы можете собрать его из исходного кода и установить на своей целевой платформе (Synology или любой другой совместимый дистрибутив Linux). Учтите, что это все еще эксперимент, поэтому настоятельно рекомендуется создать резервную копию ваших текущих файлов NUT.
Наслаждаться! :)
Код
Исходный код HIDPowerDevice
https://github.com/abratchik/HIDPowerDeviceСхема
arduino_ups_mlvhJQLrSZ.fzzПроизводственный процесс
- Управление эффектом с помощью реальных датчиков
- Мониторинг CO2 с помощью датчика K30
- Слепоглухое общение с 1Sheeld / Arduino
- Управление монетоприемником с помощью Arduino
- Arduino с Bluetooth для управления светодиодом!
- Емкостной датчик отпечатков пальцев с Arduino или ESP8266
- Игра с дисплеем Nextion
- Роботизированная рука, управляемая нунчук (с Arduino)
- Измерение солнечной радиации с помощью Arduino
- Мини-радар с Arduino