亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

HID-Compliant UPS with Arduino

组件和用品

Arduino Pro Micro
× 1
面包板(通用)
× 1
跳线(通用)
× 1

关于这个项目

我最近一直在玩 Arduino,看看它可以为我做什么。我有一个旧的“虚拟”UPS,它无法向主机报告其状态,因为它没有 USB 端口。我想到的项目之一是在 Arduino 板的帮助下为虚拟 UPS 创建“大脑”。这种 UPS 大脑的目的是通过测量剩余电池容量、充电/放电状态、电池电流、电压等来读取内部 UPS 状态。所有这些读数应通过 USB 接口传递,并由主机操作系统解释以与使用商用智能 UPS(例如,由 APC)相同的方式对计算机进行操作。

我不想为我的定制 UPS 开发硬件驱动程序而烦恼,我希望它是“即插即用”的,所以我决定,经过一些研究,根据这个规范实现一个符合 HID 的接口。 HID 代表“人机接口设备”,最初是为键盘、鼠标、操纵杆和类似的人机输入设备设计的,但最近已扩展到支持电源设备,如 UPS、电池和充电器,这些设备可以从使用 HID 中受益与主机进行智能通信的标准。我的下一步是了解一些 Arduinos,如 Leonardo、Pro Micro 和他们的克隆产品可以将自己作为 HID 键盘或鼠标呈现给主机。在对 Arduino HID 库、键盘库和大量谷歌搜索进行了一些分析之后:) 我编写了自己的 HIDPowerDevice 库。您将在 GitHub 自述文件中找到有关如何设置和使用它的一些详细信息。

我的测试实验室非常简单,包括我的笔记本电脑、连接到笔记本电脑的 Arduino Pro Micro(在我的例子中是 Macbook,但它也可以在 Windows 10 和 Ubuntu 上运行)通过 USB、一个面包板和一个开关(我实际上使用了一个而是跳线)。我还添加了几个用于诊断的 LED 和一个电位计来模拟充电水平。示意图如下:

S1 将 Arduino Pro Micro 的引脚 4 连接到地面,从而模拟 UPS 使用电池供电。当 S1 关闭时,Arduino 向 PC 报告它正在“充电”。

由于我的“UPS”符合 HID 标准,Windows 10 也将 Arduino 识别为 HID 电池,并且剩余容量百分比显示正确:

有一个重要的限制需要提及 - Windows 10 确实允许系统中有多个电池,并且所有电池都可以显示在托盘中。但是,电池必须以相同的模式报告其状态(HID 规范支持 maH、mwH 和百分比),但大多数 UPS 仅报告充电百分比。如果您的系统中已经有 ACPI 电池(假设您正在笔记本电脑上进行测试),那么百分比可能无法正确反映。

同样,UPS 也可以在 Linux 上运行,但可能需要一些额外的配置,请参阅自述文件。

2021 年 6 月 12 日更新 在收到有关 Synology 支持的几个查询(Synology 未将 Arduino 板识别为符合 HID 的 UPS 设备)后,我决定对此进行一些研究。问题恰好出在 Synology 发行版使用的网络 UPS 工具 (NUT) 中 - 默认情况下,所有 HID 兼容的 UPS 型号都假定 USB 接口为 0,但 Arudino Leonardo/Pro Mini 将自己作为可访问 UPS 的复合设备宣传到 USB 端口在接口 2 上。中断端点也有类似的问题。可以在此处找到有关此问题的更多技术细节。

带有 Arduino 支持的修改后的 NUT 库在这里。您可以从源代码构建它并安装在您的目标平台(Synology 或任何其他兼容的 Linux 发行版)上。请注意,这仍处于试验阶段,因此强烈建议您创建当前 NUT 文件的备份。

享受! :)

代码

HIDPowerDevice 源代码
https://github.com/abratchik/HIDPowerDevice

示意图

arduino_ups_mlvhJQLrSZ.fzz

制造工艺

  1. 使用真实传感器控制效果
  2. 使用 K30 传感器监测二氧化碳
  3. 聋盲通信与 1Sheeld/Arduino
  4. 使用 Arduino 控制硬币接收器
  5. Arduino 带蓝牙控制 LED!
  6. 带有 Arduino 或 ESP8266 的电容式指纹传感器
  7. 玩 Nextion Display
  8. Nunchuk 控制机械臂(使用 Arduino)
  9. 使用 Arduino 测量太阳辐射
  10. 带 Arduino 的迷你雷达
  11. 如何用 Arduino 制作音乐
  12. 在 Arduino 上使用 TinyML 进行咳嗽检测