Forum: Mikrocontroller und Digitale Elektronik Arduino Uno: USB Host Mode?


von Dominik (Gast)


Lesenswert?

Hallo,

ich habe mir Nachbauten vom Arduino Nano und Uno bestellt (anderes 
Layout, aber angeblich Pinkompatibel). Die Arduino IDE läuft schon mal 
auf Anhieb gut. So wie ich verstehe, befindet sich schon ein Bootloader 
auf den Atmega328, so dass man ihn bequem über USB programmieren kann 
ohne Brenner/ICSP-Interface.

Nun hat der Uno noch einen Atmega16 als USB-Interface und der Nano einen 
FTDI-Chip (USB->Serial). Nun habe ich lange recherchiert, was der 
Vorteil von dem Atmega16 gegenüber den FTDI ist. Gefunden habe ich dann 
Anmerkungen, dass man den Atmega16 umflashen kann (dann natürlich nur 
per ICSP), so dass man ihn als USB-Host einsetzen könne. Nun dachte ich 
"Cool, dann kann man wohl ein USB-Keyboard oder USB-Speicherstick" 
anschließen zur Eingabe oder um z.B. Langzeit-Messwerte auf Stick zu 
speichern. Habe ich danach gesucht (insbesondere hier), heißt es immer 
nur, dass das nicht geht - schade. :(

Nun, welchen Vorteil hat der Atmega16 als USB-Interface beim Uno dann? 
Oder anders gefragt: Was kann der Uno dann mehr als der Nano (abgesehen 
von dem zusätzlichen 12V Spannungsregler)?

von Rudolph R. (rudolph)


Lesenswert?

Das ist kein ATMega16, das ist ein ATMega16U2.
Und der kann nur als Device benutzt werden.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Um einem Arduino Uno/Nano den USB-Host beizubringen gibts m.W. zwei 
Wege:

a) V-USB-Lib (für HIDs) von obdev.at, Anwendung siehe hier: 
http://blog.petrockblock.com/2012/05/19/usb-keyboard-with-arduino-and-v-usb-library-an-example/

b) den USB-Host-Shield (z.B. von Sparkfun): 
http://www.watterott.com/de/SparkFun-USB-Host-Shield

von Dominik (Gast)


Lesenswert?

Stimmt, das U2 habe ich doch glatt überlesen. Wenn er nur als Device 
genutzt werden kann, welchen Vorteil hat er dann gegenüber dem simplen 
USB->Serial FTDI-Controller?

von Dominik (Gast)


Lesenswert?

Ja, USB-Host-Shield und die Libs habe ich schon gesehen. Meine Frage 
bezog sich eher auf den Sinn des Atmega16U2 als USB-Interface gegenüber 
dem FTDI

von Jim M. (turboj)


Lesenswert?

Dominik schrieb:
> Stimmt, das U2 habe ich doch glatt überlesen. Wenn er nur als Device
> genutzt werden kann, welchen Vorteil hat er dann gegenüber dem simplen
> USB->Serial FTDI-Controller?

Er könnte sich auch als HID (Keyboard Maus, Joystick) oder Mass storage 
(USB Stick) am USB melden, indem man simpel ein anderes Programm 
einspielt (in den Atmega16U2).

Das geht mit den FTDI Teilen nicht, die sind immer nur ein dummer COM 
Port (oder mehrere bei FT2232 oder FT4232).

: Bearbeitet durch User
von EGS (Gast)


Lesenswert?

Lies dir doch einfach die Beschreibung auf der Arduino Seite durch. Der 
Atmega16uU fungiert hier USB zu seriell Wandler.

Da es das erste Board der Gruppe war (Uno=Eins) hatten sie vielleicht 
noch nicht an FTDI gedacht...


Alles nachzulesen unter:

Arduino.cc/en/Main/ArduinoBoardUno

Und die passenden Seiten zu den anderen Boards, aber vorsicht, englisch 
sollte man können ?

Gruß EGS

von Baendiger (Gast)


Lesenswert?

EGS schrieb:
> Da es das erste Board der Gruppe war (Uno=Eins) hatten sie vielleicht
> noch nicht an FTDI gedacht...

Soweit ich weiß, hat der quasi Vorgänger Arduino Duemilanove einen FTDI 
Chip...
Die AtMegas kamen erst bei den neueren Arduinos.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Noch ein allgemeiner Hinweis:
Die meisten chinesischen Arduino Nanos haben KEINEN FTDI-CHip drauf, 
sondern einen CH340 oder CH341 von Olimex (ist wohl billiger) und 
benötigen einen eigenen Treiber für Windows oder Mac, die nicht im 
System schon installiert sind.
Will sagen, einen "echten" Arduino muss man z.B. am Windows-PC nur 
anstecken und er wird erkannt, das klappt bei den "anderen" nicht, man 
muss den Treiber manuell installieren.

