🇬🇧

Generic HID auf Arduino Micro

Wie implementiert man ein Sensor-Interface auf einem Arduino Micro, vergleichbar Arduino Leonardo, basierend auf ATmega32U4?

Die üblichen Lösungen benutzen hierfür eine (nämlich die von dem Arduino-Firmware-Framework „frei Haus“ gebotene) USB-CDC-Schnittstelle, also ein COM-Port.

Der Hauptnachteil davon ist, dass man dafür auf Fremdcomputern einen Treiber installieren muss. Also immer schön einen USB-Speicherstick mitnehmen oder auf Internet hoffen, um den Treiber parat zu haben.

Weiterhin nachteilig ist, dass man sich irgendwie um die Paketisierung der Messdaten kümmern muss. Oftmals werden die Daten als kommaseparierte Textzeilen geliefert, die das Empfängerprogramm wieder in Binärdaten umwandeln muss (zum Verrechnen u. ä.) - das ist rechentechnischer Unsinn. Klar, man kann auch Binärdaten übertragen, muss sich aber trotzdem um die Datensatzgrenzen kümmern.

Drittens kann nur ein Client-Programm die serielle Schnittstelle abfragen, andere Programme können die COM-Schnittstelle nicht mehr öffnen, sie ist exklusiv. HID hingegen kann mehrere Clients bedienen.

Die optimale Implementierung ist via Generic HID. (Praktikable Einführung.) Aber auch ein HID-Joystick lässt sich brauchbar dafür verwenden. HID-Tastaturen und -Mäuse sind hingegen indiskutabel.

Im Beispiel geht es um die Implementierung eines taktilen Kraftsensor-Arrays.