RE: Raspberry Pi Pico als WS2811 Ersatz

#1 von cmfcmf , 07.03.2021 17:23

Hallo Zusammen,

ich habe die letzten Tage aus Spaß etwas Zeit mit dem Einlesen des WS2811-Signals mittels Mikrocontroller gemacht. Im Gegensatz zu z.B. der Servo-/Charlieplexing Platine war mein Ziel, das Signal einzulesen und weiterzuleiten, ohne dafür noch einen externen WS2811 Chip zu benutzen.
Ein AVR ist dafür ja leider zu langsam; aber es ist ein schönes Projekt für einen Raspberry Pi Pico (4€).
Nach etwas hin und her habe ich es nun geschafft, auf dem Microcontroller zwischen 1 und 10 WS2811 zu emulieren. D.h. man könnte den Pi Pico nutzen, um das WS2811 Signal exakt einzulesen, ohne dass man sich auf das PWM-Signal eines WS2811 Chips verlassen zu müssen.

Ich habe aktuell keinen konkreten Plan, was ich damit jetzt machen kann. Es ging mir auch hauptsächlich darum, mal mit dem Pi Pico rumzuspielen. Es ist also nur ein Proof of Concept, das zeigt, dass es theoretisch geht. Das tolle ist, dass ich das ganze mit dem "PIO" ("programmable input/output") des Pi Picos programmiert habe. Das heißt, dass das einlesen des WS2811 Signals _keinerlei CPU-Takte_ verbraucht. Für das eigentliche Programm, was auf dem Pi Pico laufen kann, z.B. die Ansteuerung von Servos, Motoren, Signalen, etc., hat man also immer noch beide Cores des Prozessors zur vollen Verfügung.

Den Code für das Einlesen habe ich mal hier hochgeladen: https://github.com/cmfcmf/rp2040-ws2811-client

Grüße
Christian


 
cmfcmf
S-Bahn (S)
Beiträge: 10
Registriert am: 17.01.2021


RE: Raspberry Pi Pico als WS2811 Ersatz

#2 von Jueff , 07.03.2021 19:39

Zitat

Hallo Zusammen,

...ohne dafür noch einen externen WS2811 Chip zu benutzen.
Grüße
Christian



Hallo Christian,

neben den MLL ESP32 Entwicklungen forsche ich gerade an demselben Thema. Das Einlesen des WS281X Signals geht mit dem ESP32 sehr zuverlässig, er hat ebenfalls ein eigenes Hardwaremodul (RMT), mit dem das Einlesen des Signals von max. 21 WS281X mit minimaler Last auf den Prozessor möglich ist.
Problematisch ist das Weiterleiten der Daten an nachfolgende WS281X, die nach der CPU in der Kette hängen. Ich leite dafür das WS281X Eingangssignal nach einer gewünschen Anzahl zu überspringender Led-Signale an eine nachgeschaltene WS2812 Led weiter, die dann wieder die Signalaufbereitung/Verstärkung für den nachfolgenden Bus mach.

Wie machst du das? Hast du da eine gute Idee dazu?

Jürgen...


Alle Infos zur MobaLedLib findet ihr hier: https://wiki.mobaledlib.de/


 
Jueff
InterCity (IC)
Beiträge: 503
Registriert am: 25.03.2020
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Raspberry Pi Pico als WS2811 Ersatz

#3 von Jueff , 07.03.2021 19:43

und noch zwei Links zu den Protokollbeschreibungen

WS2811
WS2812

Jürgen...


Alle Infos zur MobaLedLib findet ihr hier: https://wiki.mobaledlib.de/


 
Jueff
InterCity (IC)
Beiträge: 503
Registriert am: 25.03.2020
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Raspberry Pi Pico als WS2811 Ersatz

#4 von cmfcmf , 07.03.2021 19:53

Zitat

Problematisch ist das Weiterleiten der Daten an nachfolgende WS281X, die nach der CPU in der Kette hängen. Ich leite dafür das WS281X Eingangssignal nach einer gewünschen Anzahl zu überspringender Led-Signale an eine nachgeschaltene WS2812 Led weiter, die dann wieder die Signalaufbereitung/Verstärkung für den nachfolgenden Bus mach.

Wie machst du das? Hast du da eine gute Idee dazu?



Hallo Jürgen,

Ich habe in meinem Testaufbau einen 74HCT244 (ein 8-fach Puffer-Treiber) nachgeschaltet, in den ich das 3,3V Datensignal vom Pi Pico speise. Ich benutze einen der acht Kanäle des Bausteins, um das Signal wieder von 3,3V auf 5V hochzuregeln. In meinem kleinen Testaufbau funktioniert das
Oder gibts da noch ein anderes Problem, das ich übersehe?

