Last year two separate friends came to me with ideas for light-up bow ties (I guess I have somewhat of a reputation). I decided that this was a good opportunity to make an easily reproducible, discrete, light-up bow tie design. This project is made entirely of LilyPad components and some custom firmware for the LilyTwinkle or LilyTiny. This project will document the basic tie design and give an overview of a couple example enclosures.
I have provided the code and basic schematic used to create these ties. If I re-visit this design for a future project I will create more detailed instructions on how to make your own light up tie.
Project Summary (TL;DR)This bow tie design is powered by 2 x CR2032 coin cells and has a power switch on one of the battery holders. The bow ties have eight modes which change every time the bow tie is power-cycled.
One of the two bow ties I created was a hollow leather bow tie. My friend (Sun Ray's Leather) came up with the idea and made the leather enclosure. I installed the electronics and applied the finish to the bow tie. The strap is magnetic and removable. All of the electronics except for the battery holders are contained inside the leather clam-shell enclosure. Here is a demo of the leather bow tie:
The fabric tie was made using a real bow tie, LilyPad sew-able components, and conductive thread. The components were sewed to the back of the bow tie pedals.
A link to the components used can be found in the "Things" section.
Design
The basic circuit used in this design is as follows:
The LilyTwinkle/Tiny controls the five LEDs using one GPIO each. The floating LED is actually connected to another pin on the microcontroller, but more on that later. For simplicity two series coin cells are used to power the circuit. Technically the voltage input to the microcontroller is a bit high but the firmware uses PWM to avoid exceeding the current limits of the pins/microcontroller. The PWM and resistors on the LED sequins should sufficiently protect the LEDs (although their life may be reduced).
HardwareModifications
You may have noticed that one of the LEDs has a floating connection in the schematic. This LED is actually connected to pin PB4 of the ATTINY85 that is on the LilyTwinkle/LilyTiny. To use this pin you must solder a fly wire on to the microcontroller pin since it is not connected to a pad on the LilyTwinkle. See the LilyTwinkle schematic for details of where to find PB4. I recommend stabilizing the wire with glue after soldering it to avoid damaging the LilyTwinkle.
LEDLayout
The led layout can be found in the source code:
The numbers in this diagram correspond to pin numbers on the LilyTwinkle PCB. Pin 4 is PB4 (The fly wire connected to the inaccessible pin).
Programming
Note: use commit "cf88c60" for this project. The subsequent commit changes the LED order in the source code for another project.
The source code can be found at the end of this project. The source code includes a hex file for programming. I won't go into details here about reprogramming the LilyTwinkle but here is a summary:
Sparkfun Instructions on reprogramming using Arduino
The above instructions are a good start for the hardware setup, but since the firmware is written C I did not use Arduino IDE to program the board.
I used "Avrdude", a command line interface tool from the WinAVR package to program the board. This is an example command I used to program the LilyTwinkle:
D:\Program Files\WinAVR-20100110\bin\avrdude.exe -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m -p attiny85 -c arduino -P COM8 -b 19200 D -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i -C "D:\Program Files\WinAVR-20100110\bin\avrdude.conf"
The above command will not work for you as-is. I recommend looking up a tutorial on how to reprogram the ATTINY85 using Avrdude. The key take-aways from the command above are:
- The fuse options should be the same as my command. These contain non-default settings about the clock speed of the microcontroller (-U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m).
- The part will stay the same (-p attiny85)
- The programmer options will depend on what programmer you're using. " -c arduino -P COM8 -b 19200 " was specific to my setup (an arduino uno configured to be a programmer).
- The hex file argument should be replaced with a path to the hex file included in my repository. "$(ProjectDir)Debug\$(ItemFileName).hex" was specific to how I was using the command (as an external tool in Atmel Studio).
- The rest of the command may change depending on your Avrdude install directory.
The leather tie was created using this blank made by Sun Ray's Leather:
First, I applied a leather prepper de-glazer to the bow tie pieces to remove any finish that was on the leather.
Then I used several coats of a brown leather dye to colour the bow tie brown. This is how the tie looked after the dye was applied:
I then applied neatsfootoil to the tie because the leather dye and de-glazer tend to dry out the leather.
Finally, I applied a satin leather top coat to the tie to finish the front and back surfaces.
Now it was time to assemble the electronics. I programmed the microcontroller with my firmware using an Arduino-based AVR programmer. The details of the code can be found in the code section below. The LilyTwinkle does not break out all of the pins I needed of the ATTINY85, so I soldered a small fly-wire to an inaccessible pin. I arranged the LEDs in the proper positions and used thin wire to create a free-form circuit in the shape of the bow tie interior.
To finish the tie, I soldered the power wires through the back of the bow tie to the battery holders. I made sure everything worked, then applied contact cement to the edges of the bow tie pieces. I carefully lined up the halves of the bow tie, and used several clamps to hold it in place while the cement cured.
The final step was to burnish the edges of the bow tie. Burnishing is a process that converts the rough leather edge to a smooth surface. I did this by wetting the edge of the leather and rapidly rubbing a wood tool across the edge. After all of the edges of the tie were smooth, I applied the top coat to the edges to seal the tie.
Fabric Tie AssemblyThe fabric tie was slightly more complicated than the leather bow tie to assemble because there was no enclosure to hide the electronics in.
First, I took the untied bow tie and poked a hole where the center LED would go. I used some white thread and a needle to stitch around the edges of the hole. I then tied the bow tie.
I repeated this process for the four other holes. After finishing all the holes, I glued the LEDs in position to make them easier to sew:
Finally, I carefully sewed the circuit together using conductive thread. I took extra care to make sure there would be no accidental shorts. The electronics are embedded in the two layers of bow-tie pedals so I had to use felt to insulate one layer from the next.
Comments