Project tutorial
How to Build an Arduino-Based Santa Claus for Christmas

How to Build an Arduino-Based Santa Claus for Christmas © LGPL

Make a Santa Claus that talks, sings, and takes selfie photos whenever someone passes by him.

  • 254 views
  • 2 comments
  • 5 respects

Components and supplies

A000066 iso both
Arduino UNO & Genuino UNO
×1
Screen shot 2019 03 20 at 2 38 27 pm fqndazqcx1
1Sheeld
×1
12002 04
Breadboard (generic)
×1
Relay (generic)
×1
11026 02
Jumper wires (generic)
×1
51gzz5eu9pl. sx425
Ultrasonic Sensor - HC-SR04 (Generic)
×1
christmas tree with AC light
×1
electric AC wires
×1
fiber
×1
pvc tubes
×1
cardboard sheet
×1
santa claus wear
×1
pvc joints
×1

Necessary tools and machines

drill
Hy gluegun
Hot glue gun (generic)
saw
cable ties
screws
L-corners
screw driver
scissors
tape
pvc cement

About this project

Meeeeeeery Christmas, guys :)

Only a few days for the Christmas and all are preparing their Christmas trees, lights and decoration for a sweet and warm Christmas celebration nights with family and friends.

But if you want to stand out in a crowd by building something new and interactive to amaze your family and friends with then this your right tutorials for building the talking, singing and selfie-taking Santa Claus guy!

Yes, I will walk you through the full steps of how you can build a human-shaped Santa Claus that can automatically:

  • Feel whenever someone comes beside him and sings to him
  • Asking you to take a selfie with him and post it on Twitter

So, let's get started with the idea...

Idea

You will simply build a human-size Santa Claus from PVC and fiber with a pretty red Santa Claus wear.

Then, you will make a very simple hardware circuit that has an ultrasonic sensor to detect that people are nearby.

And it sings and talks to them for talking a selfie photo to upload to Twitter.

How it works

You would place Santa Claus near the house door to surprise your friends and family at the Christmas night.

Once they enter the home, Santa Claus will detect them and plays the "Merry Christmas" song.

It's better to turn lights off since the Christmas tree will toggle its light with the song. Here, Santa Claus will ask them for a sweet selfie and once they say "yeah, sure" he will take a photo with his selfie stick and uploads it to your Twitter account!

How to make it

I am going to use Arduino with the 1Sheeld. 1Sheeld is basically an Arduino shield that connects to your phone and makes use of the phone sensors and capabilities to deliver you 40+ shields into only one shield!

Just a perfect and cheap board that empowers me to use the required Arduino shields in this project which are:

  • Buzzer Shield to notify people that Santa will capture the photo right now

So, I will go with you step by step to build this project from scratch..

Before you start building it

I recommend you go for the 1Sheeld getting started tutorial to get familiar with 1Sheeld board.

Now, lets start making it

Step 1: Make the Santa Claus from PVC

Get 5 meters of PVC tubes and cut them into the skeleton parts with the dimensions of your Santa Claus's clothes. If you didn't get the clothes yet then you can cut the PVC with these dimensions:

And hock all pieces together with joints and the PVC cement and tape so that you build the skeleton as this:

Step 2: Make the Santa Claus real body from fiber

Once you get the skeleton ready you will cover it with the clothes and fill it with fiber. I started with the legs with the help of 2 rounded cardboard pieces to prevent the fiber from going out of the clothes:

Step 3: Make hands and foot

You will need any kind of white gloves and a selfie stick.

Start with filling gloves with fiber. Then, just hock both hands to the end of the PVC arms with cable ties.

Left hand will be free but the right one will be tied to the selfie stick so you need to tie the selfie stick to the PVC right arm's end too.

Then you will bring a pair of shoes and insert the PVC legs inside it.

For more stability, I have fixed the end of the PVC leg with some L-shape metal corners along side with 4mm diameter and 50mm long screws and nuts.

Step 4: Making the head

Here comes the tricky part where you will shape the head. I have found a tutorial video that makes it with a great simple idea where he used just the cardboard! Check it:

