Sternenhimmel mit individueller Steuerrung

Hallo zusammen,
weil ich demnächst Vater werde, würde ich gerne einen Sternenhimmel bauen. Ich stelle mir das so vor, dass ich eine 3mm starke MDF Platte nehme, daraus die Kontur Säge, die dann der Himmel wird. Diese wird etwa 3cm unter eine weitere etwas dickere Platte abgehängt. Ich würde gerne einige Sternenbilder einbauen, die ich dann individuell dimmen kann (also mal Highlighte ich den großen Wagen, mal ein anderes Sternenbild usw.). Insgesamt sollen grob geschätzt 50-60 LEDs gesteuert werden.

Nach kurzer Recherche kommen für die Steuerung der LEDs zwei Ausführungen in Frage: Zum einen könnte man Leds besorgen und diese dann über den TLC5940 (kaskadiert) steuern und dimmen oder man könnte eine LED-Kette mit WS2812B besorgen und zerschnippelt und entsprechend zusammenpuzzeln. Beide Varianten bekommen ihre seperate Spannungsquelle, damit nicht alles über den Arduino läuft. Welches Arduino Board es wird, muss ich schauen was ich gerade noch da habe. Aber grundsätzlich sollten ja die Allermeistern funktionieren.

Da ich noch nicht mit so vielen PWM LEDs gearbeitet habe würde ich gerne wissen, ob diese Lösungsansätze grundsätzlich umsetzbar sind? Oder habe ich da etwas nicht bedacht?

Das Projekt bietet natürlich beliebige Erweiterungsstufen was die Steuerung angeht (zB Bluetooth-Anbindung und darüber Helligkeit etc steuern). Aber zunächst soll das einfach fest im Programmablauf stehen.

Viele Grüße und Danke für eure Ratschläge!

(deleted)

Entweder hunderte LEDs auf der Rückseite der Platte verkabeln oder eine Lichleitplatte (gibt's aus Plexiglas) corne schwarz lackieren (oder blau oder ...) und kleine oder größe Senkungen/Bohrungen dort reinmachen wo ein Sternchen entsteen soll. Lichtzufuhr erfolgt über LED-Streifen am Rand. Lasierende Farbe ins Bohrloch wenn's eine andere Farbe bekommen soll.

Für den Betrieb der Lichterketten brauchst Du auf jeden Fall ein separates Netzteil, ein Arduino kann das nicht.

Zerschneiden der WS2812B Lichterketten ist nicht unbedingt hilfreich, jede LED muß einzeln programmiert werden (Farbe/Helligkeit).

Vielleicht findest Du ja noch (einfarbige) 12V Lichterketten die sich zerschneiden lassen. Dann reicht für die Ansteuerung ein Transistor pro Sternbild.

Deranda:
... oder man könnte eine LED-Kette mit WS2812B besorgen und zerschnippelt ...

Mit APA106 F5 geht es auch ohne Zerschnippeln.

Wenn Du schnippeln möchtes, wären die WS2815 weniger stromhungrig, da ein Pixel (Leuchtpunkt) maximal 15 mA (lt. Datenblatt, von mir gemessen 10 mA) bei 12 V benötigt. Da sind dünnere Kabel möglich. Ansteuerung wie WS2812B. Vergleich:

  • WS2812B: 60 Pixel * 60 mA = 3,6 A (Netzteil 18 W)
  • WS2815: 60 Pixel * 15 mA = 0,9 A (Netzteil 11 W)

Dank Farbe geht später auch Discobeleuchtung 8)

Deranda:
Das Projekt bietet natürlich beliebige Erweiterungsstufen was die Steuerung angeht (zB Bluetooth-Anbindung und darüber Helligkeit etc steuern).

Wenn Du Vater bist, wirst Du dafür keinerlei Zeit mehr haben (wollen).

Sonst könntest Du gleich zum ESP8266 oder ESP32 greifen, die haben Funk schon drauf. Ich mache das mit ESP32 für meine Kellerbaranimation mit Steuerung per Händi. Als Bibliothek verwende ich FastLED.

agmue:
bei 12 V benötigt. Da sind dünnere Kabel möglich. Ansteuerung wie WS2812B. Vergleich:

  • WS2812B: 60 Pixel * 60 mA = 3,6 A (Netzteil 18 W)

sollten die 18 nicht 45 sein?

my_xy_projekt:
sollten die 18 nicht 45 sein?

3,6 A * 5 V = 18 W für WS2812B
0,9 A * 12 V = 11 W für WS2815

Oder?

agmue:
3,6 A * 5 V = 18 W für WS2812B
Oder?

