-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WS2811 not working #38
Comments
I've seen those modules require different voltages for signal. Try a 5v signal. Other than that, it's hard for us to help because it sounds like LEDscape is working correctly for your WS2812Bs, and that the problem with the other modules is specific to them. |
Thanks for the help, I've already tried the signal at 5v with the level shifter. With raspberry no problem in driving them using rpi_ws281x library. Could it be an issue on the speed of WS2811, is there a way to set low or high speed mode? |
LEDscape only supports 800mhz ws2811, unfortunately. I personally have never encountered one of the slower ones, nor have we received any requests for support for them (other than this). It wouldn't be very hard to add support, however. Can you verify that your LEDs are of the slower sort by checking the parameters of rpi_ws281x or by using a logic analyzer? Thanks. |
I too am having problems with WS2811 strips. I also have a WS2815 strip that I tried and neither of them functioned with LEDscape. Can you make specific timing templates for them instead of ws281x.p make ws2811.p, ws2812B.p, ws2815.p, etc...? I'm not even sure how to adjust the timings based on the data sheets because I don't know enough about your structure to make those changes. Where is the low time defined? Where is the high time defined? Where is the reset time defined? I can't pick out what's going on in the .p file to adjust the ws281x.p to my needs. |
I know the PRU code well and can make timing adjustments for you if necessary, but first let's make sure that is the problem. Are you using a 5 volt level shifter to feed the data in signal of the strips? It is not always necessary, but some strips require it. Do you have an Arduino handy that you could use to test these strips? |
Hi @bigjosh, Thanks for the answer, I've got an arduino and when I use fastLED and set the LED type accordingly, the strip works fine(using WS2811 timing for the WS2815 has been fine - WS2812 and WS2812B timing for the WS2815 strip produces the same result I see on the beaglebone). I'm not sure if a logic level shifter is required for the WS2811. I've got the WS2815 strip that doesn't require it when hooked up to the arduino. I'm using an arduino UNO for reference. I've also had the WS2815 strip hooked up directly to a raspberry pi without issues as well.(The pi is just too slow) I haven't tried the WS2811 on the arduino yet because I can't determine if the WS2811 needs 5v or 3.3v for DI and if the arduino UNO digital out is 3.3V or 5V. Also to clarify on the strips I have: 1xWS2815 - 300 Pixels |
UNO digital out is 5V and WS2811 uses 5V for data lines. Almost all strip types I've seen use 5V for data lines. Some strips will work connect directly to BB's 3.3v data lines, but not all. So things that could be wrong...
To rule out case 1, get the strip to work with an Arduino. To rule out case 2, take any strips that work on Arduino and try them on BB with a level converter. If then you are left with only case 3 possible then I can make you a version with different timing, but looking at the data sheets for both 2811 and 2815, the timings seem to be within the specs of the standard 2812B timings (assuming the WS2811 is running in high speed mode. LMK what you find! |
Hi @bigjosh , Is there a link you can give to me of a pre-assembled logic level shifter that requires no soldering? That's the last part I'm stuck on as the WS2811 strips work fine on an arduino and a raspberry pi 3 model b+ when hooked up to data directly. Thanks |
The Pi is also only 3.3V, so if your strips work on it then it is not a voltage issue. Can you send me a gist with the code (including any settings and |
Hi @bigjosh Sorry I didn't see this until now, Here's the arduino code I'm using: I'm actually using the WS2811 timings. I think it's just because this package requires such an out of date debian package I've had such trouble even getting this to setup correctly. The debian packages for wheezy don't even exist anymore so I can't get updates and install new packages - including vncserver and htop - the animations even for a single strand at 150 pixels is 5 fps, not the 160 showed in the output.
I also had to modify the /boot/uEnv.txt file to even get this to work and I'm still not sure that it's working correctly because the cape-universala device tree doesn't exist:
Additionally, the WS2815 strip still isn't functioning quite right, the timing is close, but still not quite right. It looks like only every other pixel is getting updated with the correct color - if I run a test program setting a solid color to all pixels every 5s then everything works fine. I've tried this both with and without the logic level converter. WS2811 strip seems fine without the converter off of the beaglebone. |
Maybe try this ready-to-run image from my repo... https://github.com/bigjosh/De-Harak-Clock-Controller/releases/tag/1.0BB Put it on an SD card, then burn that into a BBB. Connect pixel strings to any or all of these pins.... ...and see what you see. Note I can do |
Thanks, I'll give this a try - just out of curiosity, is there a way to have there be more than 7 channels? Also - does this have the Open Pixel Control server built into it? That's why I was using this repository. I need the network control capability. Josh |
Yes, you can edit the You should expect to see the |
Trying this now - I'll let you know! Thank you so much! |
Channel 0 produced a rapid red fade pattern that lasted only a second or 2, it still looked really rough in terms of FPS - i.e. it wasn't smooth. |
I ran my own demo c# code and it looks like it can handle the FPS I want now. I don't know why there were so many issues before. Thank you so much! The timings look good for the WS2811 and WS2815 strip. |
Can you update that image with a full mapping of all the channels and any other steps needed to enable them? I know I can go into the ledscape.config file and adjust the led strip count but I don't know what the other channels are mapped to due to conflicting data. |
The pin mapping scheme is set with the |
Thanks @bigjosh for helping with this! Looks like everything is all set to be expanded! WS2815 and WS2812 strips work fine, I'm just wondering what I'm supposed to do if I have varying lengths of LED strips per channel and if that's something that's even supported? It also appears that when using OPC, all channels are treated like channel 0. i.e. If I want to control just channel 2 I'd send 2 as the channel in the OPC protocol but it gets ignored and sent to channel 0 as well as channel 2 |
Tell ledscape the length of the longest strip. When sending packets, pad the shorter channels so all channels are the same length (the actual length of the longest one). |
Thank you @bigjosh so much for preparing that flasher image. That is the way to deploy. After much headache between wheezy eMMC/SD card management -or- attempting to compile/run on 4.19 your deployment is the winner by far.. this should be bumped up in the master README. ..anyhow, I'm still struggling to get all 48 channels of output to show up. When I adjust the config to the following:
... and send appropriate data, I can see I think 25 channels active total. I can see data for example on P8_35 and P8_33 with your attached image above - so this means that HDMI must be disabled right? But I still have no joy on the other pins in the p8_27 - p8_46 range. Whenever I copy down the uEnv.txt in the repo to the /boot dir things go pear shaped and I need to reflash the entire image. For now I've been going with https://github.com/iontank/ThrowingBagels because it works out of the box on modern distros, but their packet format is a bit funny (two datagrams per frame, splitting each strip first half in one, second half in the other)... Anyways I would love to help and bring this repo up to date. Among the forks @Geocene https://github.com/Geocene/LEDscape |
@nargetdev Hmmm... there are several things that could prevent ledscape from getting to some of the pins. There is all of the devicetree stuff which can be a pain, and the HDMI stuff too which I think requires out-of-band modifications to files that are not in the normal file system. I am away from my BBB for a couple of weeks, but those are the first places I would look. Try to map which pins are working and which are not (pretty easy using a pixel strip or oscilloscope ) and try to notice the pattern, and then see fi you can manually "fix" one of the not working pins by manual messing with its devicetree or pinmode. Report back what you find! |
I see this among the logs at boot time:
Does this mean it chose the wrong dtb or can there be multiple loaded at different times (i.e. does ledscape.service set the dtb at runtime?) |
It has (intentionally) been many years since I messed with the devicetree stuff. Once I get it to work for a given setup then I don't touch it. There can be multiple DTBs in the I'd maybe pick a pin that is currently not working but has no other plausible systems trying to use it and then track down why it is not working on your system. By default, this version of ledscape accesses these pins as memory mapped GPIO (not as PRU IO like Trammel's original versions). This means you can use all of the googleable info on getting a pin to be GPIO, and once you get it to work as normal GPIO then this ledscape should work with it. There is a bunch of |
Completely aside, if you are making a custom PCB, I'd strongly suggest connecting a free GPIO to the reset pin if you can so you will have a hardware way to deal with the horrible dead-ethernet port problem on BBB... https://wp.josh.com/2018/06/04/a-software-only-solution-to-the-vexing-beagle-bone-black-phy-issue/ |
Hi,
I've tried the defaul config "ws281x" with a strip of 5vdc WS2812B and everything was fine.
Then I've replaced the strip with a 12Vdc WS2811 with one chip driving 3 led and the strip turns on but doesn't respond correctly to signals.
this is how I've wired the WS2811:
12vdc power supply( + ) ---------------- STRIP (+)
12vdc power supply( - ) -----------------STRIP (-)
STRIP( DI ) ---------------- level shifter (H1)
5vdc power supply( + ) ---------------- level shifter (H)
5vdc power supply( - ) ----------------- com (-)
3V3 BEAGLEBONE ---------- level shifter (L)
CHANNEL0 PIN ---------------level shifter (L1)
every help is really appreciated, BR
The text was updated successfully, but these errors were encountered: