Smiling Santa

Introduction: Smiling Santa

About: I am an author and a maker. My current project is Santa's Shop. I'm working on a science fiction type book--more later. @EngineerRigsby

This interactive display responds to a person's smile.  A camera searches for faces then detects smiles and takes a photo.  In this mode, an LED on the camera's "searching base" goes dark.  Interface circuitry (mbed LPC 1768) links the camera with the smiling Santa face. If you want to smile at Santa in person, we will be at the Maker Faire in San Mateo during May of 2011.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1:

This is the setup--a camera detects a smile then a microcontroller operates two servo motors and LED's for a defined time period.  That's it.

Step 2: Schematic

Voltage across a resistor/photocell pair changes when the amount of light striking the photocell changes. This voltage is provided to the LPC 1768 (microcontroller--you could use an Arduino, it would just mean using different pins and different software code) as an analog input. Outputs from the LPC 1768 turn on the LED eyes and activate two servomotors.  The servomotors are connected by fishing line to the ends of the flexible rubber mouth.

Step 3: Software

Analog voltage input (the camera has detected a smile) is received on pin 20.  Pin 26 (Santa's eyes and LED1 on the processor module) is activated for two seconds upon detection of a smile.  Pins 21 and 22 are used to control the servomotors that create the smile/non-smile face.  It is easy in software to adjust the position (smile and non-smile) of each side of the smiling "lip" as well as the duration of the smile.

#include "mbed.h"
#include "Servo.h"

AnalogIn ain(p20);
DigitalOut led(LED1);
DigitalOut relay(p26);
Servo servo1(p21);
Servo servo2(p22);
void SetPosition(int NewPos);
void Enable(int StartPos,int Period);

int main () { servo1.Enable(1500,20000);
while (1) {
        if(ain < .2) {
        led = 0; relay = 0;
        servo1.SetPosition(1000);//rt smile down
        servo2.SetPosition(1200);//lft smile down
        wait(.5); } else {

        led =1; relay = 1;
        wait(2);} }

Step 4: Construction

Let's start the construction by cutting a disc from 1/4 inch thick plywood as shown in the template above.

Step 5:

The disc should look like this.

Step 6:

Using wood screws, attach a 3/4 inch by 3/4 inch by 3 inch back support brace.

Step 7:

Attach a 2 foot long piece of aluminum trim channel (channel is made for 3/4 inch plywood and is available in building supply stores) to the back support brace.

Step 8:

Attach a 6 1/2 inch long by 3/4 inch by 3/4 inch block of wood to the disc adjacent to the slits.

Step 9:

Attach a 3/4 inch by 3/4 inch by 4 inch pice of wood centered on the last piece you installed.

Step 10:

Insert another 3/4 inch by 3/4 inch by 6 1/2 inch piece of wood on the last piece installed.

Step 11:

Using small wire (like magnet wire), connect two of the servo hubs (included with the servomotor) so that the radial distance from the servo shaft to the end of the hub is at least one inch.

Step 12:

Drill a 3/8 inch hole in the disc, between the board assembly and the back support. Wires from the servomotors will go up through this hole then down through the aluminum channel in the back.

Step 13:

Using the tiny screws provided with the servomotor, attach the motor to the wood block assembly.

Step 14:

Attach the second servomotor to the other side of the block assembly.

Step 15:

Drill two 1/4 inch holes (separated by 4 inches) near the front of the disc.  The "eye" wires will pass through these holes.  Attach a 12 inch by 24 inch (1/4 inch thick) piece of acrylic to the lower end of the aluminum channel.

Step 16:

From a string of LED Christmas lights, remove two lights to work as eyes.  I chose blue stars, but globes ar any color of your choice will work.  Solder about 3 feet of #22 wire to the light wires and thread this through the disc.

Step 17:

Cut a 3 7/8 inch long piece of acrylic rod (1 inch diameter--I used the clear handle of an upscale toilet plunger).

Step 18:

Using a screw, attach the rod to the aluminum support channel--11 inches from the top.

Step 19:

Drill a 1/4 inch diameter hole in the top and center (connect the holes) end of the rod away from the aluminum support.

Step 20:

Cut a 6 1/2 inch long piece of "eyeglass strap holder" (or any flexible tubing) and attach the center to the acrylic rod with fishing line.

Step 21:

Using a needle, thread fishing line through the ends fo the tubing and tie the ends of the fishing line to the ends of the servomotor hubs.

Step 22:

Using a breadboard (or your preferred method) wire the LPC 1768 as shown in the schematic drawing.

*I was using a battery supply and oscilloscope to troubleshoot when this photo was taken.

Step 23:

Using another acrylic rod, attach a beard assembly 3 1/2 inches below the mouth rod.

Step 24:

Twist wires from the power supply to the breadboard wires.

Step 25:

Tape the wires with electrical tape so that they don't bump together and short out.

Use a Sony DSC TX1 camera and the Sony Party shot base (and Sony AC adapter) for smile detection.  We need a camera with 1) smile detection, 2) smile detection that will stay on indefinitely, 3) smile detection that is indicated by operation of a light, 4) ac power for the camera so that it won't shut down.

