Hallo ans Forum. Ich möchte USB-Geräte abfragen und steuern und suche nach einer Möglichkeit dies zu tun. Ich kenne mich etwas mit einfacheren Micocontrollern und Windows-Programmierung aus, bin ansonsten aber eher in elektronischer Hardware unterwegs. Gibt es einen Controller, der USB treiben kann? Möglichst mit einer fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein sein. Hinweis: Ist ein pures Bastelprojekt für den Modellbau.
:
Verschoben durch User
Heiko S. schrieb: > Gibt es einen Controller, der USB treiben kann? Möglichst mit einer > fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein > sein. selbst wenn es das gibt, dann braucht du immer noch ein Treiber für dein Gerät - kannst du denn den schreiben und hast du das Protokoll?
Heiko S. schrieb: > Gibt es einen Controller, der USB treiben kann? Möglichst mit einer > fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein > sein. Du könntest es mit USB-CDC probieren, das haben viele Controller. Damit sollte man sowas wie einen Host implementieren können. Aber: Einfach ist das nicht, du musst die USB-Treiber implementieren. Ich persönlich denke, dass ein Linux-Host besser geeignet ist, also kein Microcontroller. Sowas wie ein Raspberry PI. Es gibt einige kleinere Boards. sowas zum Beispiel: https://www.solid-run.com/freescale-imx6-family/imx6-som/ https://www.raspberrypi.org/blog/raspberry-pi-zero/ Der Nachteil der erstgenannten Variante ist nämlich der Programmieraufwand. Bei der zweiten Variante sollte das doch sehr viel einfacher sein.
Peter II schrieb: > elbst wenn es das gibt, dann braucht du immer noch ein Treiber für dein > Gerät - kannst du denn den schreiben und hast du das Protokoll? Nun ja, im einfachsten Fall wäre es mal eine Maus, ein USB-Sensor. Einen Treiber habe Ich für die immer nur für Win / Linux. Aber so arg komplex kann das nicht sein, oder?
Hurra schrieb: > Ich persönlich denke, dass ein Linux-Host besser geeignet ist, also kein > Microcontroller. Sowas wie ein Raspberry PI. Das hatte Ich auch schon gedacht. Schien mir aber zu aufwändig. Wenn natürlich mit dem Gerät das Linux mal liefe, hätte Ich den Treiber. Hast Du sowas schon mal gemacht?
Schau mal unter FTDI http://www.ftdichip.com/Products/ICs/VNC2.htm Da gibt es auch Dev-Kits /IDEs mit Controller. Für einfachste Anwendungen sollte das ausreichend sein.
Es gibt PIC, mit OTG Interface, das sollte fuer HID und allenfalls Massenspeicher reichen. fuer was anderes natuerlich nicht, da dann die Treiber fehlen.
Heiko S. schrieb: > Aber so arg komplex kann das nicht sein, oder? wenn man die Protokollbeschreibung hat dann nicht.
Du koenntest ein externes IC nehmen, z.B. den MAX3421E. Den kannst du dann per SPI mit einem Mikrocontroller deiner Wahl ansteuern. http://datasheets.maximintegrated.com/en/ds/MAX3421E.pdf Der Atmel SAM D21 kann USB-Host. Dieser ist auf dem Arduino M0 bzw. Arduino M0 Pro verbaut: M0: https://www.reichelt.de/index.html?ACTION=3;ARTICLE=162345;SEARCH=arduino%20zero M0 Pro: https://www.reichelt.de/Einplatinen-Microcontroller/ARDUINO-M0-PRO/3/index.html?ACTION=3&LA=517&ARTICLE=155816&GROUPID=6667 Du koenntest auch noch den Atmel SAM R21 nehmen. Ist der D21 nur noch mit Funk. Dazu gibt es von Atmel ein Eval-Board. http://www.atmel.com/tools/ATSAMR21-XPRO.aspx
Die STM32F4 können sowas. Zumindest externe Massenspeicher sind recht einfach an das USB OTG anzubinden, welches z.B. an den Discovery F4 und Discovery F429 Eval Boards herausgeführt ist. Habe ich erfolgreich sogar über kleine USB Hubs betrieben. Auch das dicke F7 Board sollte sowas haben.
:
Bearbeitet durch User
Heiko S. schrieb: > Gibt es einen Controller, der USB treiben kann? Möglichst mit einer > fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein > sein. > > Hinweis: Ist ein pures Bastelprojekt für den Modellbau. Schau dir doch mal ATmega / ATxmega und die Lufa Bibliothek an. Da sind viele fertige Beispiele dabei!
Dennis X. schrieb: > Schau dir doch mal ATmega / ATxmega und die Lufa Bibliothek an. Da sind > viele fertige Beispiele dabei! Mit einem ATmega / ATxmega bekommt man keine USB Host zu laufen.
Heiko S. schrieb: > Hallo ans Forum. > > Ich möchte USB-Geräte abfragen und steuern und suche nach einer > Möglichkeit dies zu tun. Ich kenne mich etwas mit einfacheren > Micocontrollern und Windows-Programmierung aus, bin ansonsten aber eher > in elektronischer Hardware unterwegs. > > Gibt es einen Controller, der USB treiben kann? Möglichst mit einer > fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein > sein. > > Hinweis: Ist ein pures Bastelprojekt für den Modellbau. Kurzfassung: Controller mit USB-OTG/Host-Funktionalität gesucht. Bei den heutigen Controllern ist da eher die Frage wie viele, nicht ob es die gibt. 32-Bitter: u.a. div. Microchip PIC32, Renesas RX, SuperH, RZ, Synergy, STM32L4, F4, F7, Atmel SAM, NXP LPC, Kinetis, iMX. Softwarestack für OTG/Host-Funktionalität gibt's u.a. bei Microchip, Renesas, Atmel, NXP Interessanter wird's wenn USB 2.0 HiSpeed und mehr gefragt ist. Fertige "App": Bleibt eigentlich nur irgendwas mit größerem OS und in klein wie u.a.: Raspberry Pi Zero, VoCore2 1) oder z.B. LinkIt Smart 7688 Duo 2) 1) http://vocore.io/ 2) https://www.seeedstudio.com/LinkIt-Smart-7688-Duo-p-2574.html
Samd11 wäre noch kleiner alsder samd21, im asf findet man fertige aplikationen für verschiedene Usb classen.
HM, scheint aufwändiger zu werden, als Ich dachte. Das mit den Treibern könnte ein Problem werden, weil Ich die nicht habe und auch nicht das Protokoll. Bei einer USB-Maus ging es halt noch über einen Adapter, der PS2 kann.
Heiko S. schrieb: > Bei einer USB-Maus ging es halt noch über einen Adapter, der PS2 kann. Nee, auch das nicht. Das ging nur, wenn die Maus "zweisprachig" war, dann hat der Adapter die Maus dazu gebracht, statt USB PS/2 zu sprechen. Mit einer reinen USB-Maus aber haben diese Adapter nie funktioniert; wie sollten sie auch, die Dinger sind rein passiv und enthalten nur ein paar Drähte, die die beiden Anschlüsse miteinander verbinden.
Aaaaah! DAS ist mal eine Information! Das verkompliziert die Geschichte natürlich weiter. Ich hatte ja solche USB-PS2 Mäuse noch in der Hinterhand. Wenn die jetzt alles Sterben, MUSS USB her.
Ein USB-host ist nicht trivial, je nach dem, was Du tun willst. In Linux ist das eigentlich gut unterstützt und auch aufzusetzen, aber Linux auf Microcontrollern ist wieder um eine Verrenkung. Ich würde mich da nach was Fertigem umsehen, gfs doch in Richtung Arduino.
Renesas Synergy, ab S3 aufwärts kann das. Aber genau schauen was die USB-Peripherie der einzelnen Derivate wirklich kann und ob man man mit der Ausstattung (RAM) das auch zum Laufen bekommt. Teuer sind die Dinger auch, man bezahlt halt über das Silizium den ganzen IDE, RTOS, Framework, Treiber-Kram letztendlich doch mit. Release Notes lesen, in manchen Framework-Releases gibts Einschränkungen bei manchen Treibern. Ich hab aber den Eindruck dass das mehr auf die einfacheren Sachen wie z.B. SPI zutrifft als auf die komplexeren wie USB oder Ethernet. Aber ist ja auch klar: So ein Webserver mit Dateien auf USB-Stick muss halt laufen, schon um ne schöne Demo zu haben, da sind die Basics nicht so wichtig ;-). Die kann man sich ja eh auch selber fummeln. Hier wäre z.B. eine Anleitung für HID: https://www.renesas.com/en-eu/doc/products/renesas-synergy/apn/r11an0145eu0100-synergy-ux-device-class-hid-hal-mod-guide.pdf Glyn hat ein S3-Boardfür rund 70€, was günstigeres ist mir nicht bekannt: http://www.glyn.de/News-Events/Newsletter/Newsletter-2016/electronica-2016/Fuer-RENESAS-Synergy-Plattform-br-GLYN-bringt-Arduino-kompatibles-Board-fuer-Synergy-S3 (Da bekommt man auch die µCs zu halbwegs anständigen Preisen, was woanders verlangt wird ist teilweise heftigst abschreckend) Es gibt noch für den S5 & S7 von Renesas selbst Boards, in der preislich gleichen Ecke aber besser ausgestattet. Die Boards haben einen Segger J-Link drauf (kann man wohl auch so hinfummeln dass die zumindest mit gleichem Target auch als Debugger für eigene PCBs laufen). Nur flashen geht aber auch über USB oder RS232.
Muss mich korrigieren, der Link geht zu ner Anleitung für USB-Device Treiber, nicht Host. Es scheint aber jedenfalls zu gehen: https://renesasrulz.com/synergy/f/synergy---forum/8272/usbx-hid-host Mittlerweile scheints auch günstigere "Target Boards" zu geben so um 30€, leider ohne USB-Host-Anschluss. Die µCs darauf sind eher etwas abgespeckte Versionen. Der S3A6 soll USB-Host Funktionalität eingebaut haben, ob man die mit seinen 32k RAM (im krassen Gegensatz zu den 192k des A7) mit den Standard-Treibern zum laufen bringt, wage ich zu bezweifeln. Mit dem S5D5 müsste es aber auf jeden Fall gehen. https://www.digikey.de/products/de?keywords=YSTBS
Peter II schrieb: > Mit einem ATmega / ATxmega bekommt man keine USB Host zu laufen. Auch, wenn die Diskussion schon älter ist: Es gibt ein USB-Host-Arduino-Shield, mit dem sogar ein ATmega Host spielen kann. Das lkäuft zwar über einen externen Maxim-Chip, aber es geht. Ich betreibe daran momentan testweise ein Gamepad. Wenn man herausfindet, zu welcher Klasse der USB-Sensor (z.B. HID, CDC) gehört, kann man den USB-Host auch auf einem arm implementieren. Die Klasse könnte man im Windows_Gerätemanager herausfinden. ICh könnte mir vorstellen, dass es sich um ein CDC-Gerät handelt, da sich solche Treibergeschichten bei den meisten Geräte eigentlich nicht lohnt. Keil liefert in der µVision-PRO-Version sogar eine fertige Bibliothek mit (wie das bei anderen System ist, weiß ich nicht). Sowas gibt nes dann auch noch: http://www.hobbytronics.co.uk/usb-host-board-v2?keyword=USB basiert azf einem Microchip PICxxx.
Der LPC1768 kann USB Host. In der mbed lib sind dazu Implementierungen für Mouse/Keyboard/MSD/Serial drin, sind allerdings noch als Betaversion deklariert. Für einige grössere STM32 sollte das auch funktionieren.
PIC32MZ - kann USB Device / OTG und USB Host - gleichzeitig. Treiber sollte man doch aus dem Linux Quelltext bekommen können. Gruß Jobst
Es gibt jede Menge MCUs, die usb können. Das Problem sind die Treiber. Schon der Zugriff auf einen usb-stick stellt vor nhahezu unüberwindliche Schwierigkeiten. Es fehlt jemand wie elm chan, der echt Ahnung hat und sich die Entwicklung von usb-Treibern für uns minderbemittelte Programmierer antut: Beitrag "Re: stm32f103 mit usb-stick" Such irgendeine Lösung unterhalb von usb oder oberhalb der mcus.
Man nimmt einen S7 (für mich läuft der jedenfalls noch unter MCU), stöpselt sich grafisch die USB Host- und Device, FAT und Konsolen -Treiber zusammen, wenn man will noch Ethernet, SDC, CAN, UART. Dann bastelt man sich mit der Konsole ein paar DOS-Befehle und das Ding fühlt sich so ähnlich an wie ein alter PC, auf einem Terminal das am Device-USB hängt oder über LAN. Oder lässt ihn gleich ein TFT treiben und stöpselt über einen HUB noch ne Tastatur dran. Übers SSI kann man ihn dann noch La Paloma pfeifen lassen. Selbst irgendein Kamera-Interface haben die Dinger, Featuritis³. Und sogar 640kB RAM. Sollte für jeden reichen ;-) (OK, nicht wirklich, für ein grösseres Display kommt man wohl um externes RAM nicht herum.) Sowas kann man natürlich mit einem RasPi schneller und billiger haben. Interessant werden die Teile da wo man RasPi und Konsorten nicht nehmen kann.
STK500-Besitzer schrieb: > Es gibt ein USB-Host-Arduino-Shield, Das hört sich doch schon ganz gut an. josh schrieb: > Man nimmt einen S7 Das ist eben ein klein wenig oversized für meine Anwendung. Ein kompletter MINI-PC, naja.
Ich werde diesen Ansatz nie verstehen: -das Ding darf nicht viel mehr können/haben als es muss -bevor ich auch nur 50Cent zuviel ausgebe bastel ich lieber 100 Stunden mehr (aber OK, wenn man Stückzahlen anstrebt) -ein babylonischer Shield-Turm ist dann aber wieder OK ;-)
Ich wäre durchaus bereit, etwas auszuzugeben, um Arbeit zu sparen. Es muss aber auch klein sein und passen. Sowas wie ein Arduionsteckboard ist da wohl noch das Beste, weil Ich dann die Daten auch weiterverarbeiten kann. Für die Anwendung, die Ich im Auge habe, möchte und kann Ich keine eigenen Platinen entwerfen (lassen).
H. S. schrieb: > Für die Anwendung, die Ich im Auge habe, möchte und kann Ich keine > eigenen Platinen entwerfen (lassen). Musst Du ja auch nicht: http://www.microchip.com/wwwproducts/en/PIC32mx270f256b Hat USB Full Speed Host/Device/OTG Port, gibts im 28 Pin SDIP-Gehäuse, kannst Du auf eine kleine Lochrasterplatine packen, dazu den Microchip USB-Stack, und los gehts. Du musst halt C können und etwas Grips im Schädel haben. Geht alles. fchk
Sieht gar nicht schlecht aus, der PIC. Gibt sogar ein Config-Tool/Codegenerator. Für Standard-Klassen, aber aben auch für andere Devices, was für den OP vielleicht noch wichtig sein könnte, denn es scheint ja nicht so ganz klar, was da so alles drangestöpselt werden soll: http://ww1.microchip.com/downloads/en/AppNotes/01143a.pdf
Hallo Frank, das klingt sehr gut. Kennst Du Dich mit dem System aus? Denkst Du, dass man dort auch fremde Mäuse und Tastaturen mit deren eigenen Treiber dranbekommt? Oder brauche Ich doch sowas hier: Beitrag "Kleinster und einfachster Linux Prozessor"
H. S. schrieb: > Hallo Frank, das klingt sehr gut. Kennst Du Dich mit dem System aus? > > Denkst Du, dass man dort auch fremde Mäuse und Tastaturen mit deren > eigenen Treiber dranbekommt? Solange das alles normales HID ist, sollte das funktionieren. Ausprobiert habe ich bislang nur Mass Storage, das ich mal in einem Projekt gebraucht habe. Notfalls musst Du eben den Klassentreiber ändern. Das ist aber kein prinzipielles Problem, weil alles im Quellcode vorliegt. 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.