Prom Dress Update!

After a solid week of working on the dress, it is finally finished. Eight addressable triac channels, 70ft of angel EL wire, 2600mAh of li-ion batteries, and one re-purposed DB9 cable later:

The dress

The dress itself had already been completed from the previous attempt. Twelve bands of aqua angel EL wire wraps around the dress between the solid white and sheer outer-most layer. Clear sewing thread was used to sew the wire in place every four inches or so but a thin white cotton thread would have been easier to use. Because the dress was sewn in panels, the EL had to pass through the seams. This in effect anchored the wire in place with the sewing just holding it in a straight line.  To keep the ends from passing back through the white layer, adhesive-coated heatshrink tubing was used to both seal the ends and keep it from passing through the hole. Using ribbon cable, one conductor from each strand of EL was bussed to point near the zipper in the back of the dress. The other conductor of each strand was daisy-chained to the same point near the zipper. A male DB9 serial cable was cut in half spliced into the strands. To fit the twelves strand in eight conductors, the top eight strands are split into four channels. The common side from the strands was attached to the remaining conductor. A small hole by the zipper was cut and the DB9 connectors pokes out through it.

The Controller

Test setup of the controller board.

Test setup of the controller board.

To take my beginner circuit fabrication skills out of the picture, I opted to use primarily premade boards. The biggest piece of the puzzle was the EL Escudo Dos by Sparkfun. Sporting 8 channels of opto-isolated triacs, it made switching EL wire as easy as switching LEDs. To reduce the footprint (and cost) I removed all the connectors and trimmed the board a bit. The audio signal comes from an Adafruit microphone pre-amp that claims sensitivity down to 20Hz. To process an FFT signal from the mic, a cheap Arduino Nano knock-off from Ebay was soldered directly to the EL Escudos. While Sparkfun makes a sequencer with an integrated microcontroller, I liked having the option to upgrade to my Teensy 3 if need be. Credit to  for the FFT code to give a power reading in the 35-735Hz range. In order to keep the EL inverter from being powered without a load to drive, an N-FET switches off power to the inverter when no triacs are active.

A power switch and switching 5.5mm jack is placed between the battery and the electronics. The switch cuts the ground to the electronics. The switching   jack is my favorite way to make sure the battery charger does not try to power the circuit while charging. In this particular jack, one pin is disconnected from ground when a jack is inserted, cutting off power to the circuit and leaving only the battery receiving power. The battery to be charged is a 11.1V li-ion pack with integrated PCM from BatterySpace.

Heating the acrylic in my toaster oven. Note the HF speed controller regulating the heating elements.

Heating the acrylic in my toaster oven. Note the HF speed controller regulating the heating elements.

The case was a result of my recent vacuum-forming experiments. First, a 6×10 square of .080″ acrylic was vacuum formed over the top of the controller electronics, inverter, and battery. After cutting away the excess, the edges were heated and flared a bit so that the innards could be removed. Holes for the microphone, USB and DB9 connectors, charging port and switch were milled into the top and all the loose hardware like the switch was glued and screwed in place. Once the entire controller assembly fit in the top case, another piece of acrylic was formed over the bottom of the assembly. Previous attempts assured me that the idea of a removable bottom would take far to long to make, this bottom piece essentially sealed the assembly closed. The only way to work on the internals would be to break off the bottom piece and form a new one, about an hour worth of work. While not the most elegant solution, the electronics are very safe within the surprisingly hard acrylic case.

The Code

The bottom acrylic formed over the assembly.

The bottom acrylic formed over the assembly.

As mentioned before, the code is largely based on Anatoly’s FFT code. The outputs to the triacs are initialized as outputs as is the NFET switch. An AGC (automatic gain control) filter is implemented to adjust for changing volume levels and the same type of filter removes any ambient noise. To keep the two filters from creating unruly gain levels, the ceiling of the AGC filter is kept above the noise filter by a certain amount. This precaution only really come into effect in a low noise environment.

One weirdness I ran into was the problem of detecting when the dress was actually connected to the controller. If the controller is activating traics but the dress is not connected, the inverter has no load and can be damaged. The easy way would be to use a spare pair of pins that pulls a pin on the nano to ground when the dress is connector. As the DB9 connector has exactly enough pins for the EL wire channels, an alternative had to be found.

Capsense is a pretty hot topic in the Arduino world with fun and interesting interfaces using capacitive touch sensing. By leveraging the Capsense library, I was able to detect the addition of the shield of the serial cable when the DB9 housing was used as a touch sensor. When the capacitive sensing was established to work, I lowered the number of samples taken by the capsense reading to lower the latency of the FFT refresh. Also, the check for an attached connector only activates every 200ms further increasing the refresh rate of the FFT.

The code I used can be found here: VUDress Please note a large part of this code is from Anatoly‘s Color Organ project.


This project has been a long time coming. It was a real learning experience for me, not only as an electrical engineer but as an engineer in general. Not setting unrealistic deadlines, working on successes instead of taking shots into the dark, the lessons really piled up. At times I know i did not do the right thing and I put strain on people who shouldn’t have been involved. For the longest time I could not bring myself to work on it after failing such a grand dream of mine. But after a night of diving into it, I knew I could make this right.

On a less personal note, the use of a MSGEQ7 instead of the FFT would have been a bit easier to work with. Gain adjustment might have been a bit harder to work around but FFT is a very daunting topic for those uninitiated. Refresh speeds, sampling frequencies, and a host of other variables seem to impact the frequency response. Fortunately a vest was wired up in a similar fashion as the dress; this may be my test bed for any future developments.



Be Sociable, Share!

4 thoughts on “Prom Dress Update!

  1. Pingback: rndm(mod) » VU Meter Prom Dress

  2. Pingback: VU Meter Prom Dress - RaspberryPiBoards

  3. Pingback: VU Meter Prom Dress — Blog of MPRosa

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>