Arduino als USB-HID

Ist es möglich, ein HID-Gerät (wie eine Tastatur) mit einem Arduino-Uno zu erstellen?

Zu diesem Zeitpunkt Ich habe Tasteneingänge am Arduino, die Ausgänge auf der seriellen Leitung geben. Wie kann ich meine aktuelle Firmware in etwas umwandeln, das sich wie eine HID-Tastatur verhält?

  • Soll ich einen neuen Fenstergerätetreiber schreiben?
  • Soll ich eine Software erstellen? Schicht, die meine seriellen Daten aufnehmen und von Windows als HID-Eingabe lesen lassen könnte?
  • Gibt es eine bessere Möglichkeit, dies zu erreichen, wenn dies überhaupt möglich ist?

Kommentare

Antwort

Ist es möglich, ein HID-Gerät (wie eine Tastatur) mit einem Arduino uno zu erstellen?

Ja, das ist es! Und hier gibt es ein großartiges Tutorial, wie man das über hier

macht Derzeit habe ich Tasteneingaben auf dem Arduino, die Ausgaben auf der seriellen Leitung ermöglichen. Wie kann ich meine aktuelle Firmware in etwas umwandeln, das sich wie eine HID-Tastatur verhalten kann?

Wie das Tutorial zeigt, müssen Sie Ihren Firmware-Code transformieren, sodass Sie anstelle des Druckens der Ereignisse tatsächlich Ereignisse auslösen. Sie müssen lediglich Ihren Code hinzufügen:

void triggerKey(uint8_t mod, uint8_t chr) { uint8_t buf[8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // press key Serial.write(buf, 8); // emulate key press delay delay(10); buf[1] = 0x00; // release key Serial.write(buf, 8); } 

Was Sie hier tun, wird von Ihren wichtigsten Arduino-Mikrocontroller-Ereignissen über die serielle Leitung an den kleineren Mikrocontroller gesendet, der die USB-Kommunikation übernimmt. Dieser Mikrocontroller nimmt diese Schlüsselpuffer und überträgt sie, wenn die USB-HID-Tastatur über USB gedrückt wird.

Beachten Sie, dass das Schlüsselzeichen (chr im Code hier enthalten ist ) ist eigentlich ein über USB gesendeter Schlüsselcode, der von Ihrem USB-HID-Treiber interpretiert wird und dieser dann unter Verwendung des aktuellen Layouts, das Sie für Ihre Tastatur eingerichtet haben, in ein echtes Zeichen übersetzt.

Die mod Zeichen ist eine der Modifizierertasten, die Sie auf der Tastatur haben (Shift, Control, Alt …), wobei 0x00 kein Modifikator ist.

  • Soll ich einen neuen Fenstergerätetreiber schreiben?

Nein, das brauchst du nicht! Mit dem DFU-Upgrade wird Ihr Arduino von Windows als USB-Tastatur angesehen.

  • Soll ich eine Softwareschicht erstellen, die meine Seriennummer aufnehmen kann? Daten und Windows als HID-Eingabe lesen lassen?

Sie müssen das auch nicht tun, und es ist eigentlich eine sehr schlechte Idee für Viele Gründe:

  • Ihre Lösung wäre nicht portabel, und daher müssten Sie für jede Plattform, die Sie verwenden, etwas hacken.
  • Ihre Lösung würde eine Menge implizieren neuer Code ; Je mehr Code geschrieben wird, desto mehr Fehler befinden sich wahrscheinlich in Ihrem System.
  • Ihre Lösung wäre wirklich hackisch, da sie sich wie ein Gerätetreiber verhält (dh Kernelland ) Eingaben von einem Benutzerprogramm (dh Benutzerland ) entgegennehmen und wahrscheinlich nicht funktionieren, eine Hölle zum Debuggen sein und anfällig für Sicherheitsprobleme … Wenn dies überhaupt möglich ist!

Ich verwende ein Uno, aber ich werde mir ansehen, was Sie gepostet haben, weil wir das letzte Mal über das DFU-Update nachgedacht haben, aber wir sind es Ein bisschen Angst davor, Sachen zu mauern

Schließlich haben Sie in einem Kommentar Bedenken, Ihr Arduino zu mauern.Bitte glauben Sie mir und dem Autor des Artikels , dass Sie nicht Ziegeln Sie Ihr Arduino mit einem Firmware-Flash:

HINWEIS: Mit dieser Methode besteht keine Möglichkeit, das Gerät zu „bricken“. Die Arduino-Bootloader-Firmware kann jederzeit mithilfe des DFU-Protokolls aktualisiert werden!

Falls etwas wirklich schief geht und Sie eine Bootloader-Beschädigung im kleinen AVR (atmega8u2) erhalten, können Sie trotzdem einen Neustart durchführen es mit einem anderen Arduino oder einem atmel-Programmierer mit den 6 Pins neben dem USB-Stecker.

Am Ende wissen Sie, dass die nur einen AVR, also auch einen Arduino, blockiert , ist 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 weniger schwierig ist, nur einen neuen Chip zu nehmen.

Kommentare

  • Vielen Dank für all die nützlichen Informationen, die wir letztendlich erreicht haben.
  • Nun, der richtige Weg, einen AVR zu mauern, ist mit Überstrom / Überspannung. Dann wird es geröstet …
  • Aber dann wird es ' nicht Bricking genannt, sondern Braten oder wie Sie sagen Toasten. Setzen Sie 15 Ampere durch die MCU, und ich wette, Sie ' werden sehen, wie es durch den Raum springt 😉
  • Wie kann ich einen bestimmten Schlüssel loslassen? Ich möchte emulieren Ein Schlüssel HALTEN Sie dann los. Und auch im Link geht das Zeichen zu Array [2], während hier zu [1] geht. Warum?
  • Nun, wie in meinem Beispiel gezeigt, machen Sie es in zwei Schritten Schritte, zuerst drücken Sie die Taste, dann gibt es ' die Verzögerung, dann geben Sie sie frei. Nun, dann müssen Sie ' Machen Sie sich ein Bild davon, wie Hardware-Tastaturen implementiert werden Die Funktion funktioniert, ' ist nicht natürlich, und jeder Wert des Arrays hat eine Bedeutung. Entschuldigen Sie, dass ich keinen Link zum Teilen von Geldautomaten habe. Wenn Sie jedoch etwas im Internet suchen, schreiben Sie bitte einen neuen Kommentar.

Antwort

Ich habe ein Projekt erstellt, das den Arduino Bootloader vollständig ersetzt. Sie können Skizzen hochladen und als HID verwenden. Siehe Projekt HID auf Github: https://github.com/NicoHood/HID

Kommentare

  • Willkommen bei Arduino SE! Können Sie ein wenig über die Verwendung Ihrer Bibliothek hinzufügen? Danke!
  • Lesen Sie die Readme-Datei und probieren Sie die Beispiele aus? Es ist alles da, keine Notwendigkeit, hier alles zu betrügen. Alles auf Github ist auf dem neuesten Stand 🙂
  • Sorry, Alter, es sieht aus wie eine coole Bibliothek, aber deine Dokumentation fehlt verrückt. Es gibt ' keine wirklichen Installationsanweisungen, soweit ich das beurteilen kann, und ganze Themen in Ihrem Wiki sagen einfach " TODO " (speziell das Gamepad-Thema ist so komplett leer). : – /
  • Eigentlich muss hier eine grundlegende Beschreibung vorgelegt werden: Antworten müssen auch ohne den externen Link, der sterben könnte, aussagekräftig sein. Und dies ist nicht der Fall.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.