Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

UPS HID com Arduino: Transforme Fonte "Burra" em Backup USB Inteligente

Componentes e Materiais

Arduino Pro Micro × 1
Protoboard (genérica) × 1
Jumpers (genéricos) × 1

Sobre o Projeto

Tenho brincado com Arduino para ver o que ele pode fazer por mim. Tenho um UPS "burro" (dummy) antigo, que não reporta seu status ao computador por não ter porta USB. A ideia era criar um "cérebro" para esse UPS usando uma placa Arduino: ler capacidade restante da bateria, estado de carga/descarga, corrente, tensão, etc., e transmitir tudo via USB para que o sistema operacional o reconheça exatamente como um UPS inteligente comercial (ex.: APC).

Não queria desenvolver drivers customizados — queria plug-and-play. Após pesquisa, decidi implementar uma interface HID-compliant conforme a especificação HID Power Device Class. HID (Human Interface Device) foi criado para teclados, mouses e joysticks, mas foi estendido para dispositivos de energia (UPS, baterias, carregadores), permitindo comunicação inteligente com o host usando padrões HID.

Descobri que alguns Arduinos (Leonardo, Pro Micro e clones) podem se apresentar ao host como teclado ou mouse HID. Após analisar as bibliotecas HID e Keyboard do Arduino e muita pesquisa, escrevi minha própria biblioteca HIDPowerDevice. Detalhes de configuração e uso estão no README do GitHub.

Banco de Testes

UPS HID com Arduino: Transforme Fonte  Burra  em Backup USB Inteligente

Meu setup é simples: laptop, Arduino Pro Micro conectado via USB (testado em MacBook, Windows 10 e Ubuntu), protoboard, uma chave (usei um jumper), dois LEDs para diagnóstico e um potenciômetro para simular nível de carga.

O interruptor S1 conecta o pino 4 do Pro Micro ao GND, simulando o UPS passando para bateria. Quando S1 está ABERTO, o Arduino reporta "carregando".

UPS HID com Arduino: Transforme Fonte  Burra  em Backup USB Inteligente

Resultados no Windows 10

Como o "UPS" é HID-compliant, o Windows 10 o reconhece como Bateria HID e mostra a porcentagem de carga corretamente na bandeja do sistema.

UPS HID com Arduino: Transforme Fonte  Burra  em Backup USB Inteligente

Limitação importante: O Windows 10 permite múltiplas baterias no sistema, mas todas devem reportar status no mesmo modo (a especificação HID suporta mAh, mWh e porcentagem). A maioria dos UPS reporta apenas porcentagem. Se você já tem uma bateria ACPI no sistema (ex.: testando em um laptop), a porcentagem pode não ser exibida corretamente.

Funcionamento no Linux

O UPS também funciona no Linux, embora possa exigir configuração adicional — veja o README.

UPS HID com Arduino: Transforme Fonte  Burra  em Backup USB Inteligente

Atualização: Suporte a Synology (12/06/2021)

Após várias dúvidas sobre suporte ao Synology (placas Arduino não eram reconhecidas como UPS HID-compliant pelo Synology), investiguei. O problema está no Network UPS Tools (NUT) usado pelo Synology: ele assume interface USB 0 por padrão para todos os modelos HID UPS, mas o Arduino Leonardo/Pro Micro se anuncia como dispositivo composto com o UPS na Interface 2. Há problema similar com endpoints de interrupção.

Detalhes técnicos aqui. Biblioteca NUT modificada com suporte a Arduino aqui. Compile a partir do fonte e instale na plataforma alvo (Synology ou outra distro Linux compatível). Faça backup dos arquivos NUT atuais antes — ainda é experimental.

Divirta-se! :)

Código

Código-fonte HIDPowerDevice: https://github.com/abratchik/HIDPowerDevice

Esquemáticos

arduino_ups_mlvhJQLrSZ.fzz

Processo de manufatura

  1. Crie Efeitos de Áudio Controlados por Sensores com o Kit Satellite CCRMA
  2. Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
  3. Facilitando Comunicação Surdo-Cego com 1Sheeld e Arduino
  4. Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
  5. Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
  6. Integrando Sensor de Impressão Digital Capacitivo DFRobot com Arduino ou ESP8266
  7. Projeto HMI Interativo com Nextion, Arduino Mega e Sensores
  8. Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega
  9. Medição Precisa de Radiação Solar com Arduino UNO e Ethernet Shield
  10. Sistema Radar Compacto com Arduino Nano, Sensor HC-SR04 e Display 1.8"