Announcement

Collapse
No announcement yet.

Outdoor Large Visual display using light stripes WS2812B and Tasmota enabled ESP8266

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Outdoor Large Visual display using light stripes WS2812B and Tasmota enabled ESP8266

    About a year ago I asked here about HS3 manageable outdoor LED sign/display approx 5' by 1'. While I got some valuable feedback I couldn't find anything suitable except for one model that was extremely expensive.

    One year fast forward and it seems that new opportunities pop up. The vendor of this light strip WS2812B (available on Amazon) claims that it can be used for building large displays as each of the 144 pixels of the 3' stripe is individually controlled. Furthermore, I red that Tasmota software that drives the WiFi micro controllers ESP8266 and ESP32 does support WS2812B.

    I know that there are some Tasmota and ESP8266 fans here. Did anyone experiment with WS2812B or willing to do so? I'm very interested in a project like that but lack tech skills to get into the guts of it.

    Thanks,

    risquare


    #2
    The Internet is literally littered with examples of people doing this using various neopixel type LED strips. Search DIY LED wall and you will find a multitude of step by step instructions and code examples that almost anyone could use to hack together a project. If you have minimal build skills, can solder and type code into the Arduino IDE to program things up you can build an LED wall.

    Comment


      #3
      I built two signs using these LEDs. One two rows and larger one four rows which is better suited when jpg images are to be shown. McsMQTT provides the customized interface to the API that is documented in mcsMQTT.pdf. The ESP8266 side is based on Tasmota. It extends it to provide features not available in stock Tasmota. Stock Tasmota is for single LED strip and not some form of matrix that is used for a sign.

      I am very happy with the results. The smaller sign is in family room with time, temp and humidity as default displays. These are overwritten with CID when phone rings and high priority messages from HS. The larger sign is in den with time on first row. HS log updates on line 2. Event messages on line 3. Local temp and humidity and 5 day forecast from open weather map scrolling on the last row. The ESP 8266 does the download of OWM forecast and picks out just the textual summary for each day.

      The addressable LED is a great way to go for this purpose for flexibility and simplicity. Higher density and lower cost displays can be made by usin row-column refresh approach such is found in some RPi kits such as from Adafruit.

      while there is no link to research your post, I have seen implementations using strips rather than matrix. Same approach, just different mechanism at wiring and securing the LEDs to solid surface.

      Comment


        #4
        Michael McSharry What do you mean when you say "two rows" and "four rows" display. Do you mean 2 and 4 stripes respectively or is one "row" made of more than one LED stripes. Per Amazon specs of WS2812B one stripe is about 1/2 inch wide. To reach my goal of about 1' high display I will need to line up 24 stripes next to each other.
        This alone opens a bunch of questions.
        1. Does Tasmota software manage one stripe only?
        2. Is it possible to use Tasmota to drive 24 stripes? ESP8266 does have 24 GPIOs and ESP32 has even more. It seems that one GPIO is needed per stripe from the specs of WS2812.
        3. Is your modified Tasmota software capable of driving 24 GPIOs simultaneously?
        4. If not how many GPIOs can your modified Tasmota software drive?
        5. Are you willing to share your design ?
        6. Where can I find the referenced document mcsMQTT.pdf provided that I do not use mscMQTT plug-in?

        Thanks,

        risquare

        Comment


          #5
          Originally posted by drhtmal View Post
          The Internet is literally littered with examples of people doing this using various neopixel type LED strips. Search DIY LED wall and you will find a multitude of step by step instructions and code examples that almost anyone could use to hack together a project. If you have minimal build skills, can solder and type code into the Arduino IDE to program things up you can build an LED wall.
          drhtmal Thanks for the feedback. I proudly qualify for the job per the standard set by you above :-)

          Comment


            #6
            1. Versions through 6.x did one strip per pin. I doubt if it has changed since then.
            2. The idea behind the WS2812 is that they are controlled from a single pin so you daisy-chain your 24 strips. With an ESP8266 you could probably do something like 6 pins so each would be driving 4 daisy-chained strips. You primary consideration is to inject power along the strip since these are 5 VDC devices and resistance builds up over distance which results in the LEDs close to power having desired brightness and those far downstream being dim.
            3.I considered one pin per row of text, but had no need to go that direction as one pin worked fine for my 19" x 30" sign. The font size I used was 6 pixels by 8 pixels so I could get four rows. For images I used the entire LED matrix. If you are doing 24 strips then I suspect you will be using something like a 18 pixel by 24 pixel font.
            4 The reason you would want to use more than one pin is due to the contents of the sign changing faster than the propagation of the signal down your 24 strips. Even when I scroll the letters the time to propagate the signal is small compared to the time I wait before I shift the sign content one pixel left. The difficulty with controlling strips with individual pins is the construction of the character library.
            5. Everything has been fully disclosed including hardware construction, MQTT API specification, links to the source code and links to the binary code in mcsMQTT. With the API you could use any MQTT plugin.
            6. The HS store contains all manuals published by plugin authors so searching the products for mcsMQTT will find https://plugins.homeseer.com/guides/273_mcsMQTT.pdf

            Comment


              #7
              Originally posted by Michael McSharry View Post
              I built two signs using these LEDs. One two rows and larger one four rows which is better suited when jpg images are to be shown. McsMQTT provides the customized interface to the API that is documented in mcsMQTT.pdf. The ESP8266 side is based on Tasmota. It extends it to provide features not available in stock Tasmota. Stock Tasmota is for single LED strip and not some form of matrix that is used for a sign.

              I am very happy with the results. The smaller sign is in family room with time, temp and humidity as default displays. These are overwritten with CID when phone rings and high priority messages from HS. The larger sign is in den with time on first row. HS log updates on line 2. Event messages on line 3. Local temp and humidity and 5 day forecast from open weather map scrolling on the last row. The ESP 8266 does the download of OWM forecast and picks out just the textual summary for each day.

              The addressable LED is a great way to go for this purpose for flexibility and simplicity. Higher density and lower cost displays can be made by usin row-column refresh approach such is found in some RPi kits such as from Adafruit.

              while there is no link to research your post, I have seen implementations using strips rather than matrix. Same approach, just different mechanism at wiring and securing the LEDs to solid surface.
              Need pics!!!

              Sent from my SM-G975U using Tapatalk

              Comment


                #8
                Most of these I just pulled from the user manual. The small sign is my first and used ten 8 pixel by 8 pixel tiles. This means I needed to connect wires between each of 10 tiles and then to the ESP8266. The second larger sign used 16 x 32 pixel tiles so less interconnects and less issues with mounting (double sided tape) the devices on a hard surface. The small sign is 2 text rows and the large sign is 4 text rows. Either can show an image rather than text. The image is scaled by the plugin and will pan within the pan display size.

                The text showing on the large size is scrolling in rows 2 and 4. You can actually see the scrolling effect in the picture with a shadow. Row 2 is the last thing in the HS log. Row 4 is the local temp/humidity measurement and five day forecast. Nothing showing in row 3. Time is updated in row 1. The Text showing in small sign is also scrolling and this image was taken before I settled on row 1 as having time displayed unless HS prioritized another message.

                The fourth images just shows the API has provisions for character by character color from HS. If a row is able to hold the full message then it will be static such as the time. If it does not then it will scroll such as the HS log or weather forecast. This is all managed by the ESP8266. HS just needs to send the text, what row it should be shown and for how long it should be shown before removing it.

                For CID I actually send the display request from the CID unit and HS is not involved.

                The last picture is the back that shows the cat-5 wires used to connect the 8 x 8 tiles, the temp/humidity sensor, the light sensor so the intensity of the LED changes based upon ambient light, and the Wemos Mini that does the management. There is also a 3v to 5v level converter that I probably did not need as the WS2812B data signal can be driven by 3v in most cases. Even when not then a diode to raise to relative voltage would work rather than the level converter.

                On the front of the small sign is plexiglass that I sanded to give a satin finish for light diffusion. On the font of the larger sign is polystyrene that is used for lighting diffusion in drop down ceiling. I used polystyrene to cover the back of both. It is rigid, thin, light and cheap.

                Click image for larger version

