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
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?
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.
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.
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
ups ... sorry. Dieser ADC hat nur einen Adresspin. Aber es gibt auch noch andere mit mehr Eingängen. fchk
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.