Hello, I’m the Doctor.

Halloween is my absolute favorite holiday and I’m always on the lookout for low cost costumes I can piece together at Goodwill. While pondering a costume for this year my current obsession with Doctor Who quickly took over and my mind was made up.  

The only prop not easily found at Goodwill is the Doctor’s trusty Sonic Screwdriver (and where would The Doctor be without that?!). As I often do I turned to Thingiverse for help. Unfortunately for me was only a model for the 10th Doctor’s screwdriver and (not that I have anything wrong with “David Tennant”) I needed to remedy that.

Lucky for me the Google 3D Warehouse had a great design that fit my needs ALMOST perfectly, the only downside is that most things on the 3D Warehouse are not modeled for print (lots of non-solid shapes and the like). Putting my maker ingenuity to work I used this great model by BILL-BO-BAGENS as a reference and re-modeled it as a (mostly) solid printable model.

All it needed was a coat of paint after printing and my Sonic Screwdriver was ready for action. Now all I need is a jacket & bow-tie (after all, they are cool).

[thingiverse thing=32065]

Arduino powered Haunted Mansion Halloween

As I posted previously I wanted to put together a Halloween display emulating my favorite Disneyland/world ride of all time. Originally this was just going to be four heads on a table with the Haunted Mansion’s “Grim Grinning Ghosts” playing on a loop.

After I started learning to program my Ardunio this evolved into a photocell actuated video on demand Halloween display. I used an example I found on Arkadian.eu to control a Dell Mini 9 laptop using AutoHotKey. When the photocell switch it tripped the Arduino sends a serial signal to the Dell laptop which is converted to a keystroke by AAC Keys which in turn triggers the below AutoHotKey Script and finally plays back using VLC.

I had access to a industrial photocell switch (just like at Disneyworld!) which required an additional 12v power supply but I imagine this could be modified to work with a cheap ultrasonic or IR range finder.

This AutoHotKey script is running on the PC waiting for the “a” key to be pressed. When the key is pressed VLC launches full screen and ignores input for the duration of the video (60 seconds). It then closes VLC and waits to be triggered again.

Run, c:Program FilesVideoLANVLCvlc.exe -I rc "VIDEO_FILE_NAME"
Sleep, 61000 ; Pause for video to play, prevents triggering multiple times.
Process, close, vlc.exe ; Kill vlc and make sure it stays dead.

This Arduino sketch waits until the Photocell switch on pin 2 is tripped, then sends a serial character to the Dell laptop it’s connected to. It also ignores any input during video playback to avoid confusing the computer.

