[Finchronicity] over on Hackaday Projects has made a pretty awesome furry LED Vest to keep him warm and well lit at this year’s Burning Man. He is using a Teensy 3.0 that drives strips of 470 WS2811 LEDs.
The vertically aligned strips run on a continuous sequence which reaches up to 31 frames per second using precompiled animations. The effects rendered in Processing or video mapped, are captured frame by frame and stored as raw color data to an SD card. Playback uses the NeoPixel library to control the strips. The high resolution LEDs, with the video mapped fire and the long pile fur, create one of the nicest flame effects we have seen on clothing.
We’ve also seen the Teensy 3.0 and WS2811 LEDs used as a popular combination for building huge displays, a 23ft tall pyramid, and more recently in the RFID jacket at Make Fashion 2014. Have you made or seen a great Teensy/WS2811 project you would like to share with us? If so, let us know the details in the comments below.
Cool! I VOLUNTEER AS TRIBUTE!
My but have the sands of time ravaged your once youthful voice Aurthur Brown
Why does my mind instantly think furry convention and kill it with fire?
I came here to say Kill it with fire
Irony of ironies when someone thinks the wearer is *actually* on fire, douses them, and the LiPo battery powering the whole thing bursts into flames. ;)
Shut up and take my money! lol
If wearing a furry vest isn’t flaming enough…
The 80’s are back and they gonna style yo hair whether you like it or not!
I’m imagining a cyber-goth furry club and it hurts my head.
Nicely done! Looks like we had similar inspirations. I was one of the core team members that developed the Tactile Plasma suits for Burning Man back in ’11. Flames and plasma go well together!
This is by far the smoothest implementation I’ve seen from outside of our own suits!
Have you looked into the OctoWS2811 library for using the DMA to output your precise data latches? It’s possible to output 8 LED lines at a time. So at 30uS per LED you’re looking at an FPS of up to ~567FPS (470LEDs/8 updated @ 30us per LED), if you can feed the data quick enough ;)
I would look into A123 cells (if you’re shy of full Lipos) for your powering system. They’re VERY robust and available cheaply from used drill batteries and such. Even then an over-current detector with a relay inline with your power system might be a good idea. Furry LED fires (the hot, hot kind) are not an enjoyable experience.
Water will be an issue, sweat, beer, club and dance scene scenarios. You will be raging at BM, you know how toxic that place is for electronics! Be sure to conformal coat, or epoxy/hotglue/silicone dip your vulnerable boards, and double up any reinforcements on wire connectors and sharp bends. clothing flexes an unbelievable amount!
Great job!
Steve
THanks Steve.
Octows2811 is certainly powerful, and so geared for large square arrays of LEDS, and requires a data source of some kind, or some compled packet assembly.
For just 470 lights, which can update faster than the SD card can return a frame of data, it was many fold less complex to just bang out data sequentially. 25fps is plenty, teensy can get 31 off the sd card.
There is no regulator, rather I chose electronics that can tolerate wider voltages (5.5v – 3v) as the battery runs down. Less hardware = less points of failure, so it is built as minimal as possible.
The vest is built “Playa Proof”, being waterproof enough to be thrown into the wash (minus the controller), and accessible for repair via a zipper along the bottom.
The lights are covered in dual-walled heat shrink, with additional silicone on the ends. Power injection wires are over spec’d, and there is a 10 amps fuse on the battery.
Fur sold in Australia needs to be somewhat low combustible to meet retail standards, though I have practised getting it off in a hurry none the less.
The inside is lined with slippery lining so it wont get caught when I reach around suddenly to grab the bars after loosing my footing up on the top deck of robot heart at 4am.
Finchronicity – Amazing work – this was definitely a project done right start to finish rather than a weekend hack. I can’t wait to see it on the playa!
I’m very curious how you did the video mapping / storing on the SD card… could you elaborate on that?
I’ve done a couple larger scale projects with 2811’s and I have always just coded basic animations (a thankless job) or used a PC to feed each frame for more complicated effects. I’d like to do some smaller projects that don’t need a computer but still have intricate video mapped effects. Any help you could lend would be very much appreciated!
Hi Dylan,
Saving the data to a file starts in a byte array buffer (because its faster to just write the file once at the end)
I likely do it the same as your pc feed, simply copying the red green and blue bytes to the array[0], array[1] and array[2] locations. Then the second pixel goes in array[3], array[4] and array[5] locations.
They just bump up end to end, red green blue, pixel by pixel, frame by frame.
The total file length is ( (470*3) * Number Of Frames)
To get the data off the file I just keep caling file.readByte(), which self increments each time you call it.
The only dependency’s are that the COUNT of led’s is the same in he renderer and the playback code, and that the colours are stored in the same order as they are played back.
More info on my blog:
http://www.ominal.com/ledvest.html
Here are the important parts of the code:
(More here https://github.com/finominal/LedVestPlayFromSDFileSelect )
#include
#Include
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDCOUNT, DATAPIN, NEO_GRB + NEO_KHZ400);
File myFile = SD.open(“10.led”);
while(file.Open)
{
for(int i = 0; i< LEDCOUNT; i++)
{
strip.setPixelColor(i, GetOneLedDataFromFile(myFile));
}
strip.show();//display all the leds in this frame
}
uint32_t GetOneLedDataFromFile(File file)
{
uint32_t result;
result = file.read(); // = 0x000000rr
result<<=8; // shift 8 bits = 0x0000rr00
result |= file.read(); // = 0x0000rrgg
result<<=8; // shift 8 bits = 0x00rrgg00;
result |= file.read(); // = 0x00rrggbb
return result;
}
Also, the mapping magic comes from creating an INDEX, that contains the X-Y co-ordinates of each LED.
Imagine spreading the vest out on a table, then map the X and Y location of each LED.
An index is in the order that the lights are placed sequentially on the vest.
[ LED(0,0), LED(0,1) LED(0,2)….LED(32,18) ]
To get the video pixels, iterate the LED index, and get the corresponding XY pixel form the video
foreach(var led in LEDARRAY)
{
Pixel pixel = frame.getPixel(led.x,led.y);
byte red = pixel.red
byte green = pixel.green
byte blue = pixel.blue
//write bytes to buffer
}
Excellent foresight :)
I had not considered the SD card in the frame rate issues. I’ll keep an eye out for ya on the playa, I’m sure you’ll be getting plenty of attention!
For Plasma…I have seen a 16mhz arduino pushing plasma to about 500 lights at a really fast frame rate…(i got 1 fps)
I am currently working out how to make my algorithm faster so I can do it real time off teensy 3….with some tactile responses from sound…or some other sensor…
Yeah, some other sensor…
Hence Tactile.
That fire and plasma balls I’ve seen before… Upclose, hell even created for the first time on fur.
Get some OG content while your at it.