Forum: Mikrocontroller und Digitale Elektronik Pro Trinket als HID Keyboard


von T. O. (knupnas)


Lesenswert?

Heyho, ich habe ein Problem.
Ich bin ein kompletter Neueinsteiger und weis daher fast nichts über 
microcontroller :)

Durch ein Project auf der Adafruit Seite bin ich auf die Idee gekommen 
mir einen Pro Trinket zuzulegen.

Pro Trinket: https://learn.adafruit.com/introducing-pro-trinket/overview

Project HID: https://learn.adafruit.com/trinket-usb-keyboard/overview

Das Problem ist das die ganzen libraries für den Trinket(der Vorgänger) 
geschrieben worden sind. Da ich einen Pro habe, funktioniert der Sketch 
nicht.
Durch meine Recherchen bin ich jetzt aber auf eine "Allgemeine" library 
gestoßen die eigentlich super dokumentiert ist.

Überblick: http://rayshobby.net/?p=7363
Dateien: https://github.com/rayshobby/hid-serial

Ich habe die library HIDSerial soweit in denn dafür vorgesehenen Ordner 
verschoben und es wird mir auch alles korrekt angezeigt.
Auch der beispiel Sketch(hello_world) unter "examples" lässt sich 
problemlos ohne Fehler kompilieren. Doch irgendwie passiert danach 
nichts.
Ich habe erwartet das mein Pro Trinket, nachdem er aus dem Bootloader 
mode raus ist (grüne LED leuchtet), konstant alle 1000ms einmal Hello 
World schreibt.
Dem ist aber nicht so...

Deshalb hier meine frage: Was mache ich falsch? Mir ist klar das ich 
irgendwie einen fatalen Fehler gemacht habe und wahrscheinlich Sachen 
voraussetze mit den der Pro Trinket nicht umgehen kann.

Ich würde mich sehr über Antworten/Hilfe freuen :)


LG. Knupnas :*

von Philipp K. (philipp_k59)


Lesenswert?

Vielleicht die Quarz Frequenz in der V-USB anpassen und  ggf auf 
Schaltungskompatibilität achten.. hab da jetzt aber nicht genauer 
nachgeschaut.

von T. O. (knupnas)


Lesenswert?

Wie oben schon erwähnt habe ich keinerlei Erfahrung und weiß daher nicht 
was du meinst...

von Philipp K. (philipp_k59)


Lesenswert?

Okay dann fang mit Sachen an die Du überblicken kannst..

Diese Funktion ist einfacher auf einem Atmega32u4 wie z.B Arduino 
Leonardo zu gestalten und läuft auch sofort.. siehe zum Beispiel 
ArduinoIDE->Beispiele->USB->USBKeyboard(sind nur für den Leonardo/Micro)

diese Boards aus China gibts manchmal für 4€ in der Bucht oder auch in 
Deutschland etwas teurer http://www.ebay.de/itm/271513587187

EDIT: Einfach so klappen wird das auch nie.. USB ist schon eine der 
schwereren Geschichten und dann hakts auch mal an kleinen Bugs.. also 
nicht gerade empfehlenswert zum Einstieg und sagst ja auch nicht direkt 
was Dein Ziel ist. Schreib das doch im Github Projekt als Frage.

von Potter (Gast)


Lesenswert?

Hi,

man unterscheidet zwischen HID-Geräten, die vom System erkannt werden 
(Keyboard, Maus) und s.g. generic HID - oder wie in Deinem Post serial 
HID genannt.

T. Omate schrieb:
> Überblick: http://rayshobby.net/?p=7363

Der Unterschied ist, dass ein generic HID einfach nur Bytes versendet, 
ohne jegliche Bedeutung für das Betriebssystem, aber ein Keyboard- oder 
Maus-HID-Gerät sehr wohl durch das Betriebssystem interpretiert werden.

Die Software auf der genannten Webseite macht ersteres. Es sendet 
einfach Bytes (sieht man auch an dem gezeigten Report Descriptor).
Für Dich bedeutet das, dass Du diesen Treiber nicht verwenden kannst und 
auch nicht brauchst. Du musst 'nur' den Report Descriptor umdefinieren 
und schon läuft Dein Gerät als Keyboard. Dafür sind USB und HID 
Kenntnisse gefragt.

Ich empfehle Dir ein Buch zu lesen (Klassiker: Jan Axelson).

Gruß Potter

von Potter (Gast)


Lesenswert?

Kleine Korrektur:
Du wirst schon einen Treiber brauchen, und vermutlich funktioniert auch 
der genannte. Aber zu allererst musst Du den Report Descriptor 
umdefinieren, um die gewünschte Keyboard-Funktionalität bereit zu 
stellen.

Gruß Potter

von Philipp K. (philipp_k59)


Lesenswert?

Nochmal nachgereicht.. Der Pro Trinket hat 5V 16Mhz.. hier fehlen 3v3 
oder 3v6 Zener Dioden an den Datenleitungen um den Port nicht zu 
schädigen.. die 12Mhz sind das 3,3V Maximum..

es sei denn Pins #2 and #7 are not available (they are exclusively for 
USB)
mitbenutzen wenn das überhaupt geht und diese Pins in der USBConfig.h/c 
anpassen.

Ohne Schaltplan kann man da nur in die Kugel schauen.

Am vom TE aufgeführten Link gibt es sehr wohl fertig angepasste 
HID-Keyboard Source-Files und auch ein passendes HEX für den Atmega 
328..

Hier gibt es nur 2 Möglichkeiten das es nicht "Einfach nachgemacht" 
funktioniert.

1. Der Pro Trinket Schaltplan beisst sich mit der Grundverdrahtung des 
vorgefertigten Projekts.
2. Die Arduino IDE baut wieder mist.. dann muss man per Hand die 
F_CPU/1000 in der USBConfig.c/h selbst eintragen (war bei mir mal ein 
Fehler) und gegebenfalls noch anderes anpassen..

Dazu sei noch erwähnt das es einfach Softwareseitig immer mal zu einer 
Fehlverbindung dieser einfachen Softwarelösung geben kann.. also 
"rein,raus,rein,raus". Habe das ganze mal mit Kalibrierung des internen 
Oszis gewagt und klappte insgesamt auch nur mit vielen abänderungen.

Ist halt sehr umfangreich.

von T. O. (knupnas)


Lesenswert?

Hey erstmal danke für die ganzen Antworten :)

Ich habe mich ein wenig weiter umgeschaut und habe direkt auf der 
Adafruit Seite ein Project gefunden das rein theoretisch für meine 
Ansprüche ausreichen müsste.
Das funktioniert bei mir, trotz Anleitung, ebenfalls nicht deswegen habe 
ich mir einfach die erste Version des Trinkets bestellt.

Link: https://learn.adafruit.com/wireless-game-show-poppers/program


Danke für euer Hilfe

LG.

Knupnas :*

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.