Anfaenger Frage zu Arduino Projekt (LED / IR / Touchscreen)

Hallo zusammen,

ich habe vor mein Wohnzimmer mit einer indirekten LED Beleuchtung zu versehen. (Siehe Anhang: wohnzimmer-stip-count.png)

Das Ganze soll über eine IR Universalvernbidinung von Logitech Harmony 900 zu steuern sein.
(http://www.logitech.com/de-de/product/harmony-900?crid=60)
Alternativ natürlich über IPhone mit Webserver und nochmal alternativ über ein Touchscreen ("SainSmart 3.2" TFT Touch Screen LCD + SD reader + Mega Expansion Board 4 Arduino")
(http://www.ebay.de/itm/SainSmart-3-2-TFT-Touch-Screen-LCD-SD-reader-Mega-Expansion-Board-4-Arduino-/221192045692?pt=Elektromechanische_Bauelemente&hash=item338012c47c)

Für das Projekt habe ich mir "12mm Diffused Thin Digital RGB LED Pixels" (12mm Diffused Thin Digital RGB LED Pixels (Strand of 25) [WS2801] : ID 322 : $39.95 : Adafruit Industries, Unique & fun DIY electronics and kits) ausgesucht, alternativ vielleicht noch folgender Strip "60 RGB LED Strip mit WS2812"
(http://www.ebay.de/itm/1m-60-RGB-LED-Strip-mit-WS2812-5050-SMD-LEDs-mit-integriertem-WS2811-Controller-/350688305895?pt=Bauteile&hash=item51a6a6e2e7)

Da ich hier über 800, warscheinlich sogar über 1000 Pixel habe, wollte ich von euch mal wissen, ob es bei einem Arduino Probleme / Limit mit der Anzahl der Pixel gibt.

Ich habe schon jetzt schon einiges (um nicht zu sagen Tonnen) dazu gelesen. So wie ich das ganze verstanden habe benutzt das EthernetShield und das TFT Touchscreen den SPI Anschluss.
Den oder die Strips werden ebenfalls über den SPI angesprochen. Klappt das überhaupt?

Als Platform dachte ich an einen Arduino Due. Da die Verarbeitsungsgeschwindigkeit ja durchaus schneller ist.

Programmiertechnisch mache ich mir keine Sorgen (bin Informatiker).

In dem Programm sollen dann einzelne Lauflichtprogramme und Lichteffekte gesteuert werden. Habe dazu mal die FastSPI gelesen, und das ist ja super einfach.

Nun meine Fragen:

A) gibts irgendwelche Limits in Punkto Anzahl von LEDs?
B) können sich alle Komponenten die SPI Schnittstelle teilen?
C) Wie funktioniert das mit den Interrupts? Während ein Lichtprogramm laeuft kann ich wie auf Eingaben über die Webschnittstelle / Touchscreen / IR reagieren? gibts dazu irgendewelchen Beispiel Source-Code?
D) Kappt das mit der Spannungsversorgung? Arduino hat 3,3V die Stips / LEDs sprechen 5V. Muss ich das noch hochsetzten?
E) Auf der SD Karte von dem Ethernet Shield würde ich gernde die einzelnen Licht-Programme speichern, und auch die Webseite an sich. Kann ich die Lichtprogramme dann zur Laufzeit mit in den Programcode laden? Hat jemand vielleicht ne Anleitung für den Webserver? Dazu hab ich nur die Webserver Sample Code gefunden, das ist aber n bisschen dürftig. Da ich nicht nur Werte ausgeben, sondern auch aktiv verändern will.

Hoffe Ihr könnt mir ein bisschen weiterhelfen. Da ich auf die Fragen noch keine Antwort gefunden habe.

Liebe Grüße aus dem Westerwald

Til

AgentTil:
D) Kappt das mit der Spannungsversorgung? Arduino hat 3,3V die Stips / LEDs sprechen 5V. Muss ich das noch hochsetzten?