Oder.
Ich hab nur die 12V oben mitgenommen... :wink:

WoW, danke für die vielen Infos.

DrDiettrich:
Zerschneiden der WS2812B Lichterketten ist nicht unbedingt hilfreich, jede LED muß einzeln programmiert werden (Farbe/Helligkeit).

Aber genau das möchte ich ja. Ich kann ja jedem Sternbild den Platz im LED-Array zuordnen und die dann einfach setzen.

agmue:
Wenn Du schnippeln möchtes, wären die WS2815 weniger stromhungrig, da ein Pixel (Leuchtpunkt) maximal 15 mA (lt. Datenblatt, von mir gemessen 10 mA) bei 12 V benötigt. Da sind dünnere Kabel möglich. Ansteuerung wie WS2812B. Vergleich:

  • WS2812B: 60 Pixel * 60 mA = 3,6 A (Netzteil 18 W)
  • WS2815: 60 Pixel * 15 mA = 0,9 A (Netzteil 11 W)

Gut, danke für die Info. 12V Netzteil liegt hier auch noch rum und einen Spannungswandler für den Mikrocontroller habe ich auch da. Damit sollte das ja problemlos aufgebaut werden.
Gruß
Nils

Okay es ergeben sich für mich noch ein paar Fragen zum WS2815.
Zum Wiring habe ich Folgendes gefunden, wobei man den WS2815 dann mit der FASTLED Library steuert (mit 2813 Protokoll), wobei der WS2815 diese schönen BI und BO hat, die man direkt verbinden kann. Nur der erste BI kommt mit an GND


Der ESP32 hat aber nur 3,3V Signalspannung, wenn ich das richtig sehe. Also muss da noch ein Shifter zwischen. Damit habe ich bisher keine Erfahrung gesammelt und wäre dankbar für eine Hilfestellung.

Für den Spannungseingang vom ESP32 nehme ich einen LM37T mit R1=240Ohm und R2=1kOhm. Damit kommt man auf 6,5V.

Eine (vielleicht blöde) Frage noch. der DI Pin, welcher über den Shifter an den ESP32 kommt, muss der an einen bestimmten PIN oder einfach irgendein Digitalpin? In dem Beispiel von HowToMechatronics habe ich gesehen, dass der WS2812B an den D7 Pin vom Arduino Uno angeschlossen wurde und der ist, so weit ich weiß, ein einfacher Digitalpin ohne pwm etc.

Gruß
Nils

DrDiettrich:
Zerschneiden der WS2812B Lichterketten ist nicht unbedingt hilfreich, jede LED muß einzeln programmiert werden (Farbe/Helligkeit).

@Deranda: Über den Satz bin ich auch gestolpert. Man könnte ja auch mehrere einfache LEDs in Reihe schalten und mit einer Stromquelle versorgen. Im Kontrast dazu wird bei WS2815 ein Sternenbild per Software zusammengebracht. Möglicherweise ist es so gemeint.

Deranda:
Zum Wiring ...

Ist so OK, zwischen BI und µC aber noch einen Widerstand. Über den Wert gibt es verschiedene Empfehlungen, ich nehme 220 bis 570 Ohm.

Du könntest überlegen, ob Du zwischen den Pixeln drei oder vier Verbindungen legen möchtest, da BI nur zur Überbrückung eines defekten Pins dient.

Deranda:
Der ESP32 hat aber nur 3,3V Signalspannung, wenn ich das richtig sehe. Also muss da noch ein Shifter zwischen.

Ich verwende 74LS245, sind aber eigentlich etwas viele Pins.

Nun zwei in diesem Forum umstrittene Aussagen: Der ESP32 verträgt auch 5 V an den digitalen Pins und bei mir geht es auch ohne Shifter. Aber damit bist Du außerhalb des Datenblattes, also kein Gewähr!

Deranda:
Für den Spannungseingang vom ESP32 ...

Was meinst Du damit? Ich kenne nur V5 für 5 V oder 3V3 für 3,3 V.

Deranda:
Eine (vielleicht blöde) Frage noch. der DI Pin, welcher über den Shifter an den ESP32 kommt, muss der an einen bestimmten PIN oder einfach irgendein Digitalpin?

Ein PWM-Pin des ESP wird nicht benötigt, das IC im Pixel verhält sich vergleichbar einem Schieberegister. Das IC macht dann PWM für die LEDs.

Es geht eigentlich jeder digitale Ausgangspin, wobei ich welche mit PWM-Signal beim Booten oder anderen Eigenarten eher meide. Sie dazu ESP32 Pinout Reference Which GPIO pins should you use. Die Auswahl dürfte ja großzügig sein.