Grüße
Christian


 
cmfcmf
S-Bahn (S)
Beiträge: 10
Registriert am: 17.01.2021


RE: Raspberry Pi Pico als WS2811 Ersatz

#5 von Jueff , 07.03.2021 20:05

Zitat

Ich habe in meinem Testaufbau einen 74HCT244 (ein 8-fach Puffer-Treiber) nachgeschaltet, in den ich das 3,3V Datensignal vom Pi Pico speise. Ich benutze einen der acht Kanäle des Bausteins, um das Signal wieder von 3,3V auf 5V hochzuregeln. In meinem kleinen Testaufbau funktioniert das
Oder gibts da noch ein anderes Problem, das ich übersehe?



Hallo Christian,

wenn ich es richtig verstehe erzeugst du ein neues Datensignal. Du liest also die Led-Daten ein, schnappst dir die Daten weg, die das Modul selbst braucht, und schickst alles andere weiter.
Du empfängst Led1 bis sagen wir mal Led 150, die Led Daten von Led 1-3 brauchst dein Modul, und Led Daten 4-150 werden weitergeschickt.

Sehe ich das so richtig?

Jürgen...


Alle Infos zur MobaLedLib findet ihr hier: https://wiki.mobaledlib.de/


 
Jueff
InterCity (IC)
Beiträge: 503
Registriert am: 25.03.2020
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Raspberry Pi Pico als WS2811 Ersatz

#6 von cmfcmf , 07.03.2021 20:08

Zitat

Zitat

Ich habe in meinem Testaufbau einen 74HCT244 (ein 8-fach Puffer-Treiber) nachgeschaltet, in den ich das 3,3V Datensignal vom Pi Pico speise. Ich benutze einen der acht Kanäle des Bausteins, um das Signal wieder von 3,3V auf 5V hochzuregeln. In meinem kleinen Testaufbau funktioniert das
Oder gibts da noch ein anderes Problem, das ich übersehe?



Hallo Christian,

wenn ich es richtig verstehe erzeugst du ein neues Datensignal. Du liest also die Led-Daten ein, schnappst dir die Daten weg, die das Modul selbst braucht, und schickst alles andere weiter.
Du empfängst Led1 bis sagen wir mal Led 150, die Led Daten von Led 1-3 brauchst dein Modul, und Led Daten 4-150 werden weitergeschickt.

Sehe ich das so richtig?

Jürgen...




Hallo Jürgen,

ganz genau, wobei in meinem Fall die Daten für 1-10 RGB LEDs "geschnappt" werden und der Rest weitergeleitet wird.

Grüße
Christian


 
cmfcmf
S-Bahn (S)
Beiträge: 10
Registriert am: 17.01.2021


RE: Raspberry Pi Pico als WS2811 Ersatz

#7 von Jueff , 07.03.2021 20:23

Hallo Christian,

Ich habe mir gerade die Kurzbeschreibung des PIO Moduls durchgelesen, das ist natürlich ein ganz tolles Feature, mit dem der RasPI da aufwartet. Für die WS2811 ist der RasPI da perfekt geeignet.
Und ich finde auch deine Implementierung ist sehr gut gelungen, das gefällt mir.

Den LS244 könntet du durch eine Ws2812 Led ersetzen. Die wird mit 5V versorgt, verarbeitet aber trotzdem das 3,3V Signal an DI korrekt. An DO hast du dann wieder ein Signal mit korrektem Pegel und es ist vom WS2812 neu geformt.
Deine Software müsst nur eine Dummy-Led einfügen, was auch den Vorteil hätte, dass diese Led als Statusanzeige verwendet werden kann, die von deiner CPU gesteuert wird.

Tolle Lösung!

Jürgen...


Alle Infos zur MobaLedLib findet ihr hier: https://wiki.mobaledlib.de/


 
Jueff
InterCity (IC)
Beiträge: 503
Registriert am: 25.03.2020
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Raspberry Pi Pico als WS2811 Ersatz

#8 von cmfcmf , 07.03.2021 20:40

Hallo Jürgen,

Zitat

Den LS244 könntet du durch eine Ws2812 Led ersetzen. Die wird mit 5V versorgt, verarbeitet aber trotzdem das 3,3V Signal an DI korrekt. An DO hast du dann wieder ein Signal mit korrektem Pegel und es ist vom WS2812 neu geformt.



