Forum: Mikrocontroller und Digitale Elektronik UART to USB HID Keyboard


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tim (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hallo liebe Mikrocontroller Community,

Ich habe momentan ein Projekt bei dem ich einen über UART eingelesenen 
String auf einem PC als Zeichenkette ausgeben soll, also als wenn er von 
einer Tastatur kommen würde. Das Problem ist, dass ich dazu keine 
passenden IC's finde, sondern nur fertige Kabel oder fertige Wandler. 
Ich möchte aber nichts vorgefertigtes, sondern einen IC, welchen ich in 
mein Projekt einbauen kann.
Die Frage ist also nun, kennt irgendwer von euch einen IC, den man am 
besten nicht programmieren muss, sondern der nur einen String wie von 
einer Tastatureingabe auf dem PC ausgibt, welcher ihm vorher über UART 
gesendet wurde?
Es sollte auch am besten ein HID USB Protokoll sein, damit es auf den 
meisten PC's erkannt und benutzt werden kann.

Danke schonmal im voraus...

: Verschoben durch Moderator
von Alternative Fakten (Gast)


Bewertung
1 lesenswert
nicht lesenswert

von Tim K. (tim_k268)


Bewertung
0 lesenswert
nicht lesenswert
Das Problem  bei diesem Chip/Evlatuation Board ist für mich, dass er 
sich selbst nicht als Keyboard ausgeben kann. Ich bräuchte eben einen 
Chip, der UART Strings bzw. Daten auf USB umsetzen kann und dafür keinen 
Extra Treiber und kein extra Programm benötigt.

von Jim M. (turboj)


Bewertung
1 lesenswert
nicht lesenswert
Alternative Fakten schrieb:
> Den IC gibt es auch einzeln
>
> 
http://www.silabs.com/products/development-tools/interface/cp2110ek-evaluation-kit

Der CP2110 emuliert aber keine Tastatur, er nutzt nur HID als 
Schnittstelle.

Das Design vom OP ist nicht besonders toll. Besser man nimmmt einen 
beliebigen USB-fähigen µC und hackt da das - oft vom Hersteller 
bereitgestellte - Tastaturbeispiel rein.


Übrigens kann eine Tastatur nur Keycodes aber keine Zeichen senden. 
Daher wird aus dem String "querty" ein "qwertz" wenn eine deutscher 
Tatstaur eingestellt ist.

von Tim K. (tim_k268)


Bewertung
0 lesenswert
nicht lesenswert
Jim M. schrieb:
> Besser man nimmmt einen
> beliebigen USB-fähigen µC und hackt da das - oft vom Hersteller
> bereitgestellte - Tastaturbeispiel rein.

Also gibt es keinen richtigen IC der das bewerkstelligen würde, was 
meinen Ansprüchen genügt? Man muss also eine µC benutzen, daran dann das 
Device mit UART anschließen und dann ein bisschen Programmieren, damit 
sich der µC als Tastatur ausgibt und die Strings, die per UART gesendet 
wurden an den PC per HID Interface/Keyboard Interface weitergibt?
Habe ich das jetzt so richtig verstanden?

Es wäre halt schade für mich, da ich dachte ich muss nur einen IC 
anschließen, den ein bisschen konfigurieren und dann hat sich das...

Aber danke.

von R. M. (Gast)


Bewertung
1 lesenswert
nicht lesenswert

von Tim K. (tim_k268)


Bewertung
0 lesenswert
nicht lesenswert
R. M. schrieb:
> http://hobby-electrons.sourceforge.net/projects/terminal-keyboard/
> Könnte sein, was du suchst.

Das sieht auf jeden Fall schon mal gut aus. Das ist auf Basis von einem 
ATmega wenn ich das richtig sehe? Also auch kein eigenständiger IC...

Sieht aus als wäre das eine Marktlücke.. Schade aber auch

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Tim K. schrieb:
> Also gibt es keinen richtigen IC der das bewerkstelligen würde, was
> meinen Ansprüchen genügt?

Natürlich nicht, die Anforderung ist etwas zu speziell, um von 
allgemeinem Nutzen zu sein. Das Thema mit den Scancodes wurde ja schon 
angesprochen, aber hier noch etwas mehr Hintergrund dazu:

Tastaturen senden nicht "A" oder "a", sondern nur die Information "Taste 
34 gedrückt" - "Taste 34 losgelassen". Welche Bedeutung diese 
Tastennummer hat, hängt vom Tastaturlayout ab, aber das kennt nur 
derjenige, der die Tasten beschriftet hat und der Tastaturtreiber des 
Betriebssystems, nicht aber die Firmware der Tastatur (bzw. Deines 
gesuchten Seriell-zu-HID-Tastatur-ICs).

von Robert H. (Firma: rh-tech.de) (ruslan)


Bewertung
1 lesenswert
nicht lesenswert
Hallo,

ist zwar kein UART aber vielleicht hilft das dir weiter, das beste, du 
muss dich dann nicht mehr um VID/PID kümmern..

KeyWarrior24D

Technische Details - KeyWarrior24D
KeyWarrior24D Chips erzeugen Tastendrücke aus einem 8 Bit Code, so 
können Anwendungen mit Microcontrollern oder SPS auf einfache Weise 
Tastatureingaben erzeugen.

USB 1.1/2.0 konform, Low Speed
Direkte Ausgänge für Caps, Num und Scroll LEDs
8 Eingänge für Tastencode
6 Eingänge für Modifier-Tasten

http://www.codemercs.com/de/tastatur/anderes-als-tasten

von Tim K. (tim_k268)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Welche Bedeutung diese
> Tastennummer hat, hängt vom Tastaturlayout ab, aber das kennt nur
> derjenige, der die Tasten beschriftet hat und der Tastaturtreiber des
> Betriebssystems, nicht aber die Firmware der Tastatur

Also müsste, insofern ich das Ganze mit einem µC realisieren wollen 
würde, der µC nicht einzelne Zeichen sondern eben die Tastennummern 
senden??


Robert H. schrieb:
> KeyWarrior24D Chips erzeugen Tastendrücke aus einem 8 Bit Code, so
> können Anwendungen mit Microcontrollern oder SPS auf einfache Weise
> Tastatureingaben erzeugen.

Dafür bräuchte ich dann unbedingt einen µC, der einen 8-Bit Code an den 
KeyWarrior sendet? Und der KeyWarrior wandelt den dann in eine 
Tastennummer um? Habe ich das so richtig verstanden?

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Tim K. schrieb:
> Das Problem  bei diesem Chip/Evlatuation Board ist für mich, dass er
> sich selbst nicht als Keyboard ausgeben kann. Ich bräuchte eben einen
> Chip, der UART Strings bzw. Daten auf USB umsetzen kann und dafür keinen
> Extra Treiber und kein extra Programm benötigt.

Ich bin gespannt, ob es da was gibt.
FTDI würde ich sowas zutrauen.

Mein Ansatz ist derzeit ein STM32 plus RS232-Pegelwandler.
Die notwendige Hardware für den Prototypen kostet bei Ebay ca. 5€.
Ein Mikrocontroller kann nebenbei auch noch VID/PID speichern.

Siehe auch mein Abschlussbericht hier
Beitrag "Haretition Pro: Digitaler Joystick"

Falls Du die Entwicklung auslagern möchtest - bitte PM.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Das oft verpönte* V-USB kann hier standardkonform eingesetzt werden:

https://www.obdev.at/products/vusb/prjhid.html (dort nach "uart2kbd" 
suchen)