FastLED erlaubt auch den Anschluß mehrerer Streifen, die man dann logisch wieder zusammenführen kann. Das habe ich bislang noch nicht probiert und vermag auch nicht einzuschätzen, ob das für Dich einen Vorteil bringen könnte, aber ich wollte es erwähnt haben.

Bitte achte auf die Kabellängen, denn wenn zu lang, dann gibt es Störungen.

Sollte sich Dein Kind vor den Sternen fürchten, meine Frau wollte sowas schon immer für die Bar haben ::slight_smile:

agmue:
@Deranda: Über den Satz bin ich auch gestolpert. Man könnte ja auch mehrere einfache LEDs in Reihe schalten und mit einer Stromquelle versorgen. Im Kontrast dazu wird bei WS2815 ein Sternenbild per Software zusammengebracht. Möglicherweise ist es so gemeint.

@agmue Jo genau. Ich möchte gerne einen Sternenhimmel mit ca 60 sternen, die eine gewisse Helligkeit haben und dann langsam mit einem Fade-In einzelne Sternenbilder highlighten. Daher der WS2815

agmue:
Was meinst Du damit? Ich kenne nur V5 für 5 V oder 3V3 für 3,3 V.

Hier: https://techexplorations.com/guides/esp32/begin/power/ wird gesagt, dass der ESP32 noch einen eigenen Spannungsregler hat, sodass man theoretisch 5 bis 12V am VIN anschließen kann. Das wird aber nicht empwohlen, da sonst so viel Wärme durch den Spnnanungsabfall auf dem Board entsteht.

Egal ob man einen langen oder mehrere kurze Strips nimmt, im Speicher müssen die Daten für alle Sterne liegen. Bei mehreren Strips braucht man entsprechend viele Ausgänge am Arduino, einen pro Strip.

Deranda:
Hier: https://techexplorations.com/guides/esp32/begin/power/ wird gesagt, dass der ESP32 noch einen eigenen Spannungsregler hat, sodass man theoretisch 5 bis 12V am VIN anschließen kann. Das wird aber nicht empwohlen, da sonst so viel Wärme durch den Spnnanungsabfall auf dem Board entsteht.

LM37T ist auch ein wärmeerzeugender Längsregler, da wäre ein StepDown Schaltregler auf 5 V weniger wärmend.

Bitte denke daran, daß der ESP32 gerne mal einen Schluck aus der Strompulle haben möchte.

Deranda:
... und Danke für eure Ratschläge!

Mach's vor Allem hell und freundlich! Angeblich merkt man sich ja nichts aus seinen ersten drei Lebensjahren. Aber wenn ausgerechnet dann ein Nachthimmel-dunkles Etwas über einem an der Decke hängt ... ich weiß nicht ... und nachts ist es normalerweise eh dunkel.

Ansonsten: Mein letztes Gebastel ist eine Matrix 49 roter LEDs, die verschiedene Muster zeigt. Via PWM erzeuge ich dabei auch verschiedene Helligkeiten. Die PWM wird dabei quasi zu Fuß erzeugt - die Matrix wird angezeigt, indem ich sie ein paarmal vollständig aufbaue, wobei die LEDs in unterschiedlich vielen Durchläufen leuchten (je nachdem, wie hell sie leuchten sollen).

Mit weißen LEDs wirst Du eine relativ hohe Wiederholrate benötigen, um keinen Stroboskop-Effekt zu erzeugen. Die roten „Empfangsdinger“ in den Augen sind wohl träger als die anderen.

Ob Du tatsächlich existierende Sternbilder darstellst, ist IMO egal. Wie gesagt, aus den ersten drei Lebensjahren merkt man sich eh nichts.

Da mir sonst grad nichts einfällt, hier wenigstens noch der Code, mit dem ich das Display genau einmal aufbaue:

void Matrix::show()
{ 
  for(byte brightness=0; brightness<33; brightness++)
  { 
    for(byte row=0; row<HEIGHT; row++)
    { 
      for(byte col=0; col<WIDTH; col++)
      { 
        if(this->getBrightness(col, row)>brightness) 
          { digitalWrite(colPins[col], HIGH); }
        else 
          { digitalWrite(colPins[col], LOW); }
      }
      // Zeile zeigen
      digitalWrite(rowPins[row], HIGH);
      delayMicroseconds(70);
      digitalWrite(rowPins[row], LOW);
      delayMicroseconds(20);
    }
  }
}

HTH

Gruß

Gregor