ESP8266: Artnet receiver
The other I was playing with a matrix of led. The matrix is made of a stripe of WS2801.
So, here is what I have done.
- I flash a new lua based firmware in the ESP8266 using Marcel’s NodeMCU custom build cloud service.
Add WS2801 and / or WS2812 modules - Wait and download the compiled firmware
- Flash it using the tool ESPtool
- I use ESPlorer to program the ESP
- Create a new ini.lua
- Copy the following lines of code.
This is for a matrix 10×10 “snakelines”wifi.setmode(wifi.STATION) wifi.sta.config("******","******",1) tmr.delay(5000000) -- wait 1,000,000 us = 1 second ws2801.init(0, 2) tmr.delay(1000000) ws2801.write(string.char(0,0,0):rep(100)) s=net.createServer(net.UDP) s:on("receive",function(s,c) ws2801.write(string.sub (c, 19, 318)) end) s:listen(6454)
- Use Jinx or Glediator (I prefer Jinx) to drive the matrix and send the Artnet commands to the ESP8266
It works very well.
The code is simple and works well. I haven’t tried on large matrix but I think for larger matrix a fast wifi connection would be needed.
May 5, 2016 at 5:19 pm
Hello,
thank you for your code, this is my first project with nodemcu. I have run these leds with arduino and raspberry pi before, time for a new challenge.
I have only used the udp part of your code to drive 104 leds ( 8*13 ), if I send 104 * blue, only the first 16/17 ones get the right color, the other ones go random.
Do you have an idea what can cause this ? could it be because of the 3.3V from nodemcu ? Do you use a level shifter on the data line ?
Here’s my code :
ws2801.init(4, 5)
tmr.delay(1000000)
ws2801.write(string.char(0,0,255):rep(104))
Cheers
LikeLike
May 13, 2016 at 10:38 pm
Hi Philippe,
which version of Nodemcu are you using?
I didn’t use any level shifter. Do you have enough power for all the stripe?
In my Matrix 10×10, I inject 5 vdc every 25 leds.
LikeLike
May 24, 2016 at 11:15 pm
Hello, just saw your reply …
I have nodemcu 1.0, never managed to drive the ws2801, the ws2812 do work, even without level shifter, power was OK 5V40A , connected every 50 pixels.
I gave up on LUA and managed to have my matrix running with arduino IDE and Fastled, using UDP :
http://pastebin.com/rBSD0Sqm
No problems, only solutions ;P
Cheers
LikeLike