Introduction: Neopixel LED Ring Based Lights for Santa's Sleigh
I am a member of the local Round Table and each Christmas we take Santa and his sleigh to the streets of Shirley collecting money for local charity's and give children a chance to meet Santa. Our sleigh was build over forty years ago and was in a sorry state, over the last 12 months we have started a complete renovation.
This Instructable focuses on the creation of a low power light fitting to replace incandescent lamp fittings that surrounded the sleigh. These were effectively bayonet pendant lamp holders sunken into holes in the side of the sleigh. They had three main drawbacks, high power consumption, they where fragile and last but not least the lamps got extreemely hot so there was a risk of children burning them selves when meeting Santa. Thankfully this never happened but it was felt it was time to build a replacement.
Step 1: Selecting an Enclosure
First step was to find a suitable enclosure. I originally considered using a low voltage waterproof down lighter with a led lamp. This would of been an option but it was going to be expensive and was not really the look we were going for. After a long search on the internet I hit on the idea of using the shell of a Land Rover Defender side light. These would fit in the existing holes, are cheap (we got them for £2.96 each), waterproof and would have the right look.
Step 2: The Prototype
The next stage was to build a prototype, I knew I want to go with neopixel rings for the light source and an Arduino based controller. I also wanted them to work stand alone but to be controllable as a set. Finally I want them to run from 12v as they need to be able to run from a car / leisure battery.
For the first prototype we went with just an Arduino and neopixel ring powering it off the Arduino. I was pleased to see that the lens gave the appearance of many more leds than were actually present. this can be seen in the video.
Once I was happy that fitting would have the effect I was looking for I turned my attention to how to fit everything in the enclosure. Due to space and cost considerations it was impossible to use a full blown Ardiuno so I decided to go with an ATTINY85, as there are several Instrucables already on how to add the boot loader and program them I will not describe this here.
Finally it was just a matter solving the issue of converting the 12v nominal power we had available to the 5v required. First I tried a standard 7805 regulator but found that without a sizable heat sink they quickly overheated. So I opted for a RECOM R-78E5.0-0.5 DC-DC converter which is a drop in replacement for the 7805.
Having spend some time testing and monitoring the power consumption I was happy that I had a working solution, see the schematic for details.
Step 3: Modifying the Enclosure
The next stage was to make a little more room for our electronics in the enclosure. This was a simple case of removing the spring contact for the lamp, the original wiring and cutting away the unneeded plastic. We opted to do this by drilling it away on the lathe but if you don't have access to one or are just making a could you could get away with cutting it off using a hacksaw. Either way you will need to file away sharp edges before re assembly.
Step 4: The Electronics
Due to pressing time constraints and with the simplicity of the circuit in mind. We decided it would be quickest and simplest to assemble the circuit on strip board. These were scored and snapped to size followed by filing to remove sharp edges. We then in the time honoured method broke the tracks as required by drilling and enlarged some of the holes to accept the gauge of wire we were using. We also drilled holes for a cable tie to add strain relief to the incoming cable.
Once the board was ready it was a simple task to solder the wire links, resistor, DC-DC converter LED and the socket for the ATTiny85. After that a quick test with the multimeter it was time to add the cable and load the software.
Step 5: The Software
A full Arduino would be too expensive. Using the ATTiny chips, with an Arduino Uno clone as the programmer, following http://highlowtech.org/?p=1695
Remember, from the factory the ATTiny85s fuses are set to 1MHz. You select the clock to 'internal 8MHz'
Any slower, and the chip can’t drive the NeoPixels. If you select External, the chip will be expecting an external clock source (i.e. a crystal), and wont boot without one
'Burn Bootloader' - this sets the fuses on the ATTiny
butchered the example from: http://shin-ajaran.blogspot.co.uk/2014/04/wearable-electronics-arduino-x-attiny85.html
The patterns looked good on their own, but as this a Christmas sleigh, we edited some of the patterns to be more Christmassy (red/green), and added one of our own - The red and green rotating pattern. We swapped the order of two of the patterns that were too similar. The patterns that only lit one LED per frame didn't have the visual impact we were looking for, so we removed them.
As Father Christmas (as we call him in rightpondia), shouldn’t be spending his time VJing LEDs, we added a cycle mode that would change to the next pattern after 30 seconds. However, it became apparent that the ATTiny chips were running at slightly different speeds. The pattern would change, but not simultaneously.
We had originally planned for the chips to communicate with each other via a MAX485+MODBUS RTU, but ran into problems. The ATTiny85 doesn't have a hardware serial UART, and the Adafruit NeoPixel library disables the interrupts required for software serial when sending data to the LEDs. This resulted in timing issues where the ATTiny could only recive data intermittently (between LED frames)
As time was running short, we changed the input syncing event to be a simple button push (pulling a pin low), and tied the lights to the same button.
However, the lights wouldn’t respond instantly to the button being pushed due to the delays and loops in some of the animations. There would be a delay on some of the patterns, so we added some code to break from animations early. This improved things somewhat, but hasn’t solved the underlying problem.
In order to re-sync the lights, we added a reset function. Rather than using the reset pin, we used rebooted the ATTiny in software following this example:
The reset is activated if the input button is held down for 4 pattern changes (about 3 seconds).
Step 6: Final Assembly
With the software loaded onto the ATTiny85 and it inserted into the socket it was time to connect up the cable with it fed through the gland and give it a test. Once its passed the fittings were screwed in to the sleigh and the LED ring hot glued in place, this had to be done after the rings were fitted as it obscured the mounting holes. With the lens in places a final test and all was good!
Step 7: The Finished Artical's
The finish devices, we built 35 in total, 30 for the sleigh plus 5 spares. As I right this the sleigh has been out for 14 nights and the lights have performed without fault. They draw on average 100mA at 12v which is considerably lower than the old incandescent lamps. In the future we make make a pcb for them but for now they have been a complete success.