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


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 A. Clementino (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (jojos)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Ich glaube der ATmega32u4 kann auch HID.

von Christopher J. (christopher_j23)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

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.