Hallo liebe Mikrocontroller Gemeinde, Ich bin Wirtschaftsingenieur im 1. Semester und hobbymäßiger Bastler. Ich habe neuerdings etwas mit Arduino rumgespielt und finde das ganze sehr interessant. Da ich für unseren Partykeller schon lange etwas bunte Beleuchtung haben will habe ich mir überlegt mehrere LED Stripes mit ws2815 zu verlegen. Diese würde ich gerne mit dem Arduino ansteuern. Sie sollen über Bluetooth gesteuert werden und verschiedene Lichteffekte erzeugen (Faden etc.) Die meisten LED Streifen haben ja 150 LEDs, ich dachte daran 8 von den Streifen zu verwenden und würde diese gerne mit 100 Hz aktualisieren. Das Ganze soll dann per Handy gesteuert werden und ggf. vielleicht auch über die Musik. Da ich bisher wenig Erfahrung mit solchen Dingen habe, und nicht genau weiß wie ich das umsetzen kann würde ich mich über etwas Unterstützung freuen.
>Die meisten LED Streifen haben ja 150 LEDs, ich dachte >daran 8 von den Streifen zu verwenden und würde >diese gerne mit 100 Hz aktualisieren. Könnte gehen:
1 | >> bitProLed=24; |
2 | >> tBit=1.25e-6; |
3 | >> anzahlLeds=150; |
4 | >> cycleTime=anzahlLeds*bitProLed*tBit |
5 | cycleTime = 0.0045000 |
6 | >> f=1/cycleTime |
7 | f = 222.22 |
https://github.com/kitesurfer1404/WS2812FX
Schonmal danke für die Antwort, die Bibliothek sieht sehr interessant aus. Es ist echt cool das schon so viele Effekte mit dabei sind. Ich habe jetzt mal etwas rum gespielt deine Rechnung konnte ich soweit nachvollziehen allerdings habe ich ja insgesamt dann 1200 LEDs was zu etwas unter 30Hz führen würde, wenn ich das richtig sehe? Wenn ich mich in meinem Programm mit der Zeitmessung nicht ganz blöd angestellt habe komm ich auf etwas unter 30Hz und alles in allem scheint der Arduino etwas überfordert zu sein. Es kommt zu Aussetzern bei der Seriellen Konsole und mein Speicher ist je nachdem ob ich die Streifen alle aneinanderhänge oder an einzelne Pins knapp oder überfüllt. Ich nehme an das mein Programm jetzt auch nicht das beste ist als Anfänger, aber gibt es da Erfahrungen in der Community bezüglich des Arduinos generell und auch dieser Bibliothek, wenn man so viele LEDs damit betreiben möchte? Schonmal Danke.
chris schrieb: > Könnte gehen:>> bitProLed=24; richtig, aber: chris schrieb: > f = 222.22 kommt nur bei einem Stripe pro Data raus für Kevin M. schrieb: > ich dachte daran 8 von den > Streifen zu verwenden hilft nur 8-Kanal Ausgabe Kevin M. schrieb: > mit Arduino muss man überlegen welchen man nimmt! ein nano wird wohl ausscheiden 8 x 150 = 1200 LEDs brauchen schon mal 3600 Byte statisch für die RGB Daten es sei denn man will sie zur Laufzeit berechnen, ich denke eher an ESP32 oder neuere AVR, aber da braucht man noch einen Pegelwandler von 3,3V zu 5V. Auch muss man sich mal intensiv über die Speisung Gedanken machen, denn ein Stripe wird kaum 9A leiten und x8 = 72A will man nicht mit 100mm² verlegen. Also besser auf 24V bis 36V gehen und an den Einspeisepunkten DC/DC stepdown auf 5V. Alles in Allem, ein anspruchsvolles Vorhaben wo Grundlagen mindestens URI wichtig sind. Sorry 2812B gelesen, sonst der Rest gilt wenn man umrechnet.
:
Bearbeitet durch User
Hi, super, dass du dich in die Elektronik einarbeiten willst, aber darf ich dir einen Tipp geben? Arduinos sind für solche Sachen eher blöd, weil sie zwar leicht zu programmieren sind, aber sehr langsam sind. Ich würde dir ein STM32 empfehlen. Den kann man mittlerweile sehr einfach mit der HAL von ST programmieren. Schau dir mal CubeMX an, dass ist wie ein Baukastensystem. Es gibt sogar schon fertige Beispiel mit den WS2815. Da sind soagr mehr als 200Hz drinne wenn du willst. Besorg die mal eine BluePill Board oder gleich ein Discovery. MFG
STM32 FTW schrieb im Beitrag #5980052: > Da sind soagr mehr als 200Hz drinne wenn du willst. wie denn das, der Stripe gibt das Timing vor und die Anzahl der LEDs in der Kette, klar mit einer LED kann man mehr Tempo erzeugen aber 1200 Ports parallel hat auch kein STM, abgesehen davon will keiner die Stripes zerschnippeln und 1200 Leitungen ziehen.
Joachim B. schrieb: > wie denn das, der Stripe gibt das Timing vor und die Anzahl der LEDs in > der Kette, klar mit einer LED kann man mehr Tempo erzeugen aber 1200 > Ports parallel hat auch kein STM, abgesehen davon will keiner die > Stripes zerschnippeln und 1200 Leitungen ziehen. HI, da habe ich mich falsch ausgedrückt, wenn er die Stripes aufteilt meinte ich natürlich.
STM32 FTW schrieb im Beitrag #5980111: > HI, da habe ich mich falsch ausgedrückt wie war das möglich? STM32 FTW schrieb im Beitrag #5980111: > wenn er die Stripes aufteilt > meinte ich natürlich. schrieb ich doch oben schon, seine 8 Stripes a 150 LEDs parallelisieren und ein STM kann das wohl aber auch andere. Aber ich fange deswegen keinen Glaubenskrieg an. Der TO schrieb von Arduino und da ich meine WS2812B vom Nano328p mit der Arduino IDE auf den ESP32 gebracht hatte wird das für den TO der leichtere Weg sein als STM denke ich.
:
Bearbeitet durch User
STM32 FTW schrieb im Beitrag #5980052: > Arduinos sind für solche Sachen eher blöd, weil sie zwar leicht zu > programmieren sind, aber sehr langsam sind. Immerhin sind sie schneller, als der erste PC (Schneider CPC464), auf dem ich das Programmieren lernte. Geeignet sind sie ganz sicher - auch um den Umgang mit begrenzten Ressourcen zu lernen - was mit Verlaub vielen professionellen Programmierern fehlt. STM32 sind schön und gut, aber für den Anfang meiner Meinung nach zu komplex. > Schau dir mal CubeMX an, dass > ist wie ein Baukastensystem. Wo immer irgendein Baustein nicht tut, was er soll. Ich möchte keinem Anfänger zumuten, dann in den Quelltext der HAL zu schauen, um sie zu reparieren.
Stefanus F. schrieb: > Immerhin sind sie schneller, als der erste PC (Schneider CPC464), auf > dem ich das Programmieren lernte. Geeignet sind sie ganz sicher - auch > um den Umgang mit begrenzten Ressourcen zu lernen - was mit Verlaub > vielen professionellen Programmierern fehlt. Dass man mit begrenzten Ressourcen klarkommen sollte ist wohl korrekt. Allerdings ist es fakt das man für eine gewissen Anzahl an LEDs eben entsprechend Speicher braucht und machen wir uns nichts vor die Controller auf den Arduino Boards sind jetzt nicht die Speicher Riesen. Ich denke das es durchaus möglich ist das mit einem Arduino zu realisieren aber wenn er es langfristig auch über Musik oder sonst was steuern will dann wird das ganze schon eng. Stefanus F. schrieb: > STM32 sind schön und gut, aber für den Anfang meiner Meinung nach zu > komplex. In dem Fall muss ich aus meiner Sicht wiedersprechen. Ich finde es ebenso wichtig sich mit der Hardware auseinander zu setzen die man da verwendet. Das geht meiner Meinung nach beim Arduino fast vollständig verloren. Das mag schön für Hobby Bastler sein, wenn er sich aber wirklich einarbeiten möchte dann finde ich es nicht verkehrt einen STM zu verwenden. Dank CubeMX ist es wirklich einfach geworden die Initialisierung zu machen und es gibt mittlerweile so viele Online Beiträge dazu. Man kann mich gerne korrigieren und ja ich bin sicher es gibt auch Arduino Bibliotheken die das anders machen, aber die die ich so kenne verwenden Bitbanging zur Ansteuerung der LEDs und das ist nun wirklich nicht Ressourcen effizient. Zumal da nichts mit paralleler Ausgabe zu machen ist. Stefanus F. schrieb: > Wo immer irgendein Baustein nicht tut, was er soll. Ich möchte keinem > Anfänger zumuten, dann in den Quelltext der HAL zu schauen, um sie zu > reparieren. Ich gebe ja gerne zu das CubeMX am Anfang so seine Probleme hatte, aber das tool ist erwachsen geworden. Ich verwende es fast täglich und habe eigentlich nie wirklich Probleme damit. Zudem hat man mit der Atollic IDE auch ein mächtiges und doch einfach zu benutzendes Tool mit dem man auch anständig debuggen kann. Das stellt auch eine schöne Möglichkeit dar sich die internen Abläufe klarzumachen. Es mag sein das es nicht so einfach ist wie die Arduino IDE aber langfristig hat man mehr davon. So das wurde etwas länger als gewollt. Aber wenn man ehrlich ist 10 Leute 10 Meinungen. Es schadet nicht sich beides an zu schauen und dann zu entscheiden wie Tief man in die Materie eigentlich einsteigen will. Zum eigentlichen Problem, Ich persönlich verwende die SPI Schnittstelle des STM um die WS28xx anzusprechen. Es gibt aber auch eine schöne Lösung mit Timern und DMA die ich mir zeitnah auch mal anschauen werde, da hier das Timing noch etwas geauer gemacht werden kann. Da der STM mehr als genug Timer und Timer Kanäle besitzt sollte es kein Problem darstellen 8 Stripes parallel zu aktualisieren und in dem Fall sind wie oben bereits berechnet die 200Hz zu machen. Da der DMA den Datentransfer übernimmt kann parallel dazu auch schon der neue Puffer berechnet werden und Speicher ist in dem Fall kein Problem ;) LG Hans
STM32 FTW schrieb im Beitrag #5980052: > Arduinos sind für solche Sachen eher blöd, weil sie zwar leicht zu > programmieren sind, aber sehr langsam sind. Warum sollte ein 32Bit Arduino mit 84MHz Clock "sehr langsam" sein? Es gibt mehr, als nur den Arduino Uno
Hans B. schrieb: > Allerdings ist es fakt das man für eine gewissen Anzahl an LEDs eben > entsprechend Speicher braucht Das stimmt wohl. Dieser AVR ist für diese Anwendung in der Tat zu klein.
Hans B. schrieb: > Dass man mit begrenzten Ressourcen klarkommen sollte ist wohl korrekt. > Allerdings ist es fakt das man für eine gewissen Anzahl an LEDs eben > entsprechend Speicher braucht Das ist überhaupt nicht "Fakt". Wer programmieren kann, liefert die (berechneten) Daten in Echtzeit in einem Callback. Dann braucht man keinen Framebuffer. Das geht zwar nicht für wirklich jeden Anwendungsfall, für die allermeisten aber schon. Beispiel: Beitrag "Audio Spektrum Analyzer mit ATtiny85" In dem Tiny wäre garnicht mehr genug Platz für einen richtigen Framebuffer gewesen...
Hans schrieb >Das mag schön für Hobby Bastler sein, wenn er sich aber >wirklich einarbeiten möchte dann finde ich es nicht verkehrt einen STM >zu verwenden. Wo hat der TO geschrieben, dass er sich einarbeiten will? Er will einen Neopixelstreifen mit Sound und Handy steuern. Dazu nimmt man einen ESP32 mit der Arduino IDE und den Link auf die Beispiele dazu hatte ich oben gepostet. Man kann aus allem eine Wissenschaft machen.
Schonmal danke für die ganzen Anregungen. Ich habe noch ein bisschen rum probiert und mit dem Arduino der mir momentan zur Verfügung steht scheint das Ganze nicht so wirklich umsetzbar zu sein. chris schrieb: > Wo hat der TO geschrieben, dass er sich einarbeiten will? Explizit habe ich das natürlich nicht geschrieben, ich bin aber in der Tat daran interessiert mich tiefer mit der Materie zu beschäftigen. Ein ESP nützt mir denke ich aber auch nicht so viel auch wenn er deutlich mehr Leistung hat, da ich kein WLAN nutzen möchte. CubeMX habe ich mir mal angesehen und ich muss sagen das ich das Tool ganz übersichtlich finde. Ich werde mir von einem Kollegen mal ein Nucleo Board leihen und etwas damit rumspielen. Die Sache mit den Timern bzw. SPI klingt sehr interessant und ich habe sogar hier im Forum etwas dazu gefunden.
Kevin M. schrieb: > Ein ESP nützt mir denke ich aber auch nicht so viel auch wenn er > deutlich mehr Leistung hat, da ich kein WLAN nutzen möchte. Muss du nicht benutzen, die WLAN Schnittstelle kann man abschalten. Was übrig bleibt ist ein äußerst preisgünstiger schneller Mikrocontroller mit viel RAM und ohne Ende FLASH. Solange er genug I/O Pins hat, warum nicht verwenden? Ein paar kleine Macken hat er natürlich, aber die sind kein Problem, wenn man sie kennt. Siehe http://stefanfrings.de/esp8266/index.html. Andere 32bit Controller haben auch Macken.
c-hater schrieb: > Das ist überhaupt nicht "Fakt". Wer programmieren kann, liefert die > (berechneten) Daten in Echtzeit in einem Callback. Dann braucht man > keinen Framebuffer. Ich will mal sehen wie du mit einem 16 MHz Prozessor 800Kbit/s raus sendest und das in Echtzeit auf 8 Kanälen in einem Callback berechnest und nebenher noch Gott weiß was machst. Natürlich kann man das machen, man kann aber wenn man "anständig programmieren" kann, auch die Hardware nutzen die einem zur Verfügung steht. Nicht umsonst arbeiten µC intern mit buffern, Hardwaremodulen und DMA. Wenn man den Speicher hat warum soll man dann bitte nicht die CPU entlasten und mit sinnvollen Sachen beschäftigen während gesendet wird. Kevin M. schrieb: > Explizit habe ich das natürlich nicht geschrieben, ich bin aber in der > Tat daran interessiert mich tiefer mit der Materie zu beschäftigen. Freut mich zu sehen das es noch Leute gibt die gewillt sind nicht immer den einfachsten Weg zu gehen und sich auch mal genauer mit etwas auseinander zu setzen.
Nachdem ich jetzt etwas rumgespielt habe ein kleines Update. Der STM ist wirklich klasse, ich habe relativ schnell die LEDs am laufen gehabt. Dank der vielen Timer konnte ich tatsächlich die 8 Kanäle realisieren und aktualisiere sie parallel mit Hilfe der DMAs. So konnte ich die geforderte updaterate sogar noch übertreffen. Aktuell habe ich mal eine rudimentäre BT Verbindung über ein HC06 gemacht, jetzt schaue ich mal was noch so geht. Nochmal danke für die ganzen Vorschläge.
Interessanter Beitrag. Ich arbeite schon seit längerem mit STMs und hatte vor einem Jahr ca ein ganz ähnliches Projekt. Im Moment setze ich mich etwas mit der DSP Library auseinander. Und dachte mir das es doch bestimmt cool aussehen würde einen FFT von dem audio Signal zu machen und diese über die LEDs aus zu geben. Hat jemand Erfahrungen mit der DSP?
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.