Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

HID-compatibele UPS met Arduino

Componenten en benodigdheden

Arduino Pro Micro
× 1
Broodplank (algemeen)
× 1
Jumperdraden (algemeen)
× 1

Over dit project

Ik heb onlangs met Arduino gespeeld om te zien wat het voor mij kan doen. Ik heb een oude "dummy" UPS, die zijn status niet aan de hostcomputer kan melden omdat er geen USB-poort op zit. Een van de projecten die ik in gedachten had, is het creëren van "hersenen" voor de dummy-UPS met behulp van een Arduino-bord. Het doel van dergelijke UPS-hersenen zou zijn om de interne UPS-status te lezen door de resterende batterijcapaciteit, laad-/ontlaadstatus, batterijstroom, spanning enz. te meten. Al deze metingen moeten vervolgens via de USB-interface worden doorgegeven en worden geïnterpreteerd door het hostbesturingssysteem de computer op dezelfde manier als met commerciële slimme UPS (bijvoorbeeld door APC).

Ik wilde niet knoeien met het ontwikkelen van hardwarestuurprogramma's voor mijn aangepaste UPS en ik wilde dat het "plug-and-play" zou zijn, dus besloot ik, na wat onderzoek, om een ​​HID-compatibele interface te implementeren volgens deze specificatie. HID staat voor "Human Interface Device" en is oorspronkelijk ontworpen voor toetsenborden, muizen, joysticks en soortgelijke apparaten voor menselijke invoer, maar het is onlangs uitgebreid om stroomapparaten zoals UPS, batterijen en opladers te ondersteunen, die kunnen profiteren van het gebruik van de HID standaarden voor intelligente communicatie met de hostcomputer. Mijn volgende stap was om te leren dat sommige Arduino's zoals Leonardo, Pro Micro en hun klonen zichzelf aan de host kunnen presenteren als een HID-toetsenbord of een muis. Na wat analyse van de Arduino HID-bibliotheek, toetsenbordbibliotheek en veel googlen :) heb ik mijn eigen HIDPowerDevice-bibliotheek geschreven. In het GitHub-leesmij-bestand vindt u enkele details over het instellen en gebruiken ervan.

Mijn testlab is heel eenvoudig en bestaat uit mijn laptop, Arduino Pro Micro aangesloten op de laptop (Macbook in mijn geval, maar het zal ook werken op Windows 10 en Ubuntu) via USB, een breadboard en een schakelaar (ik gebruikte eigenlijk een in plaats daarvan een jumper). Ik heb ook een paar LED's toegevoegd voor diagnostiek en een potentiometer om het laadniveau te simuleren. Schema staat hieronder:

De S1 verbindt pin 4 van de Arduino Pro Micro met de grond en simuleert zo dat de UPS op batterijvoeding gaat. Wanneer S1 UIT IS, meldt Arduino aan de pc dat hij aan het "opladen" is.

Omdat mijn "UPS" HID-compatibel is, herkent Windows 10 de Arduino ook als een HID-batterij en wordt het percentage van de resterende capaciteit correct weergegeven:

Er is één belangrijke beperking om te vermelden:Windows 10 staat meerdere batterijen toe in het systeem en ze kunnen allemaal in de lade worden weergegeven. De batterijen moeten hun status echter in dezelfde modus rapporteren (HID-specificatie ondersteunt maH, mwH en percentage), maar de meeste UPS-systemen rapporteren alleen het oplaadpercentage. Als je al een ACPI-batterij in je systeem hebt (laten we zeggen dat je op een laptop aan het testen bent), wordt het percentage mogelijk niet correct weergegeven.

Op dezelfde manier werkt de UPS ook op Linux, hoewel enige aanvullende configuratie nodig kan zijn, zie README.

UPDATE 12-jun-2021 Na verschillende vragen te hebben ontvangen over Synology-ondersteuning (Arduino-kaarten werden door Synology niet herkend als HID-compatibele UPS-apparaten) besloot ik hier wat onderzoek naar te doen. Het probleem zit toevallig in de Network UPS Tools (NUT) die door Synology distro wordt gebruikt - het gaat standaard uit van USB-interface 0 voor alle HID-compatibele UPS-modellen, maar Arudino Leonardo/Pro Mini adverteert zichzelf naar de USB-poort als een samengesteld apparaat met UPS toegankelijk op interface 2. Er is een soortgelijk probleem met interrupt-eindpunten. Meer technische details over dit probleem zijn hier te vinden.

De gewijzigde NUT-bibliotheek met Arduino-ondersteuning is hier. Je kunt het vanaf de bron bouwen en op je doelplatform installeren (Synology of een andere compatibele Linux-distro). Houd er rekening mee dat dit nog experimenteel is, dus het maken van een back-up van uw huidige NUT-bestanden wordt ten zeerste aanbevolen.

Genieten van! :)

Code

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

Schema's

arduino_ups_mlvhJQLrSZ.fzz

Productieproces

  1. Een effect besturen met echte sensoren
  2. CO2-monitoring met K30-sensor
  3. Doofblinde communicatie met 1Sheeld/Arduino
  4. Bedien muntvangers met Arduino
  5. Arduino met Bluetooth om een ​​LED te bedienen!
  6. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  7. Spelen met Nextion Display
  8. Nunchuk-gestuurde robotarm (met Arduino)
  9. Zonnestraling meten met Arduino
  10. Mini-radar met Arduino
  11. Muziek maken met een Arduino