Although the Sunstar Back to the Future 1:18 DeLorean models are awesome on their own, I really wanted to hear sound bites from the movies and see some fire under the tire action every time I walked by my display case. Using the Arduino and Adarfruit Wave Shield, I can play music and quotes from the movies with the push of a button. In addition, I installed several LED lights underneath the models and hacked an Under-Cabinet Light so that it can be controlled by my Arduino. Not only does my setup play sound, LEDs light up the DeLorean from the corresponding clip. Right now my system plays 13 different clips taken from all three movies. The grand finale is a fully choreographed light show to the BTTF theme song! Check out my videos to see it in action!
This does not necessarily have to be used for BTTF model cars. You can use these same techniques to add lighting to any model car display case. Also, you can add sound clips from any tv show or movie to complement your particular model on display.
You will need basic soldering skills and general knowledge of LEDs, buttons, and transistors for this project. The wave shield and breadboard power supply kit need to be soldered. Feel free to ask me any questions if you need more detail or clarification on something.
What you Need:
-Sunstar BTTF models!
-Imex Showcase Black Base
-Imex Showcase Clear Base
-Trumpeter 1/18 Display Case (Optional)
-Rite Lite Four Head, LED Under-Cabinet Light
-BTTF Sound Bites
-Any Arduino. I used a Diecimila, but any will do. It might be nicer to use a Mega since it has more pins with PWM for fading the LED lights.
-Adafruit Wave Shield for Arduino Kit
-Barrel connector for Arduino
- Power Adapter
-Metal Pushbutton with Blue LED Ring – 16mm Momentary
-9 Blue 5mm LED
-14 Orange 5mm LED
-Adafruit Adjustable breadboard power supply kit
-5 2N2222 NPN Transistors
-Drill and Drill Bits
Step 1: Hack the Overhead Spotlights
These LED Under-Cabinet lights by Rite Lite are really cool and easy to hack so that you can control with an Arduino. First, unscrew the back cover of the light. Cut all the wires away from the main PCB in the light. Unscrew the PCB and remove this along with the power button. Also, remove the wires that connect the PCB to the battery holder. I have a couple of different version of this light so that is why there are two different colored lights pictured (one gray and one white). There should just now be one pair of wires coming from each light head. If you connect the + and - wires coming from the heads to a power supply, the LEDs will light up. You have a lot of flexibility here. All four of the lights can be controlled by one pin on the Arduino or each one can be controlled individually. For my display, I opted to control two light heads with one pin so that I had separate right and left overhead lights. Solder the + and - wires together from the two light heads that you want to control in tandem and then solder on extension wire long enough to reach your Arduino. Feed the wires through the vacated button hole.
I used my multimeter to measure the voltage and current going to each light head before and after it was wired to the circuit board. When the lights were connected to a +5V power supply with the circuit board removed, the current and voltage going to the LEDs was higher then what it was out of the box. I added two 8.2 Ohm 1 Watt resistors to each of the two power cables going to the lights to protect the LEDs. I used electrical tape to organize and rout the wires in order to make the light easier to install. I may make a separate instructable on the hacking of this style of light.
Once the light is wired up, mount it above the models using the hardware that comes with the light. Also, drill a hole in the back of the bookcase so that you can feed the wires up to your Arduino/breadboard.
Step 2: Wire the BTTF I Showcase
If you do not get diffused LEDs, you can diffuse them yourself by sanding each LED with fine grit sandpaper until they look hazy. I highly recommend this! Originally, I did not do this and the lights were way too bright.
Measure and drill 14 holes in the base for the orange (fire) LEDs. These should be in line with the tires. I also drilled holes for four blue LEDs for some extra effect. I installed these behind each tire so they are shielded from direct eyesight. Using an input voltage of 4.5V, the 14 fire LEDs have to be connected in a 2x7 array using 27 ohm resistors. The four blue LEDs have to be connected in parallel using 68 ohm resistors. Use hot glue to hold the LEDs in place.
Once this display case is wired and ready to go, drill a hole in the back of the bookcase to run the wires. Position the case on the shelf and run the wires to your Arduino.
Step 3: Wire the BTTF II Showcase
A plastic base came with the BTF III model on Railroad Track. Since I was leaving the car on the railroad track, the plastic base was perfect to hold up my BTFF II car in flying configuration. I hot glued it to the base of the display case. Once this was glued to the display case, I drilled five holes for the blue LEDs. One behind each wheel and one in the middle. Again, these blue LEDs have to be connected in parallel using 68 ohm resistors. Be sure to keep all wires and LED leads as flat as possible to the bottom of the case so it can rest on top of the BTTF I case.
Once this is wired, this case can sit on top of the BTTF I display case. I ran these wires through the hole that was drilled in the previous step.
Step 4: Wire and Install the Pushbutton
You can use any pushbutton, but I went with this particular button because it looks really cool and glows blue. The blue LED has a resistor built-in already for use with 3 to 6V. I wired the button in such a way that only 3 leads had to be connected to my Arduino. Split off the +5V wire and Solder to the + and NO1 leads on the button (see diagram). Solder the -Ground wire to the - button lead. Solder a signal wire (green in picture) to C1 button lead. Next, solder a 10k resistor between the -Ground and signal wires. Finally, use heat wrap and electrical tape to cover up all the exposed wire. There should just be three wires from your button that connect to the Arduino/breadboard which will allow for the use of the button as well as power the LED. Connect the + and - wires to a constant +5V pin and -Ground pins on the breadboard. These wires always need power! I connected the signal cable of the button to pin #7 on my Arduino.
Drill a hole in the shelf for the button to rest in. Also, drill a hole in the back of the bookcase so that you can feed the wires up to the Arduino.
Step 5: Optional - Make a Custom Display Case for BTTF III Car
The BTTF III model came with such a detailed base that I did not want to take it off and put it in a separate display case like the other models. I searched through a bunch of hobby stores, but I could not find a display case big enough to fit the base inside that was not overly large. The closest I found was the trumpeter 1/18 case, which was still a little too small, but it is bigger than the IMEX cases. I decided to sacrifice the Trumpeter and make a custom case using the Sun Star BTTF base and Trumpeter display cover. The cover is not long enough for the whole base, so I had to trim it with a Dremel tool. After a lot of guess and check, I got the cover to fit over the base.
Step 6: Wire and Program the Arduino
I used a radio shack adjustable voltage DC power adapter set to 6V to power everything. On the Adafruit breadboard power supply, I set the voltage of the adjustable rail to +5V. Instead of using a separate power supply or battery to power my Arduino, I powered it off of the breadboard power supply. I sacrificed a battery holder by cutting the barrel connector off of it. I soldered short pieces of solid core wire onto the end of the connector so that it could plug directly into the breadboard. I connected it to the unregulated voltage rail of the breadboard.
Because the LEDs draw so much power, transistors need to be used so that you can power them with the breadboard power supply. I used 2N2222 NPN Transistors from Radio shack. Connect the Pinout wires from the Arduino to the base of the transistors (center pin). A resistor needs to be added between the Pinout wires and the center pin of the transistors (see picture). Wire the collector pin (rightmost pin) to ground. Wire the positive lead of the LED wire to the +5V of the power supply. Wire the negative lead of the same LED to the transistor emitter (leftmost pin). Make sure that the flat side of the transistor is facing you. To determine what resistors to use I did a lot of experimentation to get the correct brightness and voltage/current to the LEDs. I used a combination of 480 ohm, 220 ohm, and 510 ohm resistors for this.
I wired the LEDs to the following Arduino pins:
#define fire 6
#define small_blue 16
#define big_blue 17
#define lights_left 18
#define lights_right 19
You need wav files to play on the waveshield. I got some of my sound clips from here:
I also grabbed some directly from the blu-ray discs using audacity. There is a great tutorial on Adaruit’s website on making and converting files for use with the wav shield. I would recommend checking it out if you are going to be making clips for the wave shield. I have attached all of the wav files that are used in program except for the BTTF I theme song. The theme song was too big to upload, but you can grab it from that website. If you dump them on the SD card that goes into your wav shield, my program will be able to call and play them. Right now I have 13 different clips set up. I use a case switch structure to cycle through the different clips.
I am using a cheap pair of logitech computer speakers. I bought ones that plug into a wall outlet for power since they do not get that loud when powered by the wave shield. There is a headphone jack on the wave shield for the speakers to plug into.
I took the wave shield sample code and picked out the parts that I needed to play a wav file. Be sure to use to use the playfile() command and not the playcomplete() command. You will not be able to execute other commands if you call playcomplete(). Playfile() on the other hand will let you drive the LEDs while wav files are playing. For example, if I wanted to play Remotecontrol.wav, I would use the command:
I am not the best programmer in the world, so I am sure my code can be improved. I did not use anything fancy to control the lights, just good ole’ delay() commands. It is really tedious work to synchronize the lights to music, but I have not found a better way. There is an example on the Adafruit website where lights can be illuminated automatically by the code depending on the volume of the audio, but it was not yielding good results for me. I also programmed a timer into the program that changes that state of the lights after a couple minutes of no activity (no one presses the button). I could not get the .ino file to upload so I put my code into a .txt file. Sorry, but some of my code did not save. The last 1/3 of the choreographed lights to the theme song is not in the code that I uploaded. I will try to redo this code when I get a chance.
Finalist in the
LED Contest with Elemental LED