My adorable, ten-year-old Niece has recently taken up the violin. She is a big Star Wars fan (runs in the family) and recently learned to play some music from the movies on her violin. She recently asked me to make her a special violin bow that lights up like a lightsaber.
I wanted a good quality, but inexpensive bow so it would last a while. I consulted her teacher (my brother) and he recommended any wood or plastic bow that had real horse hair. A quick Amazon search revealed this: ADM 1/2 Half Size Well-Balanced Brazilwood Violin Bow with Horse Hair, Ebony Frog with Pearl Eye and Pearl Slide, Nickel Silver Mounted. The price was less than $20 USD – just what I was looking for!
When I first pulled to bow out of the box, I thought it was badly warped and was ready to send it back. However, after some tinkering, I learned that the screw on the end gives tension to the frog which brings the bow strings tight and corrects the warp in the wood. Whew! Crisis averted.
The iconic lightsaber in the Star Wars series is well known for its ability to be activated and deactivated by the press of a button. The glowing blade appears to grow out of the hilt in an animated fashion – that effect was my goal for this project. I did not want a basic on/off switch – I wanted it to be animated to give the appearance of activation and deactivation.
The lightsaber is also well known for its sound effects. While this would have been fun to build in, I was highly constrained to fit the electronics and still keep the bow functional. Also, I thought any sound might distract from the music made by the violin. If she really wants sound, I guess she can just make it with her mouth.
I’ve used analog LED light strips in the past for many projects. However, that type of LED strip is an on/off model and not individually addressable to allow the required animation, so I eliminated that as an option. I then found the Adafruit DotStar Digital LED strip. It was similar to other LED strips , but it had individually addressable RGB LEDs that were controlled via a tiny microcontroller inside each LED pixel – wow! A simple 2-wire SPI interface was needed to control all the RGB LEDs in the strip. I bought the black version (blended better with the bow) and chose the 60 LEDs per meter for improved light density. They cost less than $30 USD per meter, so really not too bad.
Unfortunately, the DotStar is only available with RGB LEDs. I only needed red LEDs for this project, so this was kind of overkill. I guess I could always reprogram the Arduino to use a different colour if my niece ever decides to come to the light side of the force.
I was pleasantly surprised to see that the DotStar strip runs on only 5V. I knew the power source was going to be a challenge, and NeoPixels require 12V, so this was very helpful in addressing the power challenge. Each RGB LED consumes 60 mA peak (assuming all 3 LEDs are on at 100%). Since I was only using one of the three LEDs in each pixel, I would only consume 20mA per pixel. Later, I decided to use the PWM settings to run the pixels at 75% brightness which still gave me good light and extended the battery life.
15 mA (Red only, 20mA at 75%) x 31 LEDs = 465 mA + 7mA for Arduino = 472 mA
The SparkFun Arduino Pro Mini is my go-to micro-controller for wearable and embedded tech. It’s one of the smallest boards available and also the least expensive. I prefer the 5V/16MHz version since most things I control are also 5V. I wrote a simple sketch to control the on/off animation of the DotStar LEDs with the press of a momentary button. The Adafruit libarary for the DotStar + the example code that came with it made this a quick and easy task.
Here is a link to the source code
As I mentioned earlier, powering this was the biggest challenge. I needed to provide a power source that was portable, light weight, and could be mounted in a way that did not interfere with the bow being held.
I started by re-educating myself on the proper way to hold a violin bow – this video tutorial was helpful. I found that the fingers grasp the bow along the top and back. That left the bottom of the frog and front side of the frog for mounting electronics and the battery. After some trial and error, I settled on attaching the battery on the front, and the Arduino on the bottom of the frog.
Next, I evaluating some options for the power source. I needed 5V and about 500 mAh in order to get about 1 hour of life out of the bow. I first considered using coin cell batteries like a pair of CR2032. However, initial tests saw these batteries drained within 15 mintues, so that would not work. Next, I considered 3 x AAA batteries. This gave me good power and good light for more than the duration I needed, but it was very difficult to mount such a large battery case onto the bow – it was heavy and cumbersome. Big problems.
After much searching, I came across some rechargeable LiPo batteries – these are flat, rectangular batteries that are light weight and high capacity. Only problem is that an 1S LiPo battery only gives me 3.7V and a 2S LiPo battery was too big. I tried it on the breadboard with the Arduino and the DotStar and to my surprise, it worked fine. Luckily, the proliferation of toy drones has resulted in lots of vendors providing small 1S LiPo battery packs. I had a wide choice of battery dimensions and capacity. I found this one which fit my needs nicely. It came with 5 batteries and a charger and cost less than $13 USD – great deal. I really didn’t need 5 batteries, but I figured it couldn’t hurt to have spares.
One of the reasons I picked the battery that I did was because it comes with small extension wires to connect the battery to the charger. I was able to use one of those and cut off one end – this gave me the ability to solder it directly to the Arduino and have an easy connector to plug in the battery. Due to the severe space limitations, I decided that the plug could give me an excuse not to have an on/off switch for the battery. When plugged in, the Arduino is running. The button controls the LEDs, but even when the LEDs are off, the Arduino is pulling a tiny amount of current that will eventually drain the battery. Simply unplugging the battery was the easiest way to solve that problem and the molded connectors made that process easy.
Mounting the battery was another challenge. I needed it to be removable so that it could be charged or replaced. I selected industrial Velcro which has really strong adhesive and easily held the battery in place with minimal wiggle during use. I had to configure the battery to hang off the back of the bow a bit in order to keep it out of the way, but it is not cumbersome.
- I unscrewed the bow’s frog in order to get easier access to the inside of the bow and make sure I didn’t get glue on the horse hair
- I cut the DotStar strip to match the length of the bow – turned out to be 30 pixels.
- I peeled off the rubber housing for the DotStar so I could just work with the strip itself
- I used a small segment of the DotStar’s rubber housing and put it inbetween the DotStar strip and the Nickle silver mount in order to prevent a short circuit.
- I used some E6000 glue to glue the back of the DotStar strip to the bow’s wood frame
- I used small elastic bands (from the orthodontist) to reinforce the connection to the bow. I put 1 elastic band in between each pixel, and doubled them up on the ends.
- After the glue was mostly dry, I applied a bit of pressure on the DotStar strip and got it to curl a bit to form to the rounded bow frame. This made it look much better.
- I re-attached the frog and tightened the screw on the end of the bow to make it tight. After applying the electronics, I would not be able to remove the frog, so I made sure it was tight and secure
- I used E6000 to glue the Arduino Pro Mini onto the bottom of the frog
- I used E6000 to glue the momentary push button onto the bottom of the frog, close to the connection to the wood – out of the way, but still easy to use.
- After confirming everything was working, I used black Gorilla Tape to cover everything. I like this stuff better than Duct Tape (blasphemy, I know) because it has better adhesive. The black tape looked really good with the black DotStar.
I’ll be giving this as a birthday gift to my Niece soon, so I hope she likes it. Some lessons learned:
- Battery life was much better than I calculated. I was expecting about 1 hour of light before the battery became too weak (taking into account the fact the Arduino and DotStar wanted 5V and I was only able to give it 3.7V max with the 1S LiPo). In fact, after 1 hour, the LEDs were still at 50% brightness (recall, they started at 75%). After 90 minutes, they had dimmed to 25% brightness. After 2 hours, they were less than 10% brightness. It finally died after 2.5 hours. After a quick recharge of the LiPo, it was back to normal brightness.
- The toy drone battery was a great find, and I’m relieved that it worked out so well. One thing I’m always concerned about is safety around LiPo’s. I was glad to see the molded 2-pin connector only allowed the battery to be plugged in with the proper polarity. This helped to protect the Arduino and LEDs, and also ensure that the LiPo would be charged properly and not explode/catch fire.
- The tape helped hide the elastic bands (necessary, but unsightly) and gave extra security to the DotStar strip. I used small strips of the tape to wrap the wires and also cover the Arduino.
- My only concern – she chose red. I really need to work on recruiting her over to the light side.
Overall price for this project was about $75 USD. Totally worth it to see the joy on my Niece’s face. Hopefully, it will encourage her to continue to play Violin for many more years.