*) verpönt, weil es nur Low-Speed-USB unterstützt, aber manche 
Protokolle wie z.B. CDC "legal" nicht mit Low-Speed-USB umsetzbar sind 
und daher von manchen betriebssystemen auch nicht mehr akzeptiert 
werden. Ist hier irrelevant, denn es geht hier nur um HID, und da ist 
Low-Speed-USB "legal".

von Tim K. (tim_k268)


Bewertung
0 lesenswert
nicht lesenswert
Marcus H. schrieb:
> Ich bin gespannt, ob es da was gibt.
> FTDI würde ich sowas zutrauen.

Bei FTDI habe ich schon nachgeguckt. Es gibt dort den FT260, der kommt 
aber nicht ohne extra Programm auf dem Computer aus.


Marcus H. schrieb:
> Mein Ansatz ist derzeit ein STM32 plus RS232-Pegelwandler.

Ich habe bis jetzt mit keinem anderen Mikrokontroller gearbeitet bis auf 
Arduino. Geht es denn mit dem STM32 relativ leicht?

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Tim K. schrieb:
> Also müsste, insofern ich das Ganze mit einem µC realisieren wollen
> würde, der µC nicht einzelne Zeichen sondern eben die Tastennummern
> senden??

Eine Tastatur sendet Tastendrücke an den Computer. Wenn dein "System" 
eine Tastatur nachbilden soll, dann muss es das logischerweise auch tun. 
Was die Tastendrücke bedeuten, interessiert die Tastatur nicht.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ich war bei einem kundenspezifischen PS/2-USB Wandler mit LUFA recht 
schnell am Ziel...
http://www.fourwalledcubicle.com/LUFA.php

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Tim K. schrieb:
> Ich habe bis jetzt mit keinem anderen Mikrokontroller gearbeitet bis auf
> Arduino. Geht es denn mit dem STM32 relativ leicht?

