Forum: Mikrocontroller und Digitale Elektronik USB Kommunikation mit Atmel SAM3X8 (Arduino DUE), Hub un BlinkStick


von phil_O_matic (Gast)


Lesenswert?

Hallo Zusammen,

ich stehe vor folgender Aufgabenstellung:

Ein Arduino Mega (ATMega2560) oder DUE (ATMEL SAM3X8) sollen zehn 
BlinkSticks ansteuern.
Was sich recht einfach anhört stellt sich bei näherer Betrachtung als 
recht komplexe Aufgabe heraus da die Blinksticks über USB kommunizieren, 
was beibehalten werden soll.

Da der SAM3X8 als USB Host agieren kann, war mein erster Gedanke, diesen 
an einen Hub anzuschließen, an welchen die BlinkSticks angeschlossen 
werden. Bei dieser Variante wäre die Hardwareseite denkbar einfach zu 
realisieren, jedoch findet man bei näherer Betrachtung der in die 
Arduino IDE implementierte USBHost library schnell heraus, dass diese 
nicht mit Hubs funktioniert.

Ich habe mich grob in die USB Spezifikation sowie die Firmware der 
BlinkSticks eingelesen und habe festgestellt, dass zumindest auf den 
ersten Blick weder die USB Kommunikation mit Low-Speed, noch die Arbeit 
mit USB Hubs oder die Datenübertragung zu den BlinkSticks sonderlich 
kompliziert scheint.

Allerdings stellen sich mir nun einige Fragen:

-Ist das Vorhaben in dieser Form realisierbar? Ich habe bisher nichts 
Vergleichbares gefunden (weder Bezüglich Arduino DUE mit Hub noch 
Arduino und BlinkStick).

-Gibt es einfachere Möglichkeiten? Mein Lösungsabsatz ist der für mich 
offensichtlichste, aber sicherlich nicht der einzige. Das Projekt sollte 
nach Möglichkeit recht simpel gehalten werden, wenn es anders jedoch 
deutlich schneller geht, würde ich diesbezüglich Kompromisse eingehen.

-Macht es Sinn mich in AtmelStdio einzuarbeiten?  Bisher habe ich 
primärmit der Arduino IDE gearbeitet und würde nach Möglichkeit, wenn 
machbar dabei bleiben.

-Gibt es libraries um die USB Kommunikation auf low- Level zu 
ermöglichen? Nach Möglichkeit möchte ich nicht gar alles selbst 
schreiben.

Um die Fragen genauer beantworten zu können noch ein paar Infos zu mir: 
Ich bin Elektrotechnik Student, habe abgesehen von recht fundierten 
Arduino Kenntnissen auch zwei Semester C++ Programmierung mit Visual 
Studio genossen, außerdem habe ich mich sehr grob mit MPLAB beschäftigt 
allerdings ist Software für mich vor allem ein Mittel zum Zweck, also 
mehr ein nötiges Übel als Passion. Die Gesamtkosten für das Projekt 
sollten nicht utopisch hoch werden, jedoch gibt es Spielraum, das Ziel 
ist es das ganze simpel zu halten da ich so viel Zeit wie nötig aber so 
wenig wie möglich dafür aufbringen möchte.


THX Phil

von Dr. Sommer (Gast)


Lesenswert?

Die LED's direkt am Controller anschließen wird die Komplexität um den 
Faktor 100000 reduzieren.
Eine USB-Host-Implementation, noch dazu eine die Hubs unterstützt, ist 
sehr komplex. Wenn man da keine passende Library zu findet, wird das mit 
ein paar Arduino-Kenntnissen nichts.

phil_O_matic schrieb:
> dass zumindest auf den
> ersten Blick weder die USB Kommunikation mit Low-Speed, noch die Arbeit
> mit USB Hubs oder die Datenübertragung zu den BlinkSticks sonderlich
> kompliziert scheint.
Wenn das für dich nicht nicht sonderlich kompliziert ist, was ist 
dann kompliziert? Der Bau von Space Shuttles?

von Jim M. (turboj)


Lesenswert?

phil_O_matic schrieb:
> Ein Arduino Mega (ATMega2560) oder DUE (ATMEL SAM3X8) sollen zehn
> BlinkSticks ansteuern.

Warum nimmt man dann nicht einfach einen Raspberry Pi? Dort müsste man 
sich nicht mit dem Host Stack rumärgern sondern könnte das Zeuchs gleich 
anschließen.

Stromverbrauch wäre nichr relevant, den hat man schon durch die ganzen 
Devices - und die self-powered Hubs.

von phil_O_matic (Gast)


Lesenswert?

Jim M. schrieb:

> Warum nimmt man dann nicht einfach einen Raspberry Pi?

weil 10 ADC Kanäle benötigt werden und Shields verwendet werden, welche 
für die Bauform der Arduino Boards ausgelegt sind. Die Idee mit dem 
Raspberry gefällt mir aber, ein zusätzlicher Zero wäre dafür zwar 
zweifelsfrei etwas übetrieben aber hinsichtlich auf Kosten, Größe und 
Aufwand keine schlechte Idee. Vor allem gibt es bereits alle benötigte 
Software hierfür.

Es zwar nicht die schönste Variante, aber eine schnell und sauber 
funtionierende. Die Serielle Kommunikation zwischen Arduino und Raspi 
ist ja auch kein Hexenwerk.

von fchk (Gast)


Lesenswert?

phil_O_matic schrieb:
> weil 10 ADC Kanäle benötigt werden

Das kann der Pi auch noch mit machen:

https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/ads1015-slash-ads1115

Du kannst 8 von diesen Boards an einen I2C-Bus anschließen.

Streiche einfach den Arduino. Der macht Dir das Leben nur komplizierter.

fchk

von fchk (Gast)


Lesenswert?

ups ... sorry. Dieser ADC hat nur einen Adresspin. Aber es gibt auch 
noch andere mit mehr Eingängen.

fchk

von phil_O_matic (Gast)


Lesenswert?

fchk schrieb:
> Streiche einfach den Arduino.

Aufgrund des Shields ist das nicht möglich

von Dr. Sommer (Gast)


Lesenswert?

Dann streiche den USB und schließe die LED's direkt oder über Port 
Expander am Arduino an. Da gibt's unzählige Beispiel Projekte zu im 
Netz.

von phil_O_matic (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Dann streiche den USB und schließe die LED's direkt oder über Port
> Expander am Arduino an.

Das geht ebenfalls nicht, da die BlinkSticks vorgegeben sind

von Dr. Sommer (Gast)


Lesenswert?

phil_O_matic schrieb:
> Das geht ebenfalls nicht, da die BlinkSticks vorgegeben sind

Und warum müssen es zwangsläufig USB-gesteuerte LED's sein, wenn USB 
hier schwierig ist? Was hat der BlinkStick, was eins der Tausend anderen 
LED-Boards nicht hat - außer dem komplizierten USB?

von phil_O_matic (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Und warum müssen es zwangsläufig USB-gesteuerte LED's sein

Es sind verschiedene Fakroren, unter anderem eine Teilimplementierung in 
ein bestehendes System. Daran lässt sich nichts ändern.

Die Variante mit dem Raspberry ist zwar nicht die feine englische Art, 
jedoch erfüllt sie alle an sie gestellten Anforderungen und wird wohl 
die Lösung meiner Wahl.

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.