Hallo, ich möchte mir quasi meine eigene Tastatur bauen die als HID von Windows erkannt wird und somit kein Treiber auf dem Windows PC installiert werden muß. Viele Programme lassen sich ja auch über die Tastatur am USB steuern. Bevorzugt würde ich das mit TI Komponenten machen. Also MSP430f5xx. Dieser hat USB "Peripherie" integriert. Nun weiß ich eben nicht, ob die auch einen HID Firmware Stack anbieten. Selberschreiben kann ich hier wohl getrost vergessen. Vorstellen könnte ich mir auch einen MSP430f1xx der mit einer HID fähigen USB Bridge mich zum Ziel führt. FTDI bietet ja z.B. RS232 nach USB Bausteine an. Nun weiß ich nicht, ob Windows die als HID einbindet und somit nach keinem Treiber verlangt. Vermute eher das man hier einen Treiber benötigt. Wenn das mit TI Bausteinen so einfach nicht machbar ist, würde ich mich an Atmel orientieren. Die bieten ja den AT90USBxx an. Soweit ich mich informieren konnte, gibt es da auch einen HID Firmwarestack zum Download. Ansonsten gibt es meineswissen von Microchip Pic auch HID Stacks für einige deren Pic Derivate. Nun ist das Neuland für mich und bevor ich mich da in eine Richtung verrenne, wollt ich mal nachgefragt haben, welche Erfahrungen ihr gemacht habt und welchen Weg ihr empfehlen könnt. Links auf Beispielprojekte wären hilfreich. Gruß
Die RS232-Bausteine sind nicht HID-kompitabel Der Vinculum sollte aber gehen. Wenn es für die USB-AVR eine HID-Firmware gibt, dann sollte das wohl gehen.
Für eine HID-Tastatur sollte vUSB von obdev.at reichen - das ist eine USB-Software-Implementierung für Atmel AVRs.
Wie ist das eigentlich mit der VID (Vendor ID) und PID (Product ID) aus? Windows prüft doch diese IDs der am USB hängenden Geräte. Somit auch die von meiner noch nicht vorhandenen Tastatur. Gibt es da eine allgemein gültige ID die ich da übernehmen kann und die Windows bereits kennt? Wie und woher kriege ich die. Ist die kostenfrei? Kann ich IDs von anderen HIDs verwenden. Z.B. einer anderen Tastatur? Ich gaukle dem System somit vor, meine Tastatur ist ein beliebiges HID Device von dem und dem Hersteller von dem das System die IDs kennt. Ist das rechtens? Wie ist das mit den Derivaten MSP430F55 von Ti und AT90USB von Atmel. Bekomme ich da eine general Vendor ID mit? Habe somit noch einige Fragen die bei mir noch nicht geklärt sind. Gruß
Für den Privatbereich ist es kein Problem, eine bereits existierende ID zu verwenden (am besten nicht die, deiner USB-Tastatur, sonder die deines Kumpels ;-).
Finkus schrieb: > Wie ist das eigentlich mit der VID (Vendor ID) und PID (Product ID) aus? > > Gibt es da eine allgemein gültige ID die ich da übernehmen kann Die vendor ID 0x6666 ist allgemein freigegeben für Entwicklungszwecke. Die kann jeder ohne weiteres verwenden. Wenn das Gerät nur für dich zu Hause ist, dann nimm Vendor 0x6666 und eine product ID die dir gefällt. Wenn du das Gerät verkaufst, solltest du dir eine offizielle vendor ID besorgen. Das kostet etwas.
Finkus schrieb: > Nun weiß ich eben nicht, ob die auch einen HID Firmware Stack anbieten. > Selberschreiben kann ich hier wohl getrost vergessen. Warum nicht? HID ist trivial und die komplette spezifikation ist frei verfügbar. Bevor man da stundenlang nach etwas fertigem sucht, setzt man sich zwei Stunden hin und schreibt es selber. Die Spezifikation solltest du so oder so lesen.
Ich kann auch nur die Verwendung von V-USB empfehlen. Die Anwendung ist sehr einfach. Hardware minimal (selbst ATtiny45). Habe z.b. eine programmierbare Tastatur gebaut (SD-Karte mit 64 Textmacros, die über 2x8Tasten abgerufen werden können. Da nur privat genutzt reicht die VID von obdev. Falls Interesse besteht stelle ich das Projekt hier mit rein. Ansonsten steht unter http://www.obdev.at/products/vusb/license.html was zur Verwendung im semi-profesionellen Bereich.
bin kurz davor mir das AT90USBKey Board von Atmel zu bestellen. Wenn das mit dem HID Stack so trivial ist, dann sollte ich mir das mal ansehen. Mit trivial ist vermutlich die Bedienung der Libs gemeint und nicht das schreiben selbiger. Wenn das mit nem ATiny geht, dann sollte das auch mit einem MSP430g1xx gehen. Diesen wollte ich gerne verwenden. Mich jedenfalls und wohl auch andere würde es freuen, wenn du dein Projekt bezüglich HID Anwendung hier reinstellen könntest. Wenn ich das auf dem MSP430f149 am laufen habe, werde ich es auch hier zur Einsicht einstellen. Will aber mal nicht zu viel versprechen. Muß das erst mal hinkriegen. Bei Portpintoggelei sollte der 8Bit Atmel dem 16Bit MSP überlegen sein. http://www.usb.org/developers/hidpage/ Das gibt es allerdings auch ne Menge zu lesen und zu verstehen. Bei den Controllern, die keine "USB Hardware Register" respective USB Hardware Funktionalitäten bereitstellen, muß man wohl die D+ und D- Pegel durch softwareseitiges ansteuern von Portpins am Controller vornehmen. Denke, da muß man dann strikt die Low Speed 1,5 Mbit/s einhalten. Mein Bauch sagt mir, das schafft der MSP430f149 mit 8MHz nicht, wenn die Daten durch softwareportpinansteuerung rausgetacktet werden sollen. Nun, Atmel hat auch tolle uCs.
Ok, hier also das MacroPad ;). Bin noch nicht dazugekommen, eine komplette Beschreibung zu erstellen. Aber das Grundprinzip müßte aus Code und Schaltung ersichtlich sein: Jeweils 8 Tasten bilden eine Matrix A1..H8. Man drückt zuerst eine Spalten- (oder Zeilen-) taste. LED markiert die gewählte Taste. Dann die 2te Taste. Daraufhin wird in der Datei Macros.txt auf der SD-Karte nach den Tastenkoordinaten gesucht und als Tastenscancode ausgegeben. Evt. im Makro enthaltene \n etc. werden umgesetzt. Es gibt noch eine Raster.xls mit der kann man einfach die Macros.txt und einen Ausdruck für die Tastatur erzeugen. Damit kann selbst meine Freundin (die brauchte sowas nämlich) umprogrammieren ;).
Finkus schrieb: > Wenn das mit dem HID Stack so trivial ist, dann sollte ich mir das mal > ansehen. Mit trivial ist vermutlich die Bedienung der Libs gemeint und > nicht das schreiben selbiger. Also der HID Stack ansich ist sehr einfach. In Grunde braucht man nur die HID Descriptor Datenstruktur zu definieren und die Daten per USB zu senden. Mehr nicht. Beispiel HID-Maus: http://bu3sch.de/gitweb?p=pdiusb.git;a=blob;f=usb_hid.c;hb=HEAD Eine Tastatur ist im Grunde ähnlich. Nur halt anderer descriptor und Datenstruktur. > Bei den Controllern, die keine "USB Hardware Register" respective USB > Hardware Funktionalitäten bereitstellen, muß man wohl die D+ und D- > Pegel durch softwareseitiges ansteuern von Portpins am Controller > vornehmen. Uhm, nein. Software-USB ist zwar prinzipiell möglich, aber ich würde davon abraten. Es gibt das ein oder andere Projekt welches Software-USB implementiert, aber ich würde sowas nicht in Geräte einbauen die man auch benutzen will. Wenn du schon Angst vor einer HID Implementation hast, ist von einem Software-USB Stack strikt abzuraten. ;) Man könnte einen externen USB-device chip verwenden, wenn der Mikrocontroller kein USB anbietet. Das könnte beispielsweise der PDIUSBD12 sein. Hier habe ich einen mini-USB stack mit einem PDIUSBD12 backend und auch einem Beispiel-HID frontend: http://bu3sch.de/gitweb?p=pdiusb.git;a=tree Der Stack ist aber für deine Lösung vielleicht schon etwas oversized, wenn du nur Keyboard-HID implementieren willst. Prinzipiell ist der aber ziemlich flexibel und lässt sich mit wenig Aufwand schnell anpassen.
@Finkus Klar, wenn Du den MSP430f149 verwenden möchtest, dann kannst Du den Software-USB Stack vergessen. In V-USB stecken ein paar Jahre Entwicklungsarbeit, das portiert man nicht einfach so auf eine andere MCU. @Michael Buesch > Uhm, nein. Software-USB ist zwar prinzipiell möglich, aber ich würde > davon abraten. Es gibt das ein oder andere Projekt welches Software-USB > implementiert, aber ich würde sowas nicht in Geräte einbauen die man > auch benutzen will. > Wenn du schon Angst vor einer HID Implementation hast, ist von einem > Software-USB Stack strikt abzuraten. ;) Naja, es gibt eine ganze Menge Anwendungen für den V-USB (siehe deren Website) und die funktionieren gut. Ich selber habe bisher 2 super arbeitende Anwendungen (3DP-Vert und das oben vorgestellte Macropad) und eine mit Problemen ;). Die Probleme entstehen, wenn man zuviel "drumherum" machen möchte. Also weitere Interrupts, die das zeitkritische USB-Handling versauen. Leider braucht der PDIUSBD12 mehr als 8Portspins und der einzige mit seriellem Interface, den ich kenne (ISP1161) ist teuer. Darum löse ich mein Problem beim 3. Gerät mit einem extra ATtiny25 (mit V-USB), der zwischen USB und dem Hauptprozessor hängt. Aber es gibt ja viele Wege...
Schau mal hier: http://www.schatenseite.de/dulcimer.html Eine bessere Grundlage habe ich bislang noch nicht gefunden.
ich habe hier nicht alles gelesen, aber von Microchip (PIC) gibt's eine demo, das eine HID-maus und HID-tastatur beinhaltet. runterladen, kopilieren, brennen, fertig.
@min Eine Lösung die übrigens auch mit dem V-USB Stack arbeitet (nannte sich früher mal "avrusb") ;) .
Thomas Horn schrieb: > Naja, es gibt eine ganze Menge Anwendungen für den V-USB (siehe deren > Website) und die funktionieren gut. Ich habe nie was anderes behauptet. ;) > Ich selber habe bisher 2 super arbeitende Anwendungen (3DP-Vert und das > oben vorgestellte Macropad) und eine mit Problemen ;). Die Probleme > entstehen, wenn man zuviel "drumherum" machen möchte. Also weitere > Interrupts, die das zeitkritische USB-Handling versauen. Genau. Und weil der Threadstarter möglicherweise schon Probleme mit HID hat, hab ich halt von software-USB abgeraten. Was dann IMO nur vernünftig ist.
@ Michael Buesch Wie so oft hängt es von der Umgebung ab. Aber Du hast natürlich recht, wenn USB für jemanden schon Neuland ist, sollte er sich im Zweifelsfall nicht noch eine Baustelle in Form eines SW-Stacks reinholen (,wobei manche USB Bausteine auch knifflig sein können).
Hallo Finkus, wenn du neben deiner tastatur auch noch eine/zwei datenschnittstellen brauchst, dann schau mal hier. Einfach über i2c anzusteuern: http://www.rahand.eu.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.