After, you will end up with something like that:

The next step is to make the head support by cutting a curved piece of cardboard and glue it to the head.

Then glue all to the neck (just a short pvc tube)

Step 5: Preparing the Santa face

And here comes the most easy part of the hole project where you just get a mask /face and stick the beard to it.

You are going to make a gap in front of the head to glue the face boarders inside it so that the face gets a bit inside the head and looks more like a human head.

Step 6: Make the components box

Now, you will make a sweet box for the components. You just need to draw then cut the box faces from a cardboard. Box dimensions are as follows:

Then you will fold the design you have cut and glue the faces together with the glue gun:

I have added some visual polish for the box to look like a box for the Christmas gift :) and it looked cool!

Step 7: Hardware circuit

Connect the hardware components as in the schematic part and place the circuit in the box:

Step 8: Arduino code

  • Connect the Arduino via your PC using Arduino USB cable.
  • Switch the 1Sheeld power to operate on 5v (Not the 3.3v):
  • 1Sheeld has 2 modes: Uploading mode and Operating mode. You can switch between them using the switch close to the Digital pins and is called “UART SWITCH” on 1Sheeld and “SERIAL SWITCH” on 1Sheeld+.

Firstly, you slide the switch towards the “SW” notation which turns the 1Sheeld board into the Uploading mode to let you upload the Arduino code.

Secondly, after you finish uploading the code, slide the switch towards the "HW" which turns the 1Sheeld board into the Operating mode to communicate with your smartphone 1Sheeld app.

Finally, open the 1Sheeld app and connect it to the 1Sheeld board via Bluetooth.

Step 9: Polish Santa Claus

If you like, you can add some Christmas accessories to Santa Claus and the Christmas tree so that the project looks cool. I have also covered the wooden base with the same gift covering papers of the box and I have ended up with this awesome looking Santa:

Let's try it ....

Plug in the AC power of the tree light and plug the Arduino to a 5V source, maybe a power bank.

after that, open the 1Sheeld app, and select these shields: camera, buzzer, terminal, voice recognizer, text-to-speech, music player, twitter.

Then, download add this "merry christmas" track to the music player list

And change the text-to-speech voice gender to a male voice. If you use Android phone then change the voice by navigating to settings >> system >> languages and input >> text-to-speech output >> preferred engine gear icon >> install voice data >> select English >> select a male voice (voice || or voice ||| or voice |V).

You can also adjust the pitch and speech rate to get the closest voice to a real old man.

And don't forget to log in with your Twitter account in the Twitter shield.

Finally stick the phone to the selfie stick.

And you are ready to make the nights of Christmas!

If you liked, please respect and share. And if you have any comment please let me know...

"Merry Christmas, guys!"

Code

codeArduino
/* Include required shields */
#define CUSTOM_SETTINGS
#define INCLUDE_CAMERA_SHIELD
#define INCLUDE_BUZZER_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_TEXT_TO_SPEECH_SHIELD
#define INCLUDE_VOICE_RECOGNIZER_SHIELD
#define INCLUDE_MUSIC_PLAYER_SHIELD
#define INCLUDE_TWITTER_SHIELD


/* Include 1Sheeld library. */
#include <OneSheeld.h>

//sensor pins
#define TRIG_PIN         3
#define ECHO_PIN         5
#define RELAY            13

bool peopleAreHere = false;
bool theySaidYes = false;

/* Variable to save the measured distance from ultrasonic */
int distance;

//Set commands to be recognized by the Arduino Voice Recognition Shield
const char ok[] = "sure";
const char no[] = "no";

void setup()
{
  pinMode(TRIG_PIN , OUTPUT);
  pinMode(ECHO_PIN , INPUT);
  pinMode(RELAY , OUTPUT);
  /* Start 1Sheeld communication. */
  OneSheeld.begin();
}