Serial Keyboard
Used to send keystrokes to a Windows PC running AACKeys.exe which
turns serial data into keystrokes. Best used in conjunction with
Examples and idea based on the work of http://www.arkadian.eu and
information from http://wwww.ladyada.net
TheNewHobbyist 2010 
// Initialize variables
const int buttonPin = 2;
const int ledPin =  13;
int buttonState = 0;
// Set inpout/output and start serial
void setup() {
pinMode(ledPin, OUTPUT);      
pinMode(buttonPin, INPUT);
// Main code loop
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {     
digitalWrite(ledPin, HIGH);
Serial.print("a"); // send key to PC to start video playback
delay(61000); // ignore input until video ends
else {
// turn LED off:
digitalWrite(ledPin, LOW); 

Here are the installation photos and video compilation (note: the audio is a little out of sync after uploading to youtube).

While we didn’t get too many trick-or-treaters this year the ones that stopped by after dark really enjoyed it. I’m really happy with the way this turned out and I recommend anyone new to Arduino give it a shot. It really wasn’t hard to put together and they payoff was great.

Arduino Powered Arc Reactor Part 2/2

So now that the hard part was over (writing the animation sketch for my Arduino) I started on the fun part, making the Arc Reactor a wearable Halloween prop.

About halfway through my build I found a great post on building a prop Arc Reactor on Instructables by msraynsford which used most of the same materials I had picked for my own. Great minds think alike I guess…

I picked up a rectangular PCB at Radioshack to mount my LEDs to. It seemed like a secure way to keep everything in place while wearing it, plus an excuse to brush up on my soldering skills. I used a scroll saw to cut the PCB into a 4 inch round. Then mounted the LEDs on the board spaced in an even ring (note: the extra LEDs pictured on the PCB would have resulted in my Arduino turned into a pile of slag and were removed). I also used this time to drill a couple of holes in my Altoids tins for holding my 9v battery and Arduino board.

Cutting PCB to size
4 inch round PCB
LEDs mounted in a ring

After cutting the PCB to size I soldered the LEDs and resistors to the board and some lengths of hookup wire so I could feed them directly into the board for testing.

I had my fingers crossed the whole time and as you can see from the video everything worked just as expected. Somehow I managed to do it all without soldering my fingers together.

Now that I had a working board I cut off the ends of an old serial cable and used the 8 conductor wire to extend the hookup wire. I added about 2 feet of wire or enough to reach the battery pack I planned on keeping in my pocket and wired a 9 volt battery to the Arduino board for power. I also hot glued the hookup wires into the outputs on the Arduino board. From what I’ve seen online this is the best semi-permanent way to make connections on the board and comes off with a little rubbing alcohol. Then fit everything snugly into my two Altoids tins so I could easily fit the battery and Arduino around in my pocket.

Ready for soldering
Just enough wires for the job

The modeling plastic I used comes in a container as small white plastic beads. When heated with hot water they turn transparent and mailable like a firm clay. As it cools it returns to a very hard white plastic. Since this happens fairly fast I wasn’t able to take any pictures of the molding process. I used items I had around the house with shapes similar to what I wanted to see on the faceplate and pressed the plastic around them. Then while the plastic was still warm I stretched it around the sides of the PCB and allowed it to cool. After cooling it held on really firmly to the board. I also velcro’ed a pocket on the inside of a t-shirt to hold the arc reactor while I was wearing it. The Arc Reactor and Arduino ran for over 8 hours on one 9 volt battery (I left it on over night so I’m not sure of the exact time).

Below are pictures of the finished Arc Reactor.

And the final video

Overall I’m pretty happy with how it turned out. I’m planning on taking what I learned and trying to get my hands on some laser cut metal parts for next year. I’d like the Arc Reactor to look as cool outside of the shirt as it did inside.

Arduino Powered Arc Reactor Part 1/2

After receiving my Arduino UNO and playing with it for a bit I realized I needed to pick a project with a goal if I really wanted to learn how to use it. Playing around with tutorials online is fun and all but I find trying to complete a project forces me to learn and retain a lot more information.

So after learning how to make LEDs blink, photocells collect data and piezo speakers buzz (thanks Adafruit!) I set my sights on a project with a due date one month in the future. Completion date? Halloween 2010.

Enter the Arc Reactor.

This seemed like a pretty reasonable project for an Arduino newbie considering it’s really just some glowing LEDs under a shirt. Plus who doesn’t like Iron Man?

So here’s my supply list…


    Arduino Duemilanove (I didn’t know how hot gluing would work and didn’t want to sacrifice my UNO)
    7 5mm White LEDS
    Rectangular PCB large enough to cut into a 4 inch circle
    Hook up wire
    Length of 8 conductor wire (I used an old serial cable)
    InstaMorph Moldable Plastic
    Bread board
    Resistors (150 ohm seemed to work OK)
    Altoid tins for battery pack/arduino holder
    Hot glue
    9v battery + battery hookups
    Gold craft wire
    t-shirt with an internal pocket

After collecting everything I needed for the build I started working out the Arduino code. This could have been accomplished without the Arduino and static lighting but it’s so much cooler with animated LEDs!

The idea was to mount 6 LEDs in a ring shape around a PCB with one LED in the center. The animation sequence I came up with looks like this.

    10 Scrolling LEDs (outer 6 only)
    20 All 7 on (for 60 seconds)
    30 Pulsing LEDs (outer 6 only)
    40 All 7 on (for 60 seconds)
    50 GOTO 10

I used the pulse with modulation (PWM) digital outputs on the Arduino to control the pulsing animation. There are only 6 outputs that support PWM so only the outer ring of LEDs pulse. Here’s a quick test video of the scrolling animation (note: I didn’t have any resistors after the LEDs. I don’t recommend this, despite what some websites say my Arduino was red hot after a few minutes).

The physical build of the Arc Reactor will be in a follow up post. I’ve included the code I used to animate the LEDs below. I’m sure this could have been done in a much more elegant way but I’m new to Arduino programming and it worked.

Tony Stark
Built this in a cave, with a box of scraps
TheNewHobbyist 2010
// Initialize Variables
int blinkCycle = 0;
int newLed[7] = {3, 5, 6, 9, 10, 11};
int i;
int fadeCycle = 0;
void setup() {         
// Nothing needed, config mode? blink all LEDs?
void loop() { 
if (blinkCycle == 6) { // Skip blink if t's already run 6 times
goto fade;
for (i = 0; i < 6; i = i + 1)  {
// Blink array in order
analogWrite(newLed[i], 255);
delay(200); // change for slower blinking
analogWrite(newLed[i], 0);
if (i == 6) // If finished array...
i = 0; // start over
blinkCycle++; // count times through loop
if (blinkCycle == 6) { // blinked x times already, LIGHT IT UP
analogWrite(newLed[0], 255);
analogWrite(newLed[1], 255);  
analogWrite(newLed[2], 255);
analogWrite(newLed[3], 255);  
analogWrite(newLed[4], 255);  
analogWrite(newLed[5], 255);    
delay (60000); // wait between animations
if (blinkCycle == 6) { 
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {  // fade in
analogWrite(newLed[0], fadeValue);
analogWrite(newLed[1], fadeValue);  
analogWrite(newLed[2], fadeValue);
analogWrite(newLed[3], fadeValue);  
analogWrite(newLed[4], fadeValue);  
analogWrite(newLed[5], fadeValue);      
for(int fadeValue = 255 ; fadeValue >= 10; fadeValue -=5) { // fade out
analogWrite(newLed[0], fadeValue);
analogWrite(newLed[1], fadeValue);  
analogWrite(newLed[2], fadeValue);
analogWrite(newLed[3], fadeValue);  
analogWrite(newLed[4], fadeValue);  
analogWrite(newLed[5], fadeValue);        
if (fadeCycle == 6) { // if faded x times LIGHT IT UP
analogWrite(newLed[0], 255);
analogWrite(newLed[1], 255);  
analogWrite(newLed[2], 255);
analogWrite(newLed[3], 255);  
analogWrite(newLed[4], 255);  
analogWrite(newLed[5], 255);    
delay (60000); // pause inbetween animations
if (fadeCycle == 6) {
blinkCycle = 0; // reset
fadeCycle = 0; // reset

First 3D head projection test

Receiving boxes from eBay is always a little bit like Christmas for me. My head was delivered over the weekend!

Whats in the boooooox!?
Nice to see you too

I’m using this YouTube video to calibrate and adjust my projector settings.

It went really well. So well in fact that I think I”m going to use a video including 4 of the five heads of the Haunted Mansion as the looping video on my porch for Halloween this year. I’ve got the following to do before 10/31.

  • Order 3 more styrofoam heads
  • Build something to secure heads in place (2×6 and some dowel rods?)
  • Make/buy a black fabric table cloth to cover the table used to hold the heads
  • Build a box to contain the projector and protect it from weather/curious hands
  • Figure out a speaker setup so people can actually hear the heads singing
  • Measure throw distance for the projector
  • Re-encode video to project at the correct size based on installation distance

Next weekend I’m going to attempt to measure out my installation site so I can adjust the video and projector distance accordingly. I imagine this is going to be the tricky part with lots of video resizing and re-encoding.

Below is a video of my single head test, looks pretty good!