Step 26:

Cut a small square of Velcro and punch a hole in the center.  Attach the adhesive side to the party shot base (hole should allow the white LED to shine through).

Step 27:

Attach a photocell to the other side of the Velcro square.  Stick the two pieces of Velcro together, making sure that the photocell is aligned with the "LED hole."

Step 28:

I inserted small screws into the end of the "smile tube" so that gravity would pull the ends of the smile downward.

Step 29:

When you stand in front of the camera and smile, Santa's eyes will glow and his smile will rise.  Adjust the software (servomotor positions) until you are satisfied with the up and down appearance of the smile.

Step 30:

This works--but there is still a problem.  The party base rotates left, right, up, and down.  You can't depend on the base being pointed where you want it to be at any given time.  The base is necessary to keep power on the camera and keep the camera in the smile mode (you have to read the party base instructions and program the camera while on the base to stay on). 

I tried disabling the motors in the base, but the processor knew I had pulled the wires and it put the LED's into a flashing mode. So, I started my quest to defeat the pan/tilt mechanism.

Remove three screws from the bottom of the base.

Step 31:

Remove two screws from the "tilt" plate.

Step 32:

Pull the party base camera socket away from the tilt mechanism.

Step 33:

At this point, if you are smart and take my advice, you will cut, nip and otherwise destroy the top of the party housing to get it away from the camera socket.

For some fool reason--maybe thinking I might restore the device someday--I decided to remove the ribbon cable from the camera socket and pull it through the top of the party housing.  This works fine EXCEPT that the end of the ribbon cable is not really a connector; it's more like a 1/16 inch piece of hard exposed cable.  

Step 34:

I had to "force/slide" this cable back under a tiny spring loaded connector.  I really thought I'd bought the farm, but it works.

Step 35:

Bolt a piece of U shaped tubing to the camera socket.  Place Velcro on the bottom of the party base.  Cut a 2 1/2 inch diameter hole in a piece of acrylic (slightly larger than the rotating element on the base).  

Step 36:

Adhere the base to the acrylic such that the rotating part of the base can rotate freely.  Secure the aluminum channel/camera socket to the acrylic upright.

Step 37:

Using a 2 inch by 2 inch block of wood, attach the acrylic upright to a 12 inch square acrylic base.  

Step 38:

Almost done.  Line the camera lens up pretty much in the center of Santa's face. Plug the Sony AC power supply into the party base.  Attach the Velcro photocell to the Velcro on the party base.  Attach the camera to the camera socket.  Turn the party base on.  Turn the camera on.  Turn the camera's flash off.  Using electrical tape, cover over the amber camera LED that wants to "help with the focus."  Make sure the camera is in smile detection/party base/never turn off mode.

It still doesn't work.  The party base "knows" that it is hanging sideways in the air.  With your fingers, apply a small amount of pressure to the rotating part of the party base.  When the base has been "fooled" into thinking that it is sitting on a tripod or table, it will be happy until the next turn on cycle.

Now, you can expect 95% or better accuracy in detecting smiles when someone is standing in front of the camera.


MakerBot Challenge

Participated in the
MakerBot Challenge

Nostalgia Electrics Ultimate Party Challenge

Participated in the
Nostalgia Electrics Ultimate Party Challenge

Be the First to Share


    • Trash to Treasure Contest

      Trash to Treasure Contest
    • Raspberry Pi Contest 2020

      Raspberry Pi Contest 2020
    • Wearables Contest

      Wearables Contest