Even though the ESP8266 WiFi chipsets are really cheap (and can be somewhat challenging to work with), they still pack a lot of processing power. For instance, [Mr.jb.swe] took one of these modules and made a stand-alone live VU meter with WS2812B LED strip. The VU runs entirely on the ESP chip, without any additional microcontroller. It’s an example we think a lot of projects could follow to do away with unused horsepower (extra microcontrollers) sometimes used to avoid programming directly on the ESP. The stuff you can do with these modules is wild… did you see this WiFi signal strength mapping project?
The ESP chipset acts as a UDP client which receives packets from a WinAmp plugin that [Mr.jb.swe] wrote. The plugin continuously calculates the dB of whatever track is playing and streams it over WiFi to his ESP8266. He also mentions that the ADC of the ESP chipset could be used to sample audio as well, although that pretty much eliminates the need for WiFi.
The whole setup is very responsive even though the processor is parsing UDP messages, driving the WS2812 strip, and driving a small OLED display for debug—and it doesn’t even use a separate microcontroller. [Mr.jb.swe] also posted snippets of his code to get you started on your own project. Check out the videos after the break to see it in action.
Continue reading “A Real-Time Networked VU Running on the ESP8266″
[Charles] is on a quest to complete ever more jaw-dropping hacks with the popular low-cost ESP8266 WiFi modules. This week’s project is plotting WiFi received signal strength in 3D space. While the ESP8266 is capable of providing a Received Signal Strength Indication (RSSI), [Charles] didn’t directly use it. He wrote a simple C program on his laptop to ping the ESP8266 at around 500Hz. The laptop would then translate the RSSI from the ping replies to a color value, which it would then send to the ESP8266. Since the ESP8266 was running [Charles’] custom firmware (as seen in his WiFi cup project), it could directly display the color on a WS2812 RGB LED.
The colors seemed random at first, but [Charles] noticed that there was a pattern. He just needed a way to visualize the LED over time. A single frame long exposure would work, but so would video. [Charles] went the video route, creating SuperLongExposure, an FFMPEG-based tool which extracts every video frame and composites them into a single frame. What he saw was pretty cool – there were definite stripes of good and bad signal.
Armed with this information, [Charles] went for broke and mounted his ESP8266 on a large gantry style mill. He took several long exposure videos of a 360x360x180mm area. The videos were extracted into layers. The whole data set could then be visualized with Voxeltastic, [Charles’] own HTML5/WEBGL based render engine. The results were nothing short of amazing. The signal strength increases and decreases in nodes and anti-nodes which correspond to the 12.4 cm wavelength of a WiFi signal. The final render looks incredibly organic, which isn’t completely surprising. We’ve seen the same kind of image from commercial antenna simulation characterization systems.
Once again [Charles] has blown us away, we can’t wait to see what he does next!
Continue reading “Mapping WiFi Signals in 3 Dimensions”
With only a week left until Valentine’s day, [Henry] needed to think on his feet. He wanted to build something for his girlfriend but with limited time, he needed to work with what he had available. After scrounging up some parts and a bit of CAD work, he ended up with a nice animated LED Valentine heart.
[Henry] had a bunch of WS2812 LEDs left over from an older project. These surface mount LED’s are very cool. They come in a small form factor and include red, green, and blue LEDs all in a single package. On top of that, they have a built-in control circuit which makes each LED individually addressable. It’s similar to the LED strips we’ve seen in the past, only now the control circuit is built right into the LED.
Starting with the LEDs, [Henry] decided to build a large animated heart. Being a stickler for details, he worked out the perfect LED placement by beginning his design with three concentric heart shapes. The hearts were plotted in Excel and were then scaled until he ended up with something he liked. This final design showed where to place each LED.
The next step was to design the PCB in Altium Designer. [Henry’s] design is two-sided with large copper planes on either side. He opted to make good use of the extra copper surface by etching a custom design into the back with his girlfriend’s name. He included a space for the ATMega48 chip which would be running the animations. Finally, he sent the design off to a fab house and managed to get it back 48 hours later.
After soldering all of the components in place, [Henry] programmed up a few animations for the LEDs. He also built a custom frame to house the PCB. The frame includes a white screen that diffuses and softens the light from the LEDs. The final product looks great and is sure to win any geek’s heart. Continue reading “Animated LED Valentine Heart”
Whether you call them individually controllable RGB LEDs, WS2812, or NeoPixels, there’s no denying they are extremely popular and a staple of every glowey and blinkey project. Fresh off the reel, they’re nearly useless – you need a controller, and that has led to many people coming up with many different solutions to the same problem. Here’s another solution, notable because it’s the most minimal WS2812 driver we’ve ever seen.
The critical component in this build is NXP’s LPC810, an ARM Cortex M0+ in an 8-pin DIP package. Yes, it’s the only ARM in a DIP-8, but still able to run at 30MHz, and hold a 4kB program.
JeeLabs is using the SPI bus on the LPC810 to clock out data at the rate required by the LEDs. The only hardware required is a small LED to drop the voltage from 5V to 3.3V and a decoupling capacitor. Yes, you could easily get away with this as a one-component build.
The build consists of a ring of sixty WS2812b RGB LEDs, and the chip dutifully clocking out bits at the correct rate. It’s the perfect start to an LED clock project, an Iron Man arc reactor (are we still doing those?), or just random blinkey LEDs stuffed into a wearable.
Thanks [Martyn] for sending this one in.
[Jordan] has been playing around with WS2812b RGB LED strips with TI’s Tiva and Stellaris Launchpads. He’s been using the SPI lines to drive data to the LED strip, but this method means the processor is spending a lot of time grabbing data from a memory location and shuffling it out the SPI output register. It’s a great opportunity to learn about the μDMA available on these chips, and to write a library that uses DMA to control larger numbers of LEDs than a SPI peripheral could handle with a naive bit of code.
DMA is a powerful tool – instead of wasting processor cycles on moving bits back and forth between memory and a peripheral, the DMA controller does the same thing all by its lonesome, freeing up the CPU to do real work. TI’s Tiva C series and Stellaris LaunchPads have a μDMA controller with 32 channels, each of which has four unique hardware peripherals it can interact with or used for DMA transfer.
[Jordan] wrote a simple library that can be used to control a chain of WS2812b LEDs using the SPI peripheral. It’s much faster than transferring bits to the SPI peripheral with the CPU, and updating the frames for the LED strip are easier; new frames of a LED animation can be called from the main loop, or the DMA can just start again, without wasting precious CPU cycles updating some LEDs.
Tired of balls that are just balls, and not glowing geometric constructions of electronics and wonderment? Get yourself an IcosaLEDron, the latest in Platonic solids loaded up with RGB LEDs.
The folks at Afrit Labs wanted a fun, glowy device that would show off the capabilities of IMUs and MEMS accelerometers. They came up with a ball with a circuit board inside and twenty WS2812B RGB LEDs studded around its circumference
The frame of the ball is simply a set of twenty tessellated triangles that can be folded up during assembly. The outer shell of the ball is again printed in one piece, but fabricated out of transparent NinjaFlex, an extraordinarily odd, squishy, and likely indestructible material.
Inside the IcosaLEDron is a PCB loaded up with an ATMega328p, an accelerometer, a LiPo battery charger, and quite a bit of wiring. Once the ball is assembled and locked down, the squishy outer exterior is installed and turned into a throwable plaything.
If 20 sides and 20 LEDs aren’t enough, how about a an astonishing 386-LED ball that’s animated and knows its orientation? That’s a project from Null Space Labs, and looking at it in person is hypnotic.
[Tim] discovered a simple way to measure the length of WS2812 addressable LED strips from a microcontroller. This is great for any project that can have an arbitrary length of addressable LED strip attached to it.
The simplest (and perhaps most reliable) way to measure strip length is by feeding the serial output pin of the end of the strip back to the microcontroller. The microcontroller keeps clocking bits into the strip until it receives data from the end of the strip. [Tim] didn’t want to run an additional signal to the end of his strip, so he found another solution.
[Tim] used the ADC of his microcontroller (an ATtiny) to measure supply voltage droop as LEDs are turned on. Each LED draws around 60mA at full brightness, so [Tim] sequentially turned on each LED and watched the ADC for slight voltage changes. If the voltage changed, there must be an LED at that address. [Tim] does note that this method is extremely dependent on the power supply used and only works on short strips. Check out his blog post for more details.