void loop()
{
  /* Get the current distance from the ultrasonic */
  distance = getUltrasonicDistance();

  /* Print the distance on the Terminal shield */
  Terminal.println(distance);

  
  if (distance > 110)
  {
    digitalWrite(RELAY , LOW);
    MusicPlayer.stop();
    peopleAreHere = false;
  }
  
  /* Check if distance is less than 2 meter */
  if (distance <= 110 && distance > 0 && (peopleAreHere == false) )
  {
    peopleAreHere = true;
    digitalWrite(RELAY , HIGH);
    MusicPlayer.play();
    OneSheeld.delay(18000);
  }

  if (peopleAreHere)
  {
    //MusicPlayer.pause();
    TextToSpeech.say("Hey, why don't we take a photo together ?");
    OneSheeld.delay(3000);
    VoiceRecognition.start();
    peopleAreHere = false;
  }

  
  if (VoiceRecognition.isNewCommandReceived())
  {
    //Compare the last command received by the Arduino Voice Recognition Shield with the command "yes"
    if ( !strcmp(ok, VoiceRecognition.getLastCommand()) )
    {
      
      theySaidYes = true;
      
      
    }

    //Compare the last command received by the Arduino Voice Recognition Shield with the command "no"
    else
    {
      
      
      theySaidYes = false;
    }
  }
  
  if (theySaidYes)
  {
    TextToSpeech.say("please stay near me, I will take a sweet selfie after the tone");

    OneSheeld.delay(5000);

    Buzzer.buzzOn();

    OneSheeld.delay(500);

    Buzzer.buzzOff();

    OneSheeld.delay(500);

    /* Take a photo */
    Camera.frontCapture();

    /* Delay for 5 seconds to give the camera shield enough time for taking and saving the photo */
    OneSheeld.delay(7000);

    theySaidYes =  false;

    TextToSpeech.say("Awesome, I will tweet it now");
    OneSheeld.delay(3000);

    // Facebook.postLastPicture("merry christmas with my sweet friends" , 1 );
    Twitter.tweetLastPicture("merry christmas with my sweet friends" , 0 );
    
    digitalWrite(RELAY , HIGH);
    MusicPlayer.play();
    OneSheeld.delay(18000);

    // dekay before tweeting again
    OneSheeld.delay(10000);
  }
}


/* A function that makes the whole operation of the ultrasonic and returning the detected distance */
int getUltrasonicDistance(void)
{
  /* Variable to save the sound wave travel time in microseconds */
  long duration;

  /* Variable to save the detected distance in cm */
  int distanceReturned;

  /* Clears the TRIG_PIN */
  digitalWrite(TRIG_PIN, LOW);

  /* delay 2 micro seconds */
  delayMicroseconds(2);

  /* Sets the TRIG_PIN on HIGH state for 10 micro seconds */
  digitalWrite(TRIG_PIN, HIGH);

  /* delay 10 micro seconds */
  delayMicroseconds(10);

  /* Sets the TRIG_PIN on LOW state */
  digitalWrite(TRIG_PIN, LOW);

  /* Reads the ECHO_PIN, returns the sound wave travel time in microseconds */
  duration = pulseIn(ECHO_PIN, HIGH);


  /* Calculating the distance */
  distanceReturned = duration * 0.034 / 2;

  /* Returning the detected distance in cm */
  return distanceReturned;
}

Schematics

schematic
Design imvbqgpuke

Comments

Similar projects you might like

Arduino Based Amazon Echo Using 1Sheeld

Project tutorial by ahmed ismail

  • 33,546 views
  • 66 comments
  • 91 respects

Control Christmas Lights with Voice Commands using Arduino

Project tutorial by ahmed ismail

  • 2,327 views
  • 2 comments
  • 12 respects

How to Build a DIY Animatronic Halloween Prop Using Arduino

Project tutorial by amrmostaafaa

  • 1,144 views
  • 1 comment
  • 7 respects

Relativ - Build Your Own VR Headset for $100

Project showcase by Team Relativty

  • 24,163 views
  • 18 comments
  • 90 respects

Arduino Based Binary Clock

Project in progress by El Condor

  • 2,875 views
  • 1 comment
  • 14 respects

Christmas Wreath

Project in progress by S Milliken

  • 969 views
  • 0 comments
  • 2 respects
Add projectSign up / Login