Ist es möglich, ein HID-Gerät (wie eine Tastatur) mit einem Arduino Uno zu bauen?
Zur Zeit habe ich Tasteneingänge auf dem Arduino, die Ausgänge auf der seriellen Leitung geben. Wie kann ich meine aktuelle Firmware in etwas verwandeln, das sich wie eine HID-Tastatur verhalten kann?
- Soll ich einen neuen Windows-Gerätetreiber schreiben?
- Soll ich eine Softwareschicht erstellen, die meine seriellen Daten aufnehmen und von Windows als HID-Eingabe lesen lässt?
- Gibt es einen besseren Weg, dies zu erreichen, wenn es überhaupt möglich ist?
arduino-uno
serial
Anomalie
quelle
quelle
Antworten:
ja ist es! Und es gibt ein großartiges Tutorial, wie man das hier macht
Wie das Tutorial zeigt, müssen Sie Ihren Firmware-Code umwandeln, damit Sie, anstatt die Ereignisse auszudrucken, tatsächlich Ereignisse auslösen. Was Sie tun müssen, ist zu Ihrem Code hinzuzufügen:
Was Sie hier tun, ist das Senden von Ihren wichtigsten Arduino-Mikrocontroller-Ereignissen über die serielle Leitung an den kleineren Mikrocontroller, der die USB-Kommunikation verwaltet. Dieser Mikrocontroller nimmt diese "Schlüsselpuffer" und überträgt sie, wenn die Taste der USB-HID-Tastatur über USB gedrückt wird.
Beachten Sie, dass das Schlüsselzeichen (
chr
im Code hier) tatsächlich ein über USB gesendeter Schlüsselcode ist, der von Ihrem USB-HID-Treiber interpretiert wird und der ihn dann unter Verwendung des aktuellen Layouts, das Sie für Ihre Tastatur eingerichtet haben, in ein reales Zeichen umsetzt.Das
mod
Zeichen ist eine der Modifizierertasten auf der Tastatur (Umschalttaste, Steuerungstaste, Alttaste ...) und0x00
kein Modifizierer.Nein, brauchst du nicht! Mit dem DFU-Upgrade wird Ihr Arduino von Windows als USB-Tastatur erkannt.
Das müssen Sie auch nicht tun, und das ist aus vielen Gründen eine sehr schlechte Idee:
Schließlich haben Sie in einem Kommentar Bedenken, Ihr Arduino zu ziegeln. Bitte glauben Sie mir und dem Autor des Artikels, dass Sie Ihr Arduino bei einem Firmware-Flash nicht ziegeln können:
HINWEIS: Es besteht keine Möglichkeit, das Gerät mit dieser Methode zu „mauern“. Die Arduino-Bootloader-Firmware kann immer mit dem DFU-Protokoll aktualisiert werden!
Falls etwas wirklich schlimmes schief geht und Sie eine Bootloader-Beschädigung im kleinen AVR (atmega8u2) feststellen, können Sie es mit einem anderen Arduino oder einem Atmel-Programmierer mithilfe der 6 Pins neben dem USB-Stecker erneut flashen .
Am Ende wissen Sie, dass der einzige Weg, einen AVR, also auch einen Arduino, zu ziegeln, darin besteht, mit den Sicherungen zu spielen und die Programmiersicherungen zurückzusetzen. Und selbst dann können Sie HVSP verwenden , um Ihr Gerät zu speichern, obwohl es oft einfacher ist , nur einen neuen Chip zu nehmen.
quelle
Ich habe ein Projekt erstellt, das den Arduino Bootloader vollständig ersetzt. Sie können Skizzen hochladen und als HID verwenden. Siehe Project HID auf Github: https://github.com/NicoHood/HID
quelle