Name:	s5.PNG
Views:	1275
Size:	328.7 KB
ID:	1356903
                Click image for larger version

Name:	s4.PNG
Views:	1154
Size:	218.4 KB
ID:	1356904
                Click image for larger version

Name:	s2.png
Views:	1151
Size:	206.2 KB
ID:	1356905
                Click image for larger version

Name:	s3.png
Views:	1232
Size:	341.4 KB
ID:	1356906
                Click image for larger version

Name:	s1.png
Views:	1145
Size:	277.5 KB
ID:	1356907

                Comment


                  #9
                  Michael McSharry Thank you very much for sharing and for the great groundwork done.

                  It seems that you offer .bin file for the ESP8266 programming and yet there are major configuration setups in the code as you illustrate on page 332. Without access to these anyone who is trying to follow your steps must have exactly the same size and configuration like yours. Am I correct and is there a way around it ?

                  Thanks,

                  risquare

                  Comment


                    #10
                    The dimensions of the sign and how the LED are daisy-chained is not configurable without a recompile after editing these parameters in user_config.h. I have a separate compile for my two signs. In your case you will want a larger font size and that is not something that I made configurable. I loaded only one font size of 6 x 8 pixels in my project. I originally was going to make the sign size part of the MQTT API, but I had difficulty with with creating my objects with variable size so I abandoned it. It is likely doable, but I did not have the need to invest time into overcoming the problem I had.

                    Comment


                      #11
                      Have you considered using third party software like "Jinx" for example to setup effects and fonts at higher level (not part of ESP8266 programming).

                      Comment


                        #12
                        So Michael McSharry in order to take advantage of your generous offer to share your code one must build "exactly" the same displays like yours. If not than we can expect Picaso art like appearance where the nipples will be on the forehead and the eye under the mouth :-)

                        Comment


                          #13
                          If you want to use the binary then you will need the same configuration as I used. If you want something different then you will need to edit the constants in user_config.h to reflect the size you are building. I also mentioned that I only have one font of 6x8 pixel and if you want to change that then you will need to provide a new font matrix.

                          Comment


                            #14
                            Michael McSharry

                            ​​​​​​​O.K. pls bear with me as I'm not as fluent in ESP8266 lingo. Here is what I know

                            1. The .bin is pre compiled firmware that goes into ESP8266 directly, which is not easy to do (very complex procedure by Espresiff), unless you have OTA enabled (pre-loaded firmware for OTA) ESP8266, which I do. Obviously no customization here. We are in agreement on this one.

                            2. What is user_config.h ? If I do changes there than I have to re-compile the code. To do so I will need full source code of everything. Correct ?

                            3. What is "font matrix" ? Are they available somewhere to download from ? For example if there are standard font matrices say 24 x 36 and 28 x 42 than it will be silly for me to design the display 26 pixel rows as none of the standards will fit.

                            4. Where does the "font matrix" go in the code ? Here again I assume it goes in the source code that I need to re-compile. Correct ?

                            Thanks for your patience, dealing with a beginner like me.

                            risquare

                            Comment


                              #15
                              1. Don't know what you mean by a complex procedure. Plug in a USB cable to you computer and the ESP8266 such as Wemos Mini or NodeMCU. Use one of of the many ESP8266 flashers that are freely available. I happen to use the one in the ESP Easy mega distribution. They are all about the same where you tell it where the binary file is and click the Flash button.

                              2. You need to look at the source files that are referenced in the documentation. One will be user_config.h. It is the file with all the user-preference setttings. At the bottom is where you will find those that deal with the sign. When I started with Tasmota it was an uphill fight to learn what the author did and an uphill fight because I did not know C. In your case it is just a configuration that needs to be defined. If your new configuration breaks some design aspect of the other code then it will take some digging to understand why.

                              3. When you ask the ESP8266 to illuminate a "A" then it needs to know which pixels comprise the "A" character. This definition is the font matrix. I though you wanted a sign that has a single row with large characters. 1 ft of pixels would be about 30 pixels so you need a font matrix of something like 30 x 24. The libraries that I use are Adafruit GFX and FastLed. In the GFX library you will find a source file for gxfont.h and also a folder Fonts. I do see fonts of 24 points in the GFX Fonts folder. These may satisfy your need.

                              4. I have never changed from the default font so cannot provide guidance on how to use other fonts. Google should be a friend.

                              You are not willing to pay for the sign that fits your needs so you need to build your own. I have designed and implemented ESP8266 firmware that I felt had a good interface with HS and flexible enough for a certain degree of user configuration. I documented an API so others that may prefer to use RPi or other processor will only need to deal with the one side and the HS side will have already been done. There is no cost to your to use what I have done, but it does require some degree of software capability if one of the two completed projects don't fit the need. Your engineers doing Big5 should be comfortable in this arena. I am more that willing to answer questions related to the source that I provided, but I have no desire to implement a sign that fits your specifications.

                              Comment

                              Working...
                              X