Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

HID-совместимый ИБП с Arduino

Компоненты и расходные материалы

Arduino Pro Micro
× 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

Производственный процесс

  1. Управление эффектом с помощью реальных датчиков
  2. Мониторинг CO2 с помощью датчика K30
  3. Слепоглухое общение с 1Sheeld / Arduino
  4. Управление монетоприемником с помощью Arduino
  5. Arduino с Bluetooth для управления светодиодом!
  6. Емкостной датчик отпечатков пальцев с Arduino или ESP8266
  7. Игра с дисплеем Nextion
  8. Роботизированная рука, управляемая нунчук (с Arduino)
  9. Измерение солнечной радиации с помощью Arduino
  10. Мини-радар с Arduino