Forum: Mikrocontroller und Digitale Elektronik Tastatur Emulation Von PC zum Microkontroller


von Robert (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem und zwar bin ich auf der Suche nach einer 
Möglichkeit eine Tastatur auf dem PC zu simulieren und die Signale via 
USB an einen Microkontroller zu leiten.
Über Vorschlge zur Lösung wäre ich sehr froh.

mit freundlichen Grüßen
Robert

von Sebastian Hepp (Gast)


Lesenswert?

Soll das heisen, dass der Mikrocontroller USB-Host ist und der PC als 
USB HID Tastatur agieren soll???

von Karl H. (kbuchegg)


Lesenswert?

Robert schrieb:
> Hallo,
>
> ich habe folgendes Problem und zwar bin ich auf der Suche nach einer
> Möglichkeit eine Tastatur auf dem PC zu simulieren und die Signale via
> USB an einen Microkontroller zu leiten.

Hä?
Was hat das eine (PC) mit dem anderen (µC) zu tun?

Was bedeutet: du sollst eine Tastatur auf dem PC 'simulieren'?

Und welche Signale sollen an den µC wie übertragen werden?

von Robert (Gast)


Lesenswert?

ok anscheinend war ich nicht präzise genug.

ich habe einen Mikrokontroller an einem JTAGmkII an einem PC 
angeschlossen. diesen PC kann ich jedoch nur über Remotedesktop 
ansteuern und den Microkontroller nur über die am PC angeschlossene 
Webcam sehen. Nun brauch ich noch eine Möglichkeit mit Hilfe einer 
Tastatur den Microkontroller zu steuern.
Da ich aber an den Microkontroller nicht drankomme brauch ich eine 
Tastatur emulation auf dem Rechner, welche die Tastatur Signale an den 
Microkontroller weiterleitet.
Dabei soll sich die Emulation genausoverhalten die eine echte Tastatur.
Sprich wenn der Microkontroller vormir stehen würde, würd ich meine 
Tastatur anschliessen da das aber nicht geht brache ich ein Workaround.

Viele Grüße
Robert

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Robert schrieb:
> ok anscheinend war ich nicht präzise genug.

JA!

Wo ist die Tastatur angeschlossen die später emuliert werden soll?

von Robert (Gast)


Lesenswert?

die Tastatur ist über eine PS/2 adapter platine diekt mit den Ports des 
Mikrokontrollers verbunden

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?


von Robert (Gast)


Lesenswert?

Na das ist nicht ganz das was ich mir vorgestellt habe

von Andreas B. (andreas_b77)


Lesenswert?

Nimm nen zweiten Mikrocontroller, der eine PS/2 Tastatur emuliert und 
schick dem, etwa über die serielle Schnittstelle, vom PC Befehle, welche 
Tasten gedrückt oder losgelassen werden sollen.

Direkt vom PC aus ist das kaum machbar.

von David (Gast)


Lesenswert?

Hallo zusammen,

Ich greife dieses Thema noch einmal auf, da ich ein ähnliches Problem 
lösen möchte:
Ich will im Grunde eine PS2 Tastatur selbst bauen. D.h. ein 
Mikrocontroller soll an einen PS2 Anschluss angeschlossen werden und 
sich so verhalten, wie eine Tastatur.

Bei meiner Recherche lese ich immer wieder "sowas gab es schon oft", 
allerdings finde ich keinen brauchbaren Ansatz. Hat vielleicht noch 
Jemand so etwas zur Hand?

Es gibt ja z.B. diesen "Quick Bios Recover" Stecker, der sicherlich 
alles nötige an Software beinhaltet. Allerdings finde ich nirgends 
Sourcecode und auf Mails scheint er nicht mehr zu reagieren.


Viele Grüße,
David

von Chris (Gast)


Lesenswert?


von Chris (Gast)


Lesenswert?

ttl usb converter (usb converter ohne max232) bekommt man günstig,
wenn rs232 vorhanden, genügen zwei Widerstände, 
http://www.strippenstrolch.de/grafiken/picaxe28-seriell.gif
ansonsten usbnub (€17,40) wenn du keine Möglichkeit hast Pic zu 
programmieren, und asm Lib in Jal einbinden, beim usb->rs232 Beispiel.

von David (Gast)


Lesenswert?

Sorry, ich glaube das ist nicht ganz das Richtige.

Der Mikrocontroller soll die Eingaben machen, d.h. es wird keine 
Tastatur in dem Sinne geben, sondern eine Art Emulation.

Ich habe einen MC mit 2 USARTs. der 1. ist über USB an meinen PC 
angeschlossen. Der MC initialisiert den PS2 Port, als wenn er eine 
normale PS2 Tastatur wäre. Über den PC kann ich dann dem MC sagen, 
welche Eingaben er machen soll. Der MC soll dann aus meinen Befehlen ein 
PS2 Signal erzeugen.

von Andreas B. (andreas_b77)


Lesenswert?

Auf http://www.computer-engineering.org/ps2protocol/ gibts eine relativ 
gute Beschreibung des PS/2 Protokolls und genauere Beschreibungen der 
Maus und Tastatur Kommandos, die übertragen werden.

von Chris (Gast)


Lesenswert?

Ja, die Libs haben auch device funktionalität, ansonsten, z.B.
http://jpbachy.free.fr/Keyboard_Caroline_asm.htm
Läuft ab 8 pin pic PIC12F629/675 als Beispiel. Adresse der Ram Variablen
einfach von 20 anstelle von 10 Starten. Man kann dasselbe aber auch,
wie gesagt, mit usb machen. Sag was du machen willst, wenn Pic, dann
ändere ich dir die notwendigen Zeilen.

von David (Gast)


Lesenswert?

@Andreas,
Ok, also ich habe bereits darüber nachgedacht, den Code selber zu 
schreiben. Nur ist das natürlich eine Menge Arbeit. Da ich gelesen habe, 
sowas hätte es schon öfter gegeben, möchte ich die Arbeit lieber 
vermeiden.

@Chris,
So auf Anhieb kann ich nicht genau feststellen, was dieser Code macht. 
Mir scheint es, als wenn das immer nur eine Art Signalwandlung wäre, ich 
also immer eine in Hardware vorhandene Tastatur brauche.

Ich habe mir das so gedacht:
Das System hat 2 PCs und einen Mikrocontroller.

PC1 ist per USB mit dem Mikrocontroller verbunden. Der Mikrocontroller 
ist per PS/2 mit PC2 verbunden.
Ich möchte nun an PC1 (auch ohne Tastatur) mit einer Software dem 
Mikrocontroller sagen, dass ich z.B. die Taste 'a' drücke. Dann soll der 
Mikrocontroller dem PC2 über den PS/2 Port genau das weiß machen.
Der MC ist also eine virtuelle Tastatur, die ihre Befehle nicht durch 
Eintippen mit den Fingern bekommt, sondern durch Befehle über den 
eingehenden USB-Port.

Dieser Mikrocontroller macht im übrigen noch andere Dinge, ist also 
nicht ausschließlich für die Tastaturemulation zuständig. Aber das nur 
als Nebeninfo.

von Chris (Gast)


Lesenswert?

> So auf Anhieb kann ich nicht genau feststellen, was dieser Code macht.
Der letzte Code gibt den 1.2kbps rs232 input als Tastatur aus,
;   Hardware:
;  RA0  T1OUT of MAX232
;  RB0  Pin 2 of DIN Connector
;  RB1  Pin 1 of DIN Connector
RA0 ist RS232 input, RB0 + RB1 ist output mit externen 4Kohm pull-up.
> Mir scheint es, als wenn das immer nur eine Art Signalwandlung wäre, ich
> also immer eine in Hardware vorhandene Tastatur brauche.
Ja, ist signalwandlung, und zwar von rs232 (1.2Kbit) auf ps2 
Tastaturemulation. Und genau das. Sprich es wird nichts von PS2 gelesen.
Wenn dein uC die Tastatur initialisiert, und auf einen Acknowledge 
wartet,

Er ist leicht anzupassen, kann dir dabei behilflich sein.

> Dieser Mikrocontroller macht im übrigen noch andere Dinge, ist also
> nicht ausschließlich für die Tastaturemulation zuständig. Aber das nur
> als Nebeninfo.
Welcher uC sollte das sein ? kann aber auch ein anderer uC sein, welcher
die Tastatureingaben als rs232 ausgibt und ein dedizierter uC wandelt
das um. Nun die Frage, kannst du pic programmieren, willst du pic 
einsetzen, was für ein uC soll es werden.

Was der Code nicht macht ist das lesen von der PS2 Schnittstelle und
das Antworten darauf. Wenn dein uC darauf wartet, musst du das manuell
Senden.

Beispiel was der Host senden kann:
ED    Set status LED's - This command can be used to turn on and off the 
Num Lock, Caps Lock & Scroll Lock LED's. After sending ED, keyboard will 
reply with ACK (FA) and wait for another byte which determines their 
status. Bit 0 controls the Scroll Lock, bit 1 the Num Lock and bit 2 the 
Caps lock. Bits 3 to 7 are ignored.
EE   Echo - upon sending an echo command to the keyboard, the keyboard 
should reply with an echo (EE).
F0   Set scan code set. Upon sending F0, keyboard will reply with ACK 
(FA) and wait for another byte, 01-03 which determines the scan code 
used. Sending 00 as the second byte will return the scan code set 
currently in use.
F3   Set typematic repeat rate. Keyboard will acknowledge command with 
FA and wait for a second byte, which determines the typematic repeat 
rate.
F4   Keyboard enable - clears the keyboard's output buffer, enables 
keyboard scanning and returns an acknowledgment.
F5   Keyboard disable - resets the keyboard, disables keyboard scanning 
and returns an acknowledgment.
FE   Resend - upon receipt of the re-send command, the keyboard will 
re-transmit the last byte sent.
FF   Reset - resets the keyboard.

und was das Keyboard zurücksendet bzw senden kann:
FA    Acknowledge
AA   Power on self test passed (BAT completed)
EE   See echo command (host commands)
FE   Resend - upon receipt of the resend command the host should 
re-transmit the last byte sent.
00   Error or buffer overflow
FF   Error or buffer overflow

von David (Gast)


Lesenswert?

Vielen Dank für Deine Unterstützung, Chris.


Also der uC müsste auch von PS/2 lesen, da er für den PC2 eine ganz 
normale Tastatur sein soll.

Das Board ist bereits fertig und mit einem ATmega644P bestückt. Ich habe 
nun noch vom 2. USART RXD und TXD auf Pins gelegt. Da kommt dann später 
einfach ein PS/2 Stecker mit Kabel drin. Leider ist beim Layouten der 
XCK Pin für etwas anderes benutzt worden, was vermutlich ein Problem 
ergibt, da der uC als "Tastatur" die Clock erzeugen muss. Aber das ist 
momentan nicht das Wichtigste.
Ich kann uC in C programmieren, bin aber kein Profi. Assembler ist z.B. 
nicht mein Ding.

von Chris (Gast)


Lesenswert?

> Also der uC müsste auch von PS/2 lesen, da er für den PC2 eine ganz
> normale Tastatur sein soll.
Wenn der uC nicht wartet, dann geht das auch ohne, ansonsten häng 
einfach
eine normale Tastatur dran und gut is. Dann kannst du auch die Leds
als Debugging Output benutzen, wenn es dir darauf ankommt.
Du ersparst dir da einiges an Aufwand.

von David (Gast)


Lesenswert?

Ich werde mich demnächst mal an der Programmierung versuchen.
Falls es Probleme gibt, melde ich mich nochmal ;).

Viele Grüße

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.