loading
Picture of Animatronic Singing Pumpkins
This was an idea originally from a friend, that i have bumped to the next level.  The goal is to create singing/ taking pumpkins through the use of an Arduino and Vixen.  We will be using the "Generic Serial" port to align these two awesome resourses.  The Arduino will have to be plugged into a computer during operation, so a laptop is handy.  This is my first instructable, so please comment.

Here is the Finished Product: http://www.youtube.com/watch?v=jn0Bylw9blE&feature=plcp

 

You will need:

-An Arduino (I used an UNO)
-PCB Prototype Board
-Assorted headers (male and female)
-5V regulator
-.33uf capacitor
-.1uf capacitor
-3 resistors (~600 ohm)
-6 Bright LEDs (for eyes)
-Insulated Wire
-9V battery clip
-9V Battery
-3 styrofoam pumpkins (I used decorative ones from michaels, though we had to hollow them out ourselves)
-3 Servos
-3 plastic knifes
-3 small hinges (I used 1.5'' and 2'')
-Masking and electrical Tape
-Arduino Software
-Vixen Software

Tools

-Hot Glue Gun
-Soldering Iron
-Box Knife
-Carving Tools(if pumpkin isn't hollow)

 
Remove these adsRemove these ads by Signing Up

Step 1: Wiring the Servos/Adruino

Picture of Wiring the Servos/Adruino
Front View of Board.JPG
Back View of Board.JPG
The Arduino will not have enough power to run 3 servos at one time.  For this reason, we must use external power, in my case, a 9 volt battery.  Servos function between the range of 4.8 and 6 volts, so i use a 5 volt regulator to be sure not to overload the servos.  Regulators require capacitors to function properly, so i have accounted for that in my schematic.  Make sure that the grounds from both the battery and the arduino are attached!  From my pictures, you can see that I do not have much on my prototyping board.  This is because i use headers.  This is for my convenience.  I can unplug power, the Arduino, the servos, and the LEDs quickly because of this.

Step 2: Carving The Pumpkins

Picture of Carving The Pumpkins
DSCN0338.JPG
DSCN0340.JPG
Now for the creative part.  The pumpkins we have were Styrofoam and solid.  This required us to cut them in half, horizontally, and hollow out the insides.  Then we painted the insides orange.  The cut you make when cutting in half will be the shape of the mouth, so plan ahead.  

For the eyes, we didn't carve all the way through to the inside.  After they were cut, we painted the eyes black.  Then We drilled/poke holes through where we wanted the LEDs to be.

Install Small hinges at the back of each pumpkin.

Step 3: Making a Box

Picture of Making a Box
DSCN0351.JPG
This is where you design the base on which your pumpkins will be sitting.  I made a box using plywood for the top and bottom, and 1x2s for three of the sides.  This is where my arduino, board, and battery will sit while in use.  The 4th side was left open for easy access.  We next made steps out of some sound reducing material I had laying around, though Plywood would Work just fine.  Then, we Spray painted the base black, and screwed the pumpkins on into there proper place.  

Step 4: Installing the Servos

Picture of Installing the Servos
We installed our servos on there sides(with hot glue), and hot glued plastic knifes onto them, with excess hanging out for when the mouth opens.  Feed the wires out the back of the pumpkins.  Plug the wires into your homemade board, and hook the Arduino up to it using PWM pins 3, 5, and 6.  Hook the battery up, and double check that the grounds of the arduino and battery are connected in some way.  

Step 5: LEDs

The LED's are fairly self explanatory.  Basically, drill a hole into each eye of each pumpkin, slightly smaller than the LED itself.  Push the LED in through the inside of the pumpkins, and route the wires along the top of the mouth out through the back, and off to your board.    Pictures coming soon.

Step 6: Programming

Okay, so your setup is now complete.  Now its time to make them talk.  Make sure you have both Arduino and Vixen installed on your computer.  Knowing the basics of the arduino language will help a lot.

You will need to start a Vixen Profile specifically for this application.  I suggest 8 channels, as that is what .
 Once setup, adjust the program angles to your pumpkins, as noted in my program.  Default is 45.

Here is the Program that I run, though feel free to experiment with your own:

/*
  This code runs vixen through the arduino, usining pins 3, 5, and 6 with
  3 seperate servos; pins 9, 10, and 11 are used for 3 LED circuits with PWM;
  pins 12, 13 are extra digital pins. 
*/

#include <Servo.h>
Servo Pumpkin1;
Servo Pumpkin2;
Servo Pumpkin3;
int pos = 0;

int Chan1 = 3;     //PWM-Servo 1
int Chan2 = 5;     //PWM-Servo 2
int Chan3 = 6;     //PWM-Servo 3
int Chan4 = 9;     //PWM-Light 1
int Chan5 = 10;    //PWM-Light 2
int Chan6 = 11;    //PWM-Light 3
int Chan7 = 12;     //extra
int Chan8 = 13;    //extra



int i = 0;     // Loop counter
int incomingByte[8];   // array to store the 25 values from the serial port
int val1;
int val2;
int val3;

//setup the pins/ inputs & outputs
void setup()
{
  Serial.begin(9600);   // set up Serial at 9600 bps

  pinMode(Chan1, OUTPUT);
  Pumpkin1.attach(3);
  pinMode(Chan2, OUTPUT);
  Pumpkin2.attach(5);
  pinMode(Chan3, OUTPUT);
  Pumpkin3.attach(6);
  pinMode(Chan4, OUTPUT);
  pinMode(Chan5, OUTPUT);
  pinMode(Chan6, OUTPUT);  
  pinMode(Chan7, OUTPUT);
  pinMode(Chan8, OUTPUT);
}

void loop()
{  // 8 channels are coming in to the Arduino
   if (Serial.available() >= 8) {
    // read the oldest byte in the serial buffer:
    for (int i=0; i<9; i++) {
      // read each byte
      incomingByte[i] = Serial.read();
    }
    //Pumpkin1
    val1 = incomingByte[0];                  
    val1 = map(val1, 0, 255, 0, 45);    //Change the last number according to how far you want the pumpkin to open.
    Pumpkin1.write(val1);                   
    delay(15);                            
    //Pumpkin2
    val2 = incomingByte[1];
    val2 = map(val2, 0, 255, 0, 45);    //Change the last number according to how far you want the pumpkin to open.
    Pumpkin2.write(val2);
    delay(15);
    //Pumpkin3
    val3 = incomingByte[2];
    val3 = map(val3, 0, 255, 0, 45);     //Change the last number according to how far you want the pumpkin to open.
    Pumpkin3.write(val3);
    delay(15);
   
    analogWrite(Chan4, incomingByte[3]);      //Light 1
    analogWrite(Chan5, incomingByte[4]);      //Light 2
    analogWrite(Chan6, incomingByte[5]);      //Light 3
    digitalWrite(Chan7, incomingByte[6]);       //Extras
    digitalWrite(Chan8, incomingByte[7]);       //Extras
   }
}

Step 7: Final Touches

Make your pumpkins look their best.  At this point, I needed to touch up the paint, both on the foam and the pop sickle sticks(which replaced the plastic knives half way though).  I also covered the servos with orange felt to make them more aesthetically pleasing.  The options are endless, make them awesome.  

Step 8: Get Working

The setup of the pumpkins is now complete.  Time to program the songs using vixen.  This step will take a while, but is totally worth it.  Enjoy!



fadecomic10 months ago

This is cool, but the video has been blocked due to copyright violation. Wish I could see it in action!

Great project. I am attempting this but seemed to have bit off more than I can chew.

Did you use Vixen 2.0? I just learned how to use Vixen 3.0, but need to figure out how to get it to work with the Arduino. Any tips?
GSRVAhiker17 (author)  casanova_zeus1 year ago
Hey!

I did use vixen 2.0 with these pumpkins. I am currently separated from my Arduinos and pumpkins, but I did just install vixen 3.0 on my computer to see if I could help. My Arduino Code uses the generic serial protocol. So, If im looking at this right, when you open vixen 3, you will want to press "configure controllers," then "add new controller," and click on Generic Serial. Then, back on the "controllers configuration" page, you should be able to add the proper # of channels. Clicking on "configure Controller," you should be able to choose the same port that your arduino is plugged into, and it should work!

As I said, I am not to familiar with this software, and this is a shot in the dark. Hope it helps! Let me know how it goes!
Thanks for taking the time to look into this. I was able to figure it out and get everything working correctly. Your thoughts above were correct, btw.

I needed to change the baud rate to 57600 though. It didn't work correctly with 9600 for me.

I am at the point of getting the servos mounted correctly. This has been an educational challenge each step of the way but well worth it.

thanks again.

Dave
cmcpherson2 years ago
Thanks for the great project idea. Here's my stab at it. http://www.youtube.com/watch?feature=player_detailpage&v=r24157lUlvw

I found I had to rearrange the pins... the servo.h library disables PWM on pins 9 and 10, even if there are no servos there, so I moved two of the servos to pins 9 and 10, then I was able to modulate the brightness of all the led's.

I also used dubro hinges for radio control airplane control surfaces and some control horns on the backs of the pumpkins so the insides of the mouth look a little cleaner.

Really had a blast working through this. Can't wait for Halloween! Thanks again for the excellent job.
GSRVAhiker17 (author)  cmcpherson2 years ago
Looks Great! I had the idea of putting the Servos behind the pumpkins after the fact, but decided to put it off till after Halloween, in case I screw something up. And thanks for pointing out the detail in Pins. I could not figure out why PWM was not working in my test.

Thanks again, your pumpkins look awesome!
kurtee2 years ago
Very nice!
Care to share your sequence file for us beginners?
nhughan2 years ago
Super tight. Nice job on the pumpkins. Also good idea on the background. The pumpkins standout even more so with that background. Good job.