Eher runtersetzen. Z.b 9V oder 12V Eingangsspannung und dann:

  • LF33CV fürs DUE
  • LM7805 für die Stripes

@ rediculum
Mit einem 7805 für die Strips machst Du nichts.
Bei 800 bis 1000 RGB-LEDS zB WS2812 das pro Farbe 20mA verbraucht (also total 60mA) sind das 48A bis 60A bei 5V. Da braucht es schon mehrere ordentliche 5V Netzteile.
@AgentTil

A) gibts irgendwelche Limits in Punkto Anzahl von LEDs?

Spannungsversorgung muß den gesamtstrom liefern können. Gegebenenfalls mehrere Netzteile und jedes Versorgt eine Gruppe von LED. Masse zuasmmenschalten.
Der bei WS2812 angegebene limit von 512/1024 LED bezieht sich auf eine Programmierwiederholrate von 30 BpS (Interfacegeschwindigkeit 400/800kHz) Falls Du weniger oft wechselnde Leuchtkombinationen akzeptieren kannst dann kannst Du auch mehr WS2812 in Serie ansteuern.

B) können sich alle Komponenten die SPI Schnittstelle teilen?

Die WS2912 werden (beim Arduino UNO mit der fastSPI_LEd Bibiothek) über einen x-beliebigen Pin angesprochen. Es braucht nicht die HardwareSPI-Schnittstelle.

C) Wie funktioniert das mit den Interrupts? Während ein Lichtprogramm laeuft kann ich wie auf Eingaben über die Webschnittstelle / Touchscreen / IR reagieren? gibts dazu irgendewelchen Beispiel Source-Code?

Kommt aufs Lichtprogramm an.

D) Kappt das mit der Spannungsversorgung? Arduino hat 3,3V die Stips / LEDs sprechen 5V. Muss ich das noch hochsetzten?

Ich weiß nicht ob die WA2812 3,3V als H-signal erkennen oder ob Du eine Pegelwandler von 3,3 auf 5V brauchst.

E) Auf der SD Karte von dem Ethernet Shield würde ich gernde die einzelnen Licht-Programme speichern, und auch die Webseite an sich. Kann ich die Lichtprogramme dann zur Laufzeit mit in den Programcode laden?

Ja, Du mußt nur das Progrann sazu schreiben.

Hat jemand vielleicht ne Anleitung für den Webserver? Dazu hab ich nur die Webserver Sample Code gefunden, das ist aber n bisschen dürftig. Da ich nicht nur Werte ausgeben, sondern auch aktiv verändern will.

Da kann ich Dir nicht sehr helfen. Hast Du Dich auf http://arduino.cc/forum/index.php/board,87.0.html schon mal umgeschaut?

Grüße Uwe

Hallo Uwefed,

vielen Dank fuer deine Ausfuehrungen.
Spannungsversorgung ist kein Problem, damit hatte ich mich schon ausseinandergesetzt.
Kann man denn auch mehrere Strips paralell an unterschiedlichen Pins mit FastSPI betreiben?
Damit würde sich das Limit von 1000 LEDs umgehen lassen. Aber klappt das auch?

Zum Lichtprogramm:
Mit der Programmierung habe ich noch nicht angefangen, will erstmal meine offenen Fragen beantworten können, bevor ich code.
Im Grunde sollen alle Lichtprogramme in einer Endlosschleife laufen, bis sie durch eine Userinteraktion geändert werden.

Laut Spezifikation haben die WS2812 5V "Signal-Spannung", habe aber in diversen Foren gelesen, dass die Dinger auch 3,3 funktionieren, solang das erste LED nicht zu weit vom Arduino entfernt ist.

Gruß

Til

hi,

das mit den 3,3V für den ersten WS2812 kann ich mir durchaus vorstellen, danach wird es sowieso vom ersten controller auf 5V gesetzt. aber ich rate unten ohnehin vom DUE ab.