Tja, das ist eine interessante Frage.
Kommt wohl auf den persönlichen Trainingsstand an.

Für mich ist der Ansatz mit STM32 einfacher gewesen, aber es kann 
durchaus sein, dass irgendwo eine passende Arduino-Lib im Netz liegt.

von Tim K. (tim_k268)


Bewertung
0 lesenswert
nicht lesenswert
Okay danke an alle die geantwortet haben.
Ich bin momentan so weit, dass ich die Recherche aufgegeben habe und 
darauf umgestiegen bin einen µC zu benutzen.

Danke aber nochmal...

von Christian M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das geht am einfachsten mit einen Arduino Pro Micro, oder jeder mit 
ATmega32U4! Hat UART drinn und USB. HID-Library ist bei Arduino schon 
dabei!

Gruss Chregu

von Robert H. (Firma: rh-tech.de) (ruslan)


Bewertung
0 lesenswert
nicht lesenswert
Tim K. schrieb:
> Robert H. schrieb:
>> KeyWarrior24D Chips erzeugen Tastendrücke aus einem 8 Bit Code, so
>> können Anwendungen mit Microcontrollern oder SPS auf einfache Weise
>> Tastatureingaben erzeugen.
>
> Dafür bräuchte ich dann unbedingt einen µC, der einen 8-Bit Code an den
> KeyWarrior sendet? Und der KeyWarrior wandelt den dann in eine
> Tastennummer um? Habe ich das so richtig verstanden?

Ja, das ist richtig so. Je nach Anzahl der gewünschten Tasten  werden 
bis zu 8 parallele Datenleitungen + 2 Steuerleitungen benötigt.

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Von der Firma "Genie" gab es mal serielle Keyboardtreiber.
Die akzeptierten den 'normalen' ASCII-Code und machten fuer
das (Windows-)Betriebssystem Scancodes daraus.

Aber keine Ahnung ob die hinter einem USB-Seriall-Wandler tun.

Und ob Mann der Treiber heute noch irgendwo habhaft werden kann...

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#4934494:
> Und ob Mann der Treiber heute noch irgendwo habhaft werden kann...

... und ob diese Treiber unter aktuellen Windows-Versionen noch 
verwendbar sein könnten ...


Allerdings bietet Windows selbst von Hause aus eine Schnittstelle für 
seriell angeschlossene Tastaturen, die wird einem unter "Eingabehilfen" 
angeboten. Gedacht für Spezialtastaturen für körperlich eingeschränkte, 
lässt sich diese Schnittstelle natürlich auch unter anderen 
Voraussetzungen verwenden.

Vor einiger Zeit hab' ich schon mal was darüber geschrieben:
Beitrag "Re: Tastatureingaben über RS232"

von Manfred (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dazu sagte ich neulich schon etwas, habe es aber selbst nicht probiert, 
MCP2200: http://www.microchip.com/wwwproducts/en/en546923

Datenblatt: 
http://ww1.microchip.com/downloads/en/DeviceDoc/200022228D.pdf

Leider so ein Dreckspdf, aus der man keinen Text kopieren darf.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Manfred schrieb:
> habe es aber selbst nicht probiert, MCP2200:

Zwar verwendet das Ding HID, aber darüber implementiert es keine 
Tastatur oder Maus. Die HID-Verwendung dient nur der einfachen und 
treiberlosen Ansteuerung der Gerätefunktionen über eine von Microchip 
gestellte DLL.
1
The MCP2200 is configured by writing special commands using the 
2
HID interface. Configuration can be achieved using the configuration 
3
utility provided by Microchip. Alternatively, a custom utility can be 
4
developed by using the DLL available on the MCP2200 product page.

Übrigens ist dieser Text aus dem von Dir verlinkten PDF rauskopiert, 
ohne Klimmzüge. Was für einen PDF-Betrachter verwendest Du?

von Michael O. (michael_o)


Bewertung
0 lesenswert
nicht lesenswert
Auf dem LowPinCount Demo Board von Mikrochip ist der original Prozessor 
verbaut der hinter dem mcp2200 Steckt. Die Demoprojecte beinhalten USB 
to RS232 und HID Mouse und Tastatur.
Beides verheiratet sollte das gewünschte tun.

mfg
Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.