Forum: Mikrocontroller und Digitale Elektronik Bau eines USB-GPIO Boards


von A. Clementino (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

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...

von Horst (Gast)


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

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)

von avr (Gast)


Lesenswert?

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.

von A. Clementino (Gast)


Lesenswert?

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?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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."

von Volker S. (vloki)


Lesenswert?

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 Johannes S. (Gast)


Lesenswert?

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...

von chris (Gast)


Lesenswert?

firmata ist auch eine Alternative für eine USB-GPIO Lösung.
Das muss dann nicht zwingend atmega als CPU sein.

von Peter D. (peda)


Lesenswert?

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.

von 123 (Gast)


Lesenswert?

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.

von Felix (Gast)


Lesenswert?

Ich glaube der ATmega32u4 kann auch HID.

von Christopher J. (christopher_j23)


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

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/

von Detlev T. (detlevt)


Lesenswert?

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.

von Mark W. (kram) Benutzerseite


Lesenswert?


von Stefan F. (Gast)


Lesenswert?

> 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.

von Frank K. (fchk)


Lesenswert?

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
Noch kein Account? Hier anmelden.