die WS2812 arbeiten mit 800 kHz, also 1024 Leds bei 30 Bps. aber weniger als 30 ist ja auch nicht schlimm.
leider kann man mit dieser fastSPI nur einen streifen beschicken, es würde das problem aber auch nicht lösen. ist ein zeitproblem, ob Du jetzt einmal 2000 oder 4x 500 rausschickst, es dauert gleich lange.

für einen DUE wirst Du noch nicht viel im netz finden, die fastSPI wird 100% nicht darauf laufen.
nimm einen mega2560, da paßt eine menge drauf. schau mal bei diesem thread, da ist ein beispiel von mir für einen webserver. und da bleibt noch viel platz frei.

alternativ ein raspberry pi als webserver, eventuell auch fürs speichern der lichtprogramme, aber ich denke, das ist nicht nötig.

gruß stefan

Hi Stefan,

Hatte zuerst auch vor den Mega zu holen.
Da, die strips aber 800kHz brauchen, ist der Mega mit 16MHz Takt schon etwas "langsam".
Deshalb habe ich gedacht den Due zu nehmen.
FastSPI läuft auch auf dem Due. Siehe hier: FastSPI LED Effects [UPDATED TO WORK WITH FastSPI_2] » funkboxing
Ich habe mir die Quellcodes mal angeschaut, und denke eingentlich, dass es möglich sein sollte, auch zwei oder mehrere Strips an unterschiedlichen Pins zu betreiben, allerdings bin ich ein MicroController Anfänger.

Habe eher mit Serveren und IT-Netzwerken zu tun.

Durch den schnelleren Takt sollte ich aber noch Reserven frei haben, um die Steuerung abzufragen und ggf. die Interrupts zu behandeln.
Sollte es durch den schnelleren Takt nicht auch möglich sein, Strip 1 an PIN A mit 800kHZ zu beschicken, dann Strip 2 an PIN B mit 800kHz, oder evtl. beide gleichzeitig? Geht das?

Der Link mit dem PI ist super interessant, vor allem weil hier dann mit PHP programmiert wird (kann ich fließend).

Hallo,

als ich vor der Entscheidung stand welchen Arduino ich kaufen solle wurde mir vom Due auch abgeraten. Noch zu neu, nur wenige Leute haben bisher damit Erfahrung. Die 3,3V Problematik kommt noch dazu. Wegen der Frage zur Rechenleistung wurde auch drauf eingegangen. Der Due verwendet eine andere CPU mit anderen Core. Sinngemäß wiedergegeben braucht der Due den ca. 4fachen Takt, weil er für fast alle Befehle auch selbst mehr Takte benötigt zum abarbeiten. Das heißt im Umkehrschluss. Der Due ist am Ende nicht schneller wie ein Mega oder Uno. Die können viele Befehle in einem Takt erledigen.
Um das genau auszuloten müßtest Du von den CPUs die Datenblätter studieren und jeden Befehl durchschauen wieviel Takte er benötigt. Allerdings gilt das wohl auch nur für Assemblerprogrammierung. Werden die wenigsten machen. Ich auf keinen Fall. :smiley:

Doc_Arduino:
Der Due verwendet eine andere CPU mit anderen Core.

Richtig erkannt.

Doc_Arduino:
Sinngemäß wiedergegeben braucht der Due den ca. 4fachen Takt, weil er für fast alle Befehle auch selbst mehr Takte benötigt zum abarbeiten. Das heißt im Umkehrschluss. Der Due ist am Ende nicht schneller wie ein Mega oder Uno. Die können viele Befehle in einem Takt erledigen.

Falsch interpretiert. Ich lehne mich mal ganz weit aus dem Fenster und behaupte, dass es keinen Fall gibt, wo der Due langsamer ist - sofern er nicht durch schlechte Programmierung oder äußere Einflüsse ausgebremst wird.