This simple device sits on your desk at work, ready to give you fist bumps throughout the day as you need them. A 3D printed "fist" is moved by a servo attached to a rack and pinion mechanism. An ultrasonic range finder detects when you place your hand near it, and an Arduino Uno controls it all.
Step 1: Make cables
To connect the electronics, a few cables are needed. First, make a pair of "splitters" for providing power (5V) and GND to the sensor and servo from the Arduino using female connectors. Since both devices need the same Vcc, the splitters make the wiring easier to put together and more compact when it is assembled.
Next, solder a cable to connect to the ultrasonic range sensor. Use a female connector for the end that the sensor will plug into, and solder the other ends of the wires to individual male headers.
Finally, cut off the female connector at the end of the servo and solder the wires to individual male headers as well.
Step 2: Cut the base and slide
Using a laser cutter, cut out the parts for the base and slide out of 1/4" plywood. I used fairly low settings for my cuts to keep the tolerances correct - speed 20%, power 35%, and frequency 500Hz.
Step 3: Attach servo
The servo needs to be secured to its mount before assembling the box around it. Simply use four bolts to attach it, making sure that it is facing in the correct direction.
At this point the pinion gear needs to be attached to the servo horn. The part is a fairly close press fit, but the addition of some hot glue ensures that it won't slip off during assembly. Once glued, the horn/gear attaches to the servo using the screw included in the package.
Step 4: Assemble the base
Follow the photos above to assemble the base around the servo mount. The parts are all press-fit, and should not require glue (although feel free to add some if it is necessary). First, attach the mount to the front panel and slide on the inner walls. Next, carefully push this assembly onto the inner base part. Add the small guards for the bottom of the slide. Then add the back panel and the upper guard for the slide. Lastly, add the side panels.
Step 5: Add weights
To keep the fist bumper balanced, weights are added to both the base and the slide. For the base, push the stop into the top of the upper guard for the slide. Find some weights (I used a variety of washers) to fill the pocket you just made on top of the slide guard.
Step 6: Glue on the top
Using wood glue, secure the top of the base. You don't need to glue it on, but I found that if I wasn't careful the weights would push off the top when I carried the machine around.
Step 7: Attach the range sensor
I ended up simply hot-gluing the ultrasonic range sensor to the base. It is likely that you will have to adjust its positioning as you test the code (if it tilts up, it will see the edge of the fingers) and it is easy to pull the sensor off and re-glue it.
Step 8: Print the hand
The hand was printed on the Afinia H479 printer from PLA (although it should be fine with ABS plastic). All parts were printed at 0.25mm accuracy with hollow fill. In all, it took just over 7 hours of print time and about 160g of plastic filament. The index and ring fingers are identical, so print two copies of the parts labeled "F1" and see step 10 for the arrangement of the fingers on the hand.
As with all printing, rotate the parts to lay mostly flat. In this case, this meant that the sides of the fingers were touching the print surface (see screenshot). Be very thorough removing the support material, as the parts need to be able to fit together and excess material will get in the way of that.
(Note: If you don't have access to a 3D printer, you can make a fist out of cardboard, paper mache, or some other material. I originally intended the hand to be able to move, which is why it is printed in so many parts.)
Step 9: Assemble the fingers
Although they are printed separately, the fingers are designed to snap together. Line up the finger segments and thread them (in order) with the wire or string. I used a bent paperclip to help me with the string, but when I switched to wire I didn't need it. Double-check that the segments are in the proper order, then snap them together. The middle segment goes on the outside of the lower and tip segments and should fit somewhat snugly. Repeat this process for all five fingers.
Step 10: Assemble the hand
Once all five fingers are assembled, they can be connected to the palm. Thread the wire/string through the holes in the front of the palm, and snap the lower segment into place. Make sure the finger is oriented properly and is in the correct spot!! The fingers are only designed to bend in one direction and are difficult to remove from the palm if you need to correct them. After the fingers are all attached, flip the hand over and thread the strings through the next set of holes before pulling them tight and tying them together. This will keep them curled into a fist. (if the fingers won't stay, add a dab of hot glue at the joints)
Step 11: Bolt on the hand
The hand bolts onto the top of the slide, before the slide is assembled. I'd recommend using lock nuts if you have them.
Step 12: Assemble the slide
Like the base, the slide shouldn't require glue to stay together. Start by adding the sides to the bottom panel, checking that they are in the proper orientation. Then add the stops and insert weights. Push on the top (with the hand attached). You may need to glue the top down to keep it secure. Finally, push the rack into place.
Step 13: Upload the Code
The Arduino code reads in a signal from the ultrasonic range sensor and if there is an object in range (ideally your hand) it turns the servo.
The basic code for reading in data from RadioShack's range sensor can be found here: http://blog.radioshack.com/2013/07/find-your-way-...
Step 14: Wire the electronics
Solder leads to two of the pins on the power switch, and hot glue it in place on the back of the base. Solder one of the leads to the positive lead from the battery connector.
Step 15: Plug into the Arduino
All the cables are made, so simply plug everything together and connect to the Arduino. The Vcc cables of the sensor and servo both plug into the power splitter made previously, which plugs into the 5V pin on the Arduino. Similarly, attach the sensor and servo GND cables to an Arduino GND pin. The signal pin for the servo goes to digital pin 8, and the signal pin for the sensor goes to digital pin 7. Finally, the remaining lead from the power switch goes to Vin (on the Arduino) and the GND wire from the battery goes to GND.
Step 16: Close the base
Flip the base upside-down and arrange the electronics within it (don't forget to add a battery!). Try to make them sit as flat as possible, with the usb connection of the Arduino facing the front (this way, you can easily plug in and edit the code). Put the bottom on and glue if necessary.
Step 17: Test the fit
Turn the servo so the gear is rotated all the way forward. Then carefully push in the slide until you feel the rack catch on the gear. Test the fit to see if it slides easily. If necessary, sand down the top and sides of the slide. Once done, insert the slide all the way into the base.
Step 18: Done!
The desktop fist bump machine is now done! Turn it on and sit it on your desk.