Shop OBEX P1 Docs P2 Docs Learn Events
"Blitzen 24" E1.31 Pixel Light Controller Updates thread. - Page 3 — Parallax Forums

"Blitzen 24" E1.31 Pixel Light Controller Updates thread.

135

Comments

  • @VonSzarvas I did not post the details about the maxtrix, but I can post it here. There are a number of people that have used holiday lighting for student projects in some of my Facebook groups. It requires knowledge of everything from carpentry, basic electronics, all they way to computer networking.

    The matrix I used was from Boscoyo. It is the Monster Matrix V4.
    They have other matrices available that are larger and smaller. This one is 4' x 8' and can be populated with 3,528, 882, or 392 pixels, depending on how dense you want it. I populated it with 3,528 pixels. Just be aware that it requires two 30 amp supplies to run that many pixels.

    The pixels I purchased were 8 sets of 12V WS2811 branded as Rexston, from Amazon in lots of 500 count.

    I used 42 (21 Male, 21 Female) 30" xconnect pigtails from WiredWatts for the cabling.

    I also had to get 6 2x4 and related hardware to build the frame.

    A large matrix like that is not an inexpensive endeavor.

    The controller should be able to drive any WS2811 or WS2812 strips or pixels that you purchase.

    I recommend 12v pixels, as voltage drop does not affect them as much.

  • VonSzarvasVonSzarvas Posts: 3,315
    edited 2023-02-14 20:11

    Thanks @ke4pjw. All that detail is REALLY helpful.

    I had imagined using a suitably IP rated LED tape, stuck to the 8x4 board. Never thought about those pixel chains. Interesting !
    I was looking at this style: HC-T12V-10L-30LED-W/IP65
    Although that's only 33.33mm pixel spacing (vs 28.575 spacing for the pixels you linked). I'll keep looking for a tape that matches the spacing more closely, or think about doubling up to ~6300 pixels! (As they appear to have a 60LED/m version, so 16.66mm spacing). Some planning to do !

    Have you hit any upper limits yet with your driver... in terms of the maximum number of pixels that would work ?

  • ke4pjwke4pjw Posts: 1,096
    edited 2023-01-28 14:18

    I have not found the upper limit. You should be able to drive 6300 without issue at 40FPS.

    One thing to be aware of with the strips, often times they are sold with 3 RGB LEDs per IC. All 3 LEDs light up at the same time. This is the way it works on my light arches. For the light arches, 3 LEDs work fine as a single pixel, however it would not look good for a video screen. If you want to do video, make sure it is 1 RGB LED per IC. Also, the strips will need "power injection" where power is provided on both ends of the arches. Those strips are also very power thirsty :)

    Another thing to be aware of with the strips, on most of them are not in the normal RGB color order, usually they are BGR and you will need to adjust that in either your source software (Vixen/Xlights/Jinx) or change the pixel order on the "Outputs" page in the Blitzen 24. I always map RGB in the software and correct the order in the Blitzen.

    I will say that strips would be less labor, LOL. I had a helper :)

  • @ke4pjw said:
    One thing to be aware of with the strips, often times they are sold with 3 RGB LEDs per IC. All 3 LEDs light up at the same time. This is the way it works on my light arches. For the light arches, 3 LEDs work fine as a single pixel, however it would not look good for a video screen. If you want to do video, make sure it is 1 RGB LED per IC. Also, the strips will need "power injection" where power is provided on both ends of the arches. Those strips are also very power thirsty :)

    I know what you mean about the SMT LEDs on the strips... Perhaps some sort of diffuser (or SMT with diffused lens) could be considered as a solution if using those?
    Maybe I'll start by ordering a set of those wired parts you are using; compare how they look. One thing I prefer about those wired modules is the maintenance- seems like it would be much easier to swap out a bad LED, and also the general robustness.

    I will say that strips would be less labor, LOL. I had a helper :)

    he he !!! best summer job ever !!!

  • LtechLtech Posts: 370
    edited 2023-01-30 07:32

    Terry, can you please explain the connections of you drive with the WIZ6100MJ.
    I can't open you schematic.
    ADDR, DATA Are this hardware pins?
    DPINS direction 24=D0, 25=D1...

    You work looks so great I want to play on it

    Thank

    Corrected pining after remark off Terry on post #69 :

  • @Ltech This is technical debt that I need to clean up. There are a couple of ways to express PIN assignments and quite frankly, I don't have a full understanding of why there are differences between them.

    D0-7 are connected to P24-31represented by both DATA and DPINS
    A0 - A1 are connected to P18-P19 represented by ADDR, A0, and A1

    I have a PBI for this but haven't made it I priority. I need to just clean it up.

    Thanks for the kind words.

    --Terry

  • @Ltech I just noticed in your spreadsheet you have 11-20 reversed. 11 is opposite 10, not 20. 20 is opposite 1.

  • ThankYou,

    This is helping a lot to start testing network and P2.
    And Yes I make a swap mistake

    I correct post #66

  • Blitzen 24 Edge Version 1.3 is available.

    This release includes:

    • Duplicate Universe prevention. All forms are validated to ensure that duplicate universes cannot be added.
    • As actions are taken during updates, they are displayed real time in the browser window.
    • Reboot link added for remote reboots after upgrades.
    • Files downloaded from updates are MD5 validated to ensure they are not corrupt.
    • "Boot-up" video is played on the OLED display while the network interface settles after speed and duplex are set.

    Source is available here.
    Binary Release is here.

  • Sorry Terry,

    I can't get you program full running.
    Not to criticize you work, but asking questions.

    TIt is very confusing:

    • You hard core the pinning in the sub programs, Like the oled pins are declared in you main program, but hardware coded in the "oledAsmDrv"
      Hard to find. You start explicit oled, and then in the explicite PUB you call the default pining of the object. I get the oled part working now on different pining.

    • You schematic post 68, do not match you pining in the program file. I can't have the wiz6100 to work yet.

    • The SD on the edgeP2, erase his format partitions after one boot ? First time the oled screen read the SD card fine, then I have to reformat (scan disk ultra 32G) to get the SD back to live.
      Do you have an advice please.

    Thank-you

  • Thanks for the feedback. One thing to note, it may be difficult to move devices to different pins, because the 24 outputs are on contiguous pins grouped together in blocks of 8.

    I will check the oledAsmDrv and update. I can see me doing that. There was some weirdness with the compiler when I did that conversion from the P1 a few years ago. It most likely needs to be cleaned up.

    That absolutely is a problem with the schematic and the assignments in the W6100 code. Neither CLK or the interrupt are actually used. CLK isn't even wired on the production boards, but CLK is assigned to P20 in the code and that is where I have the interrupt ran on the board.

    Bugs opened for both. I will try and have them fixed this evening.

    https://griswoldfx.visualstudio.com/Blitzen 24/_workitems/edit/34

    https://griswoldfx.visualstudio.com/Blitzen 24/_workitems/edit/33/

    Regards,
    Terry

  • ke4pjwke4pjw Posts: 1,096
    edited 2023-02-06 19:13

    @Ltech Also regarding the SD card being erased issue....

    I had that happen when I attempted to use the "cogless" version of FAT32.spin. I had to reformat the card it to make it usable again.

    Make sure you are using the FAT32.spin and sdspi_with_audio.spin2 that is in my code repository.

    I will do a complete pull to ensure my code repository is in sync with my builds. I haven't done that in a while.

    --Terry

  • LtechLtech Posts: 370
    edited 2023-02-06 20:19

    Okay,

    So I can try with CLK and Interup not connected?
    I notice when i only put 3.3 power on the W6100, I have the led running on the RJ connector.
    When connected to P2 I have no led on the RJ45 ?

    Do you power the w6100 with the 3.3Volt of the P2 edge? Is 300mA enough ?

    I do use your FAT32.spin2 of you repository

  • ke4pjwke4pjw Posts: 1,096
    edited 2023-02-06 20:55

    Yes, I use V16-23 to power the W6100.

    CLK and INT do not need to be connected.

    Are you using a Jonny Mac P2 Edge protoboard?

  • Thank you Terry,

    I use the P2 Edge Mini Breakout Board.
    For the oled, in Pub init, you go to pub start. In pub start the pins are hard coded (clout and txout)

  • @Ltech Files have been updated and are available in the main branch. SSD1331 pins are all configured in the topfile. References to the clock line have been removed from W6100.spin2. The reference to the INT line have been commented out, but is there in case anyone want to use it.

    https://griswoldfx.visualstudio.com/Blitzen 24/_git/Blitzen 24/commit/d2ecf6b34bc7730dc81aa42cf2add01578a92348?refName=refs/heads/main

    https://griswoldfx.visualstudio.com/_git/Blitzen 24

  • I have to put a RJ45 cross cable to get the led of the w6100 blinking.
    So far no network, IP =0.0.0.0

  • @Ltech What do you have it plugged into? Typically a straight through cable will work, as it has Auto MDI-X capability.

    Something to be aware of, when booting, the LEDs on the W6100 may turn off and back on again when the network interface is bounced and settling. This should occur when the bootup video is playing on the display. If that video does not play, please download it and place it on the SD card. It is used to act as a delay while the network settles. It is important that this happen, otherwise it will not DHCP properly.

    A couple of questions:
    Are you plugging into a PC or do you have it plugged into a switch?

    Are you providing DHCP on the network it is plugged into?

    If you have it plugged into a Windows machine, did you configure Internet Connection Sharing on your Internet network interface to allow sharing on the interface you plugged into?

    I have thought of having it fall through to a default IP if it can't get receive an IP from DHCP.

    If you enable debugging, you will get more diagnostic information. You should see "Chip Identification: " return with e 0x00 0x61. If you see that, it means you are communicating with the chip properly.

    --Terry

  • Thank you for helping me.

    Answer:

    I am coupled on a switch
    I am providing dhcp
    not plugged in pc
    How can I make a config file
    I go try debug mode

    Attached my created bilzen.conf on the micro sd

  • ke4pjwke4pjw Posts: 1,096
    edited 2023-02-07 19:05

    That appears to be a default config file. It has DHCP enabled and speed/duplex is set to automatic. There is no way to create a config file unless you get it on the network.

    Let's side-step the DHCP issue.

    What IP Address, Subnet Mask, and Gateway do you want configured? I will set it in my test rig and download the config file and post it back here.

    Also, were you able to see this in debug mode?

    If you see that, it means you can communicate with the W6100 and we are dealing with a network issue and not a W6100 or P2 issue.

  • How how I found my problem.

    Chip id stays on $00 $00

    I measure the reset pin, it stays at 0volt all the time.
    So remove the reset pin of the W6100, get the leds working.
    It start to work the moment I change all the w6100 pins to 0-7.
    I guess I have a defect row op P2 pins 16-23

    Great can start playing now

    Thank you Terry for you time, enthusiasm and moving on the P2

  • Sorry about the bum pin, but glad you got it online!

  • LtechLtech Posts: 370
    edited 2023-02-08 07:46

    I have a question about the future online updates.

    Do you push the pin layout in this updates?
    From W6100, oled, ...
    this wil eventually break my setup.
    Are the pin setting in the config file on the microSD ?

  • @Ltech If you update, yes it will break. The pin configurations are in code. The config file contains your network configuration (IP/DNS/Gateway/Speed/Duplex), the E1.31 mappings, the DMX mappings, and pixel types.

    You had mentioned that you were just going to use the display and web server. Should I break the webserver out into its own project?

  • Terry,

    I don't understand you pixelconfig and pining,
    So witch pins are used for Ws2812?
    I believe you use pin1 to 24, explaining my trouble using w6100 on pin 16-23.

  • ke4pjwke4pjw Posts: 1,096
    edited 2023-02-12 17:00

    @Ltech

    The W6100 by default is configured for pins P16-P31
    Pins P0-P16 and P32-P39 are configured for outputs. The pin assignments for these are in groups of 8 on Pins P0, P8, and P32.
    The value of 'pin' in startx is the first of those 8 pins, as I recall. That value is set in startpixels().

    PIXELCONFIG[0] - 1, PIXELCONFIG[40] - 1, and PIXELCONFIG[80] + 15

    The actual value of those elements are 1,9, and 17. If you wish to change what pins they are assigned to, change them in the starx located inside startpixels(). You can use a constant if you wish. Say you want them on pins 0-8, set the pin value to 0. If you wish to disable them, comment them out of startpixels() and stoppixels().

    The values in every 6th element in the PIXELCONFIG array is the logical, human readable, pin number (Pin 1 - Pin 24), starting with PIXELCONFIG[0]. That is why math must be applied to them so that they align with the real pin outputs used in startx.

    *** More in-depth info than you asked for below

    The values in every 6th element of that array act as a primary key for a one [pin] to many [universe] relationship with the 5th value in E131CONFIG array, starting with E131CONFIG[0]. This is what allows you to assign multiple E1.31 universes to a pin. The logic of how E131CONFIG is built can be found in e131post(). It is rebuilt after every E1.31 modification utilizing a "temp table" of sorts. It is a gnarly bit of code that took quite a bit of thought to work out properly. I had to comment it heavily to get my mind right about how to think about it.

    {
    This is here to show what the data structure looks like.
    
      PIXELCONFIG[0] := 1 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[1] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[2] := 800 'Pixel holdoff time
      PIXELCONFIG[3] := @pixelbuffer
      PIXELCONFIG[4] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[5] := 2 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[6] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[7] := 800 'Pixel holdoff time
      PIXELCONFIG[8] := @pixelbuffer
      PIXELCONFIG[9] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[10] := 3 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[11] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[12] := 800 'Pixel holdoff time
      PIXELCONFIG[13] := @pixelbuffer
      PIXELCONFIG[14] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[15] := 4 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[16] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[17] := 800 'Pixel holdoff time
      PIXELCONFIG[18] := @pixelbuffer
      PIXELCONFIG[19] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[20] := 5 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[21] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[22] := 800 'Pixel holdoff time
      PIXELCONFIG[23] := @pixelbuffer
      PIXELCONFIG[24] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[25] := 6 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[26] := %%3120 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[27] := 800 'Pixel holdoff time
      PIXELCONFIG[28] := @pixelbuffer
      PIXELCONFIG[29] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[30] := 7 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[31] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[32] := 800 'Pixel holdoff time
      PIXELCONFIG[33] := @pixelbuffer
      PIXELCONFIG[34] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[35] := 8 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[36] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[37] := 800 'Pixel holdoff time
      PIXELCONFIG[38] := @pixelbuffer
      PIXELCONFIG[39] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[40] := 9 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[41] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[42] := 800 'Pixel holdoff time
      PIXELCONFIG[43] := @pixelbuffer
      PIXELCONFIG[44] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[45] := 10 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[46] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[47] := 800 'Pixel holdoff time
      PIXELCONFIG[48] := @pixelbuffer
      PIXELCONFIG[49] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[50] := 11 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[51] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[52] := 800 'Pixel holdoff time
      PIXELCONFIG[53] := @pixelbuffer
      PIXELCONFIG[54] := 0 ' Pixelcount in this pin
    
      PIXELCONFIG[55] := 12 ' Pin + 1, that way 0 is NULL
      PIXELCONFIG[56] := %%0123 ' Pixel Color order. In this case BB_RR_GG_WW
      PIXELCONFIG[57] := 800 'Pixel holdoff time
      PIXELCONFIG[58] := @pixelbuffer
      PIXELCONFIG[59] := 0 ' Pixelcount in this pin
     }
    '  longfill(@E131CONFIG,0,432)
    {  E131CONFIG[0] := 1 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[1] := 2 ' E1.31 Universe
      E131CONFIG[2] := 100 ' Pixels in this universe
      E131CONFIG[3] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[4] := 2 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[5] := 3 ' E1.31 Universe
      E131CONFIG[6] := 100 ' Pixels in this universe
      E131CONFIG[7] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[8] := 3 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[9] := 4 ' E1.31 Universe
      E131CONFIG[10] := 100 ' Pixels in this universe
      E131CONFIG[11] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[12] := 4 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[13] := 5 ' E1.31 Universe
      E131CONFIG[14] := 100 ' Pixels in this universe
      E131CONFIG[15] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[16] := 5 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[17] := 6 ' E1.31 Universe
      E131CONFIG[18] := 100 ' Pixels in this universe
      E131CONFIG[19] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[20] := 6 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[21] := 7 ' E1.31 Universe
      E131CONFIG[22] := 100 ' Pixels in this universe
      E131CONFIG[23] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[24] := 7 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[25] := 8 ' E1.31 Universe
      E131CONFIG[26] := 100 ' Pixels in this universe
      E131CONFIG[27] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[28] := 8 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[29] := 9 ' E1.31 Universe
      E131CONFIG[30] := 100 ' Pixels in this universe
      E131CONFIG[31] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[32] := 9 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[33] := 10 ' E1.31 Universe
      E131CONFIG[34] := 100 ' Pixels in this universe
      E131CONFIG[35] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[36] := 10 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[37] := 11 ' E1.31 Universe
      E131CONFIG[38] := 100 ' Pixels in this universe
      E131CONFIG[39] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[40] := 11 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[41] := 12 ' E1.31 Universe
      E131CONFIG[42] := 100 ' Pixels in this universe
      E131CONFIG[43] := 0  '  @pixelbuffer for this universe
    
      E131CONFIG[44] := 12 ' Pin + 1, this is the many to one key to the PIXELCONFIG
      E131CONFIG[45] := 13 ' E1.31 Universe
      E131CONFIG[46] := 100 ' Pixels in this universe
      E131CONFIG[47] := 0  '  @pixelbuffer for this universe
    }
    
    
  • ke4pjwke4pjw Posts: 1,096
    edited 2023-02-12 16:24

    PS @Ltech : I am pretty sure I never cleaned up the comments in tt_rgbx_pixel.spin2. I got it in a working state and moved on. I will add a PBI for that cleanup.

  • Quick video of upgrading from v1.2 to v1.3 firmware.

  • Fun little anecdote: The past month I have been in build mode for my Christmas lights. I had 4 of the light controllers in storage all year. When I hooked them up, they were all on 1.2 version of the firmware. I clicked the "Upgrade Available" link on the config tab on each of them. They all downloaded the 1.3 firmware from the Internet and rebooted. Easy peasy!

    This year I replaced 11 of my old P1 based AC dimming controllers (Rudolf 16's) with 3 P2 based Blitzen 24's. Almost all pixels this year. I will post a video in the next few days. Hope to have the build complete this weekend.

Sign In or Register to comment.