Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

HID-kompatible USV mit Arduino

Komponenten und Verbrauchsmaterialien

Arduino Pro Micro
× 1
Breadboard (generisch)
× 1
Jumper (generisch)
× 1

Über dieses Projekt

Ich habe vor kurzem mit Arduino gespielt, um zu sehen, was es für mich tun kann. Ich habe eine alte „Dummy“-USV, die ihren Status nicht an den Host-Computer melden kann, da kein USB-Anschluss vorhanden ist. Eines der Projekte, die ich im Sinn hatte, war, mit Hilfe des Arduino-Boards "Gehirne" für die Dummy-USV zu erstellen. Der Zweck solcher USV-Gehirne besteht darin, den internen USV-Status zu lesen, indem die verbleibende Batteriekapazität, der Lade-/Entladezustand, der Batteriestrom, die Spannung usw. gemessen werden. Alle diese Messwerte sollten dann über die USB-Schnittstelle geleitet und vom Host-Betriebssystem von . interpretiert werden den Computer auf die gleiche Weise wie bei einer kommerziellen intelligenten USV (z. B. von APC).

Ich wollte mich nicht mit der Entwicklung von Hardwaretreibern für meine benutzerdefinierte USV herumschlagen und wollte "Plug-and-Play" haben, also habe ich mich nach einiger Recherche entschieden, eine HID-kompatible Schnittstelle gemäß dieser Spezifikation zu implementieren. HID steht für "Human Interface Device" und wurde ursprünglich für Tastaturen, Mäuse, Joysticks und ähnliche Geräte für die menschliche Eingabe entwickelt, wurde jedoch kürzlich erweitert, um Leistungsgeräte wie USV, Batterien und Ladegeräte zu unterstützen, die von der Verwendung des HID profitieren können Standards für die intelligente Kommunikation mit dem Host-Computer. Mein nächster Schritt war, zu lernen, dass sich einige Arduinos wie Leonardo, Pro Micro und ihre Klone dem Host als HID-Tastatur oder Maus präsentieren können. Nach einiger Analyse der Arduino HID-Bibliothek, der Tastaturbibliothek und viel googeln :) habe ich meine eigene HIDPowerDevice-Bibliothek geschrieben. Einige Details zur Einrichtung und Verwendung finden Sie in der GitHub-Readme.

Mein Testlabor ist sehr einfach und besteht aus meinem Laptop, Arduino Pro Micro, der über USB mit dem Laptop verbunden ist (in meinem Fall Macbook, aber es funktioniert auch unter Windows 10 und Ubuntu) über USB, ein Steckbrett und einen Schalter (ich habe tatsächlich einen Jumper stattdessen). Ich habe auch ein paar LEDs für die Diagnose und ein Potentiometer hinzugefügt, um den Ladezustand zu simulieren. Schema ist unten:

Der S1 verbindet den Pin 4 des Arduino Pro Micro mit Masse und simuliert so die USV im Batteriebetrieb. Wenn S1 AUS ist, meldet Arduino dem PC, dass es "aufgeladen" wird.

Da meine "USV" HID-kompatibel ist, erkennt Windows 10 den Arduino auch als HID-Akku und der Prozentsatz der verbleibenden Kapazität wird korrekt angezeigt:

Es gibt eine wichtige Einschränkung zu erwähnen - Windows 10 lässt mehrere Batterien im System zu und alle können im Tray angezeigt werden. Die Batterien müssen jedoch ihren Status im gleichen Modus melden (HID-Spezifikation unterstützt maH, mwH und Prozent), aber die meisten USVs melden nur den Prozentsatz der Ladung. Wenn Ihr System bereits über eine ACPI-Batterie verfügt (angenommen, Sie testen auf einem Laptop), wird der Prozentsatz möglicherweise nicht richtig angezeigt.

In ähnlicher Weise funktioniert die USV auch unter Linux, obwohl einige zusätzliche Konfigurationen erforderlich sein können, siehe README.

AKTUALISIERUNG 12. Juni 2021 Nachdem ich mehrere Anfragen zum Synology-Support erhalten hatte (Arduino-Boards wurden von Synology nicht als HID-kompatible USV-Geräte erkannt), beschloss ich, ein wenig darüber zu recherchieren. Das Problem liegt zufällig in den Network UPS Tools (NUT), die von Synology Distribution verwendet werden - es nimmt standardmäßig die USB-Schnittstelle 0 für alle HID-kompatiblen USV-Modelle an, aber Arudino Leonardo/Pro Mini bewirbt sich am USB-Port als Verbundgerät mit zugänglicher USV auf Schnittstelle 2. Es gibt ein ähnliches Problem mit Interrupt-Endpunkten. Weitere technische Details zu diesem Problem finden Sie hier.

Die modifizierte NUT-Bibliothek mit Arduino-Unterstützung ist da. Sie können es aus dem Quellcode erstellen und auf Ihrer Zielplattform installieren (Synology oder eine andere kompatible Linux-Distribution). Bitte beachten Sie, dass dies noch experimentell ist, daher wird dringend empfohlen, ein Backup Ihrer aktuellen NUT-Dateien zu erstellen.

Genießen! :)

Code

HIDPowerDevice-Quellcode
https://github.com/abratchik/HIDPowerDevice

Schaltpläne

arduino_ups_mlvhJQLrSZ.fzz

Herstellungsprozess

  1. Kontrollieren eines Effekts mit echten Sensoren
  2. CO2-Überwachung mit K30-Sensor
  3. taubblinde Kommunikation mit 1Sheeld/Arduino
  4. Münzprüfer mit Arduino steuern
  5. Arduino mit Bluetooth zur Steuerung einer LED!
  6. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  7. Mit Nextion Display spielen
  8. Nunchuk-gesteuerter Roboterarm (mit Arduino)
  9. Messung der Sonneneinstrahlung mit Arduino
  10. Mini-Radar mit Arduino