I thought it might be fun to create an Automatic Bobble-head Bobbler something that can wake that old bobble-head up and get him nodding away. I finally found time to get one working just in time to be a Christmas present (and of course be the subject of a new Instructable).
Concept phase: I first thought I would use an off balance vibrating motor for this project. They are easy to find or make, and inexpensive. But the type I found, simple hobby motors, were just too weak to move a heavy bobble-head, so I moved on to an inexpensive Servo ($2.82 from eBay).
I also thought about using a sound sensor or a motion sensor for this project, but a friend worked out a scheme for hacking any basic IR remote first using an Arduino and then a less expensive ATTiny85 IC (that version of the bobble-head bobbler will be next)
Parts needed:
- Arduino Uno (as mentioned above in my next Instructable I’ll show how to port this project to a much less expensive ATTiny85 chip). I used the wall adapter for the USB cable for power.
- InfraRed (IR) Sensor http://www.adafruit.com/products/157
- Servo – SG90 9g Micro Servos (Intended for RC Airplanes, other servos would work as well)
- Generic Universal Remote – I had one laying around, but these can be found at Goodwill as well.
- Wire – to reach from the components to the board
- (Optional) – Small springs – I used 2 coils springs, these may not be needed if you have light bobble heads
- Project box – I found small wooden boxes at the Ax-man surplus store for $2.50
- Scrap wood – to shim the distance from top to bottom of box so the servo fits
- 2 bolts #10
- 4 nuts (I used 2 fingernuts, making it easy to adjust bobble level )
- 2 washers – useful to keep spring in place
- 2 screws – to attach the Servo
Tools needed
- Drill
- Saw
- Soldering iron
- Heat shrink or tape
- X-Acto knife to tweak opening for IR Sensor and cord
Video of the Bobble-head Bobbler in Action
Step 1: The Schematic and Code for the Bobble-head Bobbler
The Code:
In the first Tutorial there is a section that shows you how to read an IR Commands. I used a GE Remote Control and using the tutorial was able to trap the output for the buttons I wanted to control on the device. The output of the tutorial program is an array that can be used in an If- then-else loop waiting for the right buttons to be pressed. The bobble action in this routine happens when the user presses the #1 button on the remote. You may also find it handy to add an LED to blink while debugging this ir decoder, for testing or just for fun.
The Wiring:
The basic schematic is shown here. Just connect the yellow output wire of the IR sensor to digital pin 2, and also connect it to ground and 5V power. Hook the Servo up as follows
- Connect the red servo wire to The Arduino 5V
- Connect the black/brown servo wire to Arduino ground
- Connect the white/orange servo wire to Arduino Analog 0
Remember, the array One_IRSignal[] needs to change slightly based on the output of the remote control you’re using.
Step 2: The Guts of the Bobble-head Bobbler
For this project I tried a few variations
- a lighter box with an off balance motor fixed to the lid…worked for lighter weight bobble-heads but was not violent enough of a shake action for heavier statues (as shown here)
- used a paper clip attached to the servo wing and the lid of a lighter box, again worked better but I found I wanted an easy way to control strength of the lift depending on the weight of the bobble-head(s)
- this final design consisting of small springs on bolts, sandwiched between two pieces of scrap wood. The bolts are fastened to the bottom piece of scrap wood and the top piece of wood floats freely. The bolt comes through the top of the box allowing two finger nuts to adjust the amount of travel of the lid. (Too strong of a vibration was causing some bobble-heads to wobble right off the top of the box.