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