Hmm, in meinem Testaufbau hat das nicht funktioniert. Die nachfolgende WS2812 LED (nämlich die LED am Ende der Kette auf der Hauptplatine) hat manchmal geflackert, wenn ich das 3,3V Datensignal direkt weitergeleitet habe.

Zitat

Deine Software müsst nur eine Dummy-Led einfügen, was auch den Vorteil hätte, dass diese Led als Statusanzeige verwendet werden kann, die von deiner CPU gesteuert wird.



Das ist einfacher gesagt als getan; ich laste einen der zwei PIOs schon fast vollständig aus. Aber ich denke, auch das wäre irgendwie machbar.
Vor allem, weil man zur Not ja auch statt dem PIO einen der beiden 125MHz-Cores nutzen könnte, was nochmal deutlich mehr erlauben würde. Ich fand PIO nur sehr cool, weil die beiden Cores dadurch immer noch zur freien Verfügung stehen. Und das zusammenpuzzeln des PIO Programms hat nebenbei auch noch sehr viel Spaß gemacht

Grüße
Christian


 
cmfcmf
S-Bahn (S)
Beiträge: 10
Registriert am: 17.01.2021


RE: Raspberry Pi Pico als WS2811 Ersatz

#9 von Hardi , 07.03.2021 21:00

Hallo Christian,

das klingt ja super interessant. Ich muss mir gleich ein paar von den Teilen holen. Wo gibt es die für 4€?

Hardi


Haltet Euch unbedingt von diesen Seiten fern:
viewtopic.php?f=7&t=165060
https://wiki.mobaledlib.de/
sonst wird Eure Anlage niemals fertig…

Unsere Anlage findet Ihr hier:
RE: Unsere Kinder und Vater Anlage(n)


 
Hardi
InterCityExpress (ICE)
Beiträge: 2.142
Registriert am: 28.12.2015
Homepage: Link
Ort: Mainz
Gleise C
Spurweite H0
Steuerung MS2 + Eigenbau
Stromart Digital


RE: Raspberry Pi Pico als WS2811 Ersatz

#10 von cmfcmf , 07.03.2021 21:07

Hallo Hardi,

bis vor kurzem gab es die bei reichelt noch für 3,95€, mittlerweile kosten die aber 1€ mehr und sind gerade auch nicht lieferbar.
Ich habe meine für 4,10€ bei berrybase.de gekauft (dort kann man aber nur 3 pro Einkauf bestellen). Alternativ gibt es hier auch eine Liste der offiziellen Reseller: https://www.raspberrypi.org/products/raspberry-pi-pico/.

Kauf am besten mindestens 2, da man den einen Pico dann zum Programmieren+Debuggen des anderen Picos benutzen kann.

Grüße
Christian


 
cmfcmf
S-Bahn (S)
Beiträge: 10
Registriert am: 17.01.2021


RE: Raspberry Pi Pico als WS2811 Ersatz

#11 von Jueff , 08.03.2021 07:22

Zitat


Hmm, in meinem Testaufbau hat das nicht funktioniert. Die nachfolgende WS2812 LED (nämlich die LED am Ende der Kette auf der Hauptplatine) hat manchmal geflackert, wenn ich das 3,3V Datensignal direkt weitergeleitet habe.




Am Hauptplatinen - ESP32 Adapter machen wir es genau so mit der LED zur Pegelanpassung, jeder der 6 zusätzlichen LED Kanäle hat eine eigene Heartbeat LED, welche direkt auf der Adapterplatine sitzt.
Bei meinen Versuchen kämpfte ich auch mit dem Flackern der nachfolgenden LEDs, mit dem Logic Analyzer konnte ich dann feststellen, dass hin und wieder die erste steigende Flanke des generierten Signals fehlte, weil ein Interrupt um ein paar ns zu spät kam.

Jürgen...


Alle Infos zur MobaLedLib findet ihr hier: https://wiki.mobaledlib.de/


 
Jueff
InterCity (IC)
Beiträge: 503
Registriert am: 25.03.2020
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Raspberry Pi Pico als WS2811 Ersatz

#12 von Jueff , 08.03.2021 07:30


Alle Infos zur MobaLedLib findet ihr hier: https://wiki.mobaledlib.de/


 
Jueff
InterCity (IC)
Beiträge: 503
Registriert am: 25.03.2020
Homepage: Link
Spurweite H0
Stromart DC, Digital

zuletzt bearbeitet 09.06.2021 | Top

   

MP3-TF-16p Soundmodul an Servoplatine
Schrittmotor-MobaLedLib

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz