Hallo, ich habe viel mit Raspberry/Linux gearbeitet und habe gefallen an der vielen Peripherie und deren Ansteuerung gefunden. Jetzt möchte ich ein GPIO-Board bauen, das betriebssystemunnabhängig ist und per USB anschliessbar ist. Es könnte im Idealfall für Windows/MAC/Linux/Android einsetzbar sein. Die kaufbaren Boards melden sich alle als virtueller COM-Port an. Ich möchte aber auf jegliche zusätzliche Treiber verzichten und strebe deshalb ein USB HID-Gerät an. Die Software zur Ansteuerung dazu sollte logischerweise auch plattformunabhängig sein (Java,QT?), ohne Installation auskommen und das einzige sein, was man benötigt. Sotware ist aber ein Thema für später. Ich suche einen Mikrocontroller mit: - USB-HID-Funktionalität. Diese sollte weitgehend integriert sein, mit guter Doku/Beispielen des Herstellers. Reine USB-Softwareimplementierung eines Drittanbieters finde ich zu kompliziert. Ich möchte das nicht mehr an meinen Controller anpassen müssen. - Bauform: kein BGA. - Möglichst viel Peripherie, wie SPI, I2C, PWM, ADC. Je mehr, umso besser. - Preis und andere Faktoren sind egal. Über die Artikelseite zu USB bin ich auf die PIC-Familie gestoßen. Damit habe ich noch nicht gearbeitet und bitte um eine Einschätzung oder Altrnativen. STM32 wäre ich nicht abgeneigt, da scheinbar grosse Community vorhanden ist. Eine USB-SPI oder USB-UART-Bridge möchte ich nicht einsetzen. Das wichtigste am Mikrocontroller ist mir die USB-Funktionalität.
Dann suche erstmal ein bereits existierendes HID Gerät mit Ausgängen. M.E. gibt es da nämlich nur die 3 LED auf einer Tastatur - Ausgänge sind bei HID Geräten nicht üblich (gut, es gibt auch noch Forcefeedback bei Joysticks als Sonderfall). Und wie du mit einem HID Device dann I²C oder SPI ansteuern möchtest, bleibt mir ein Rätsel.
Möchtest du so was: http://www.sprut.de/electronic/pic/projekte/usb4all/usb4all.htm Kein HID, aber der Rest könnte nützlich sein. Das auf HID um zu stellen ist dann kein Problem. Da nimmt man das Custom HID Beispiel aus den Microchip-Libraries-for-Applications für den entsprechenden Controller und ist fast schon fertig ;-) Matthias S. schrieb: > Und wie du mit einem HID Device dann I²C oder SPI ansteuern möchtest, > bleibt mir ein Rätsel. Das machen viele...
Matthias S. schrieb: > Ausgänge sind bei HID Geräten nicht üblich Naja, Braille-Zeilen sind HID-Geräte, die nur Ausgabefunktion haben, und da ist noch viel mehr möglich. Bei CDC währe aber noch weniger Aufwand auf der Rechnerseite nötig, um die anzusprechen, das würde sogar aus der Console gehen.
Der Aufwand auf der Rechnerseite für HID ist überschaubar. Qt Beispiel -> http://www.hs-ulm.de/nocache/wir/Personal/PersonalSaSchr/vschilli/QtProjekte/ (ein Screenshot mehr -> http://picforum.ric323.com/viewtopic.php?f=46&t=103#p745)
Matthias S. schrieb: > Dann suche erstmal ein bereits existierendes HID Gerät mit Ausgängen. > M.E. gibt es da nämlich nur die 3 LED auf einer Tastatur - Ausgänge sind > bei HID Geräten nicht üblich Die HID Spezifikation sieht das anders. Die ist vollkommen generisch. Man kann auch eine Datenübertragung über hid machen. Abgesehen von der generellen Komplexität bei USB Geräten ist hid eines der einfachen Protokolle. Beispiele gibt es von den meisten Herstellern. Um debugging bei einem custom hid wirst du sehr wahrscheinlich trotzdem nicht herumkommen.
Vorab danke für die nützlichen Informationen. CDC möchte ich nicht, soweit ich das aus anderen Threads noch im Gedächtnis habe, brauche ich dafür schon noch eine *.inf und bei Win 10 solls da wohl mit CDC auch Probleme geben. Bezüglich HID: Die USB-SPI-Bridges MAX3420E und FT260 arbeiten ebenfalls als HID device oder können einen selbstgeschriebenen Treiber verwenden. Kennt jemand sonst noch Mikrocontrollerfamilien die für mein Vorhaben prädestiniert wären? Atmel? STM? NXP? Oder doch was ganz anderes?
Das alte Velleman-USB-Board verwendet auch einen PIC https://www.velleman.eu/products/view/?id=404880 "verwendet den Microsoft® Human Interface Device (HID)-Treiber, braucht keinen externen Treiber."
A. Clementino schrieb: > Kennt jemand sonst noch Mikrocontrollerfamilien die für mein Vorhaben > prädestiniert wären? So ein HID-Gerät wird wohl mit allen Herstellen zu realisieren sein, die Controller mit USB im Programm haben. Beispiele gibt es vermutlich auch von allen. Hast du Präferenzen bezüglich der Versorgungsspannung? (Digitale Eingänge/Ausgänge auf 5V, 3.3V, ....) Hast du schon mit irgendwelchen µCs gearbeitet? Irgendwelche Entwicklungsumgebungen? Kumpels, die was mit µC machen?
:
Bearbeitet durch User
Von NXP die LPC11Uxx sind da auch recht gut, die haben USB im ROM und das lässt dann mehr Platz für die eigentliche App im Flash. Fertige Entwicklungsboards wären LPCXpresso 11U37H oder 11U68, bei Watterott z.B. für 22,61 € zu haben. Da ist auch gleich die Debugger Hardware mit drauf. Als OS dazu mbed, da sind Implementierungen für USB HID, Audio, MSD u.a. drin. Ein Wechsel auf andere auf andere Cortex-M wie STM32 ist dann auch einfach, allerdings ist USB nicht für alle Implementiert. Die IDE MCUXpresso ist auch kostenlos und enthält ebenfalls USB Beispiele. USB kann bei den genannten LPC11U Chips auch dazu verwendet werden diese zu programmieren, der eingebaute Bootloader meldet sich als Massenspeicher und es muss nur das bin File darauf kopiert werden. Einen LPC11U68 bekommt man für 2€ und nochwas und hat satte 256 kB Flash / 36 kB RAM, da verstehe ich nicht warum sich so viele noch mit den schmalen ATMega32U rumquälen...
firmata ist auch eine Alternative für eine USB-GPIO Lösung. Das muss dann nicht zwingend atmega als CPU sein.
A. Clementino schrieb: > Die kaufbaren Boards melden sich alle als virtueller COM-Port an. Das hat den großen Vorteil, daß man kein spezielles Programm dafür braucht und damit unabhängig vom OS des PCs ist. Jedes simple Terminalprogramm reicht, um das Interface zu konfigurieren, Befehle zu senden und die Antworten zu empfangen. Für nacktes USB muß man immer auch einen Treiber und ein Anwenderprogramm mitliefern, welche passend zum jeweiligen OS (Windows, Linux, MacOS) compiliert werden müssen. Will man das nicht leisten müssen, wäre noch Ethernet + Webinterface eine Möglichkeit. Ist aber bestimmt auch nicht einfach zu programmieren.
Hallo, USB HID auf device seite ohne Software? wird es wohl nicht geben, ... HID Treier für Windows lifert MS mit. Für Linux und OSX gibts die auch. Ist somit kein problem. die Anforderung ist mit HID erfüllt. HID anzusprechen ist vom Verwendeten Betriebsystem abhängig. MS hat heir die HID API. HID über Java geht nur mit JNI. Java hat hier leider nichts. selbst rs232 geht nicht ohne externe lib. ggf gibts bereits ne lib die das macht. Ob die noch gewartet wird und für alle OS versionen verfügbar ist, ist zu prüfen? HID mit QT das gleiche. Gibt es eine Lib die das macht? wenn ja gibt es die für alle Betriebsysteme? ggf IO-Warrior? ist ein MCU in DIL oder SMD mit passender FW. Die Umgebungsbeschaltung hält sich meist in grenzen.
Bei OS X und Linux braucht man schon lange keinen extra Treiber mehr und ich meine das wäre jetzt bei Windows 10 ebenso der Fall. Wenn dann die Leute die noch Windows 7 nutzen halt einen extra Treiber brauchen, dann geht doch davon die Welt nicht unter.
123 schrieb: > HID mit QT das gleiche. Gibt es eine Lib die das macht? wenn ja gibt es > die für alle Betriebsysteme? Ich habe die HID-API von Alan Ott verwendet. (Win, Linux, MAC) http://www.signal11.us/oss/hidapi/
Als Alternative werfe ich einmal den FT260-Chip von FTDI in die Arena. Der kann offenbar I2C plus 10 digitale Ein-/Ausgänge und eine API gibt es vom Hersteller auch dazu.
Naja, und der Vollstaendigkeit halber, die PSoCs koennen das auch. http://www.cypress.com/documentation/application-notes/an82072-psoc-3-and-psoc-5lp-usb-general-data-transfer-standard-hid
> Ich möchte aber auf jegliche zusätzliche Treiber verzichten Linux braucht für alle mir bekannten USB-UART Chips keine zusätzlichen Treiber. Windows installiert sie vollautomatisch. Für Geräte der CDC Klasse (zum Beispiel STM32F103 mit Arduino oder Cube HAL Framework) brauchst du keinen Treiber und keine *.inf, da diese Geräteklasse direkt von Linux/Windows Unterstützt wird. > Der Aufwand auf der Rechnerseite für HID ist überschaubar. Na dann mach das mal mit Java oder PHP. Nix gut. Eventuell magst du von meinem I/O Interfacen auf Basis von AVR abgucken: http://stefanfrings.de/serial_io/index.html Ich habe auch Varianten mit Ethernet und WLAN gebaut.
Du kannst einen MCP2200 einsetzen. Der hat neben einem UART 8 GPIO-Pins, die per HID steuerbar sind. Der UART ist per CDC-ACM steuerbar. Das sind alles Standard USB Geräteklassen, für die jeder USB-Stack Treiber mitbringt. Windows vor 10 braucht für CDC-ACM ein .inf, aber keinen extra Treiber. fchk
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.