von Flip B. (frickelfreak)


Lesenswert?

Du irrst dich leider. CH34x- treiber sind bei Microsoft hinterlegt und 
können als PNP- Geräte ohne manuelle installation benutzt werden.

von Ulrich F. (Gast)


Lesenswert?

Flip B. schrieb:
> Du irrst dich leider.
Du irrst dich leider!

Vielleicht ab Win 10..... KA, aber vorher nicht.

von Dominik (Gast)


Lesenswert?

Jim M. schrieb:
> Er könnte sich auch als HID (Keyboard Maus, Joystick) oder Mass storage
> (USB Stick) am USB melden, indem man simpel ein anderes Programm
> einspielt (in den Atmega16U2).

Ja, was denn nun? Das ist ja quasi meine Ausgangsfrage. Nur finde ich 
leider keine Projekte, wo das gemacht wurde. Hier im Forum lese ich 
immer nur "geht nicht"



EGS schrieb:
> Lies dir doch einfach die Beschreibung auf der Arduino Seite
> durch. Der
> Atmega16uU fungiert hier USB zu seriell Wandler.

Genau da HABE ich das ja bereits gelesen! Schrieb ich das nicht im 
ersten Beitrag? Mir ist der Sinn nur nicht klar: Wozu einen 
zusätzlichen, programmierbaren uC, wenn es doch ein billiger USB->Serial 
Standardchip auch tut...

von Dominik (Gast)


Lesenswert?

Und danke für den Tipp mit dem Treiber. Ich nutze allerdings 
ausschließlich Linux, weshalb das eher Nebensache ist (und ich so 
begeistert bin, dass die Arduino IDE für 32bit-Linux auf meinem "alten" 
System auf anhieb läuft).

Gibt es sonst noch einen Nachteil der China-Clones? Kann ich den/die 
Bootloader mit einem billigen China USBasp-Adapter programmieren, falls 
sie mal kaputt gehen oder ich sie updaten will? Habe schon lange so ein 
billige China-Interface, es aber noch nie genutzt. Ich habe meine 
Projekte mit Atmega644 immer nur direkt über den Parallelport 
(Bitbanging) problemlos programmiert.

von EGS (Gast)


Lesenswert?

Dominik schrieb:
> Wozu einen
> zusätzlichen, programmierbaren uC, wenn es doch ein billiger USB->Serial
> Standardchip auch tut...

Du hast aber anscheinend nicht alles gelesen...denn dann wäre dieser 
Teil der Beschreibung auch angekommen:


Automatic (Software) Reset
Rather than requiring a physical press of the reset button before an 
upload, the Uno board is designed in a way that allows it to be reset by 
software running on a connected computer. One of the hardware flow 
control lines (DTR) of the ATmega8U2/16U2 is connected to the reset line 
of the ATmega328 via a 100 nanofarad capacitor. When this line is 
asserted (taken low), the reset line drops long enough to reset the 
chip. The Arduino Software (IDE) uses this capability to allow you to 
upload code by simply pressing the upload button in the interface 
toolbar. This means that the bootloader can have a shorter timeout, as 
the lowering of DTR can be well-coordinated with the start of the 
upload.
This setup has other implications. When the Uno is connected to either a 
computer running Mac OS X or Linux, it resets each time a connection is 
made to it from software (via USB). For the following half-second or so, 
the bootloader is running on the Uno. While it is programmed to ignore 
malformed data (i.e. anything besides an upload of new code), it will 
intercept the first few bytes of data sent to the board after a 
connection is opened. If a sketch running on the board receives one-time 
configuration or other data when it first starts, make sure that the 
software with which it communicates waits a second after opening the 
connection and before sending this data.

Das ist der Grund.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ließe sich aber mit einer normalen USB-Seriell-Bridge à la FT232 
auch hinbekommen. Denn auch die lassen das softwaregesteuerte "Wackeln" 
an Handshakeleitungen zu, und das auch ohne Treiberverrenkungen mit 
speziellen DLLs. Handshakeleitungen gehören zum normalen Funktionsumfang 
einer seriellen Schnittstelle.

von Dominik (Gast)


Lesenswert?

Ja, meine PL2303 können RTS/DTR auch setzen. Aber den zitierten Text 
habe ich auf arduino.cc tatsächlich nicht gelesen/gefunden

von derElf (Gast)


Lesenswert?

Vielleicht spielt auch der Grund, dass ein ATMEGA16U2 einfach billiger 
ist als ein FT232 eine Rolle.

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.