Introduction: Handgesture Controlled Robot With Robotic Arm
With this robot, you control everything with your hand, even the robotic arm!
The hand gestures can be programmed differently.
Long range with Xbee communcation!
Step 1: Parts Needed
Arduino Uno x2 - http://store.arduino.cc/index.php?main_page=produc...
Xbee S2 x2 - https://www.sparkfun.com/products/11217
Xbee shield for Arduino Uno x2 - https://www.sparkfun.com/products/12847
Xbee Explorer Dongle - https://www.sparkfun.com/products/11697
Shrink cables x4 - http://www.digikey.com/product-detail/en/F221B1%2F...
Dual H-bridge ,SN754410NE - https://www.sparkfun.com/products/315
Flex Sensors x4 - https://www.sparkfun.com/products/8606
Trolley wheels (30mm) x2- http://www.rosscastors.co.uk/castors/top-plate-cas...
12v DC motor x2 - http://www.dx.com/p/high-torque-80rpm-12v-dc-geare...
4AA Battery holder - https://www.sparkfun.com/products/12083
8AA Battery holder - https://www.elfaelectronics.com/elfa3~ex_en/elfa/i...
5V regulator - https://www.sparkfun.com/products/107
Battery cables - https://www.elfaelectronics.com/elfa3~ex_en/elfa/i...
Robotic claw - https://www.sparkfun.com/products/11524
Robotic Claw Pan/Tilt Bracket - https://www.sparkfun.com/products/11674
Servo for robotic claw - https://www.sparkfun.com/products/10333
Spacer studs x8 - http://katalog.we-online.de/en/em/Aluminium_Abstan...
Button - https://www.sparkfun.com/products/97
Regular rc wheels (55mm) x2
Aluminium plate - any local ironmongery
Step 2: Base Model
I made a simple drawing in SolidWorks and then went to a local ironmongery to get the plate bended.
On the base plate under the plexiplate is were the two DC motor will be placed. Over that will the 12v battery holder and the H-bridge fit. And on the top level will the Arduino be mounted. In the middle of the plate will the robotic arm be placed.
The drawing model is included.
Step 3: Flex Sensors
Every flex sensor is soldered according to the first schematic, with a 22K Ohm resistor. There is a good tutorial for how to read from this and how it works here: http://bildr.org/2012/11/flex-sensor-arduino/
The first thing to do is to test each of the flexsensors and write down the values when its bent and unbent.
To be sure that the flexsensors dont breake at the end when its bent, I took an old plastic card I had from some random store, and made small rectagular parts of it and placed it at the end of the flexsensors. After the soldering, take some electric tape and wire around each cable to prevent short circut, and after that just put over some shrinking cables to make it nicer.
Step 4: Setting Up the Xbee
Im not going to get into details how to set up the Xbee, but the first thing you need to do is configure the Xbee's and upload the latest firmware. How to do it, here is a tutorial: http://examples.digi.com/get-started/configuring-x...
After the configuration is done, here is a simple communiation tutorial: http://www.interactiondesign.se/wiki/xbee:remote_b...
Step 5: 1st Arduino: Connecting Power-supply,H-bridge,servos,DC-motors and Robot-arm
The power supply on the robot will have a 12v battery pack. This will both drive the Arduino and the two DC motors and the servos, a regulator is needed to bring down the 12 volts from the battery to 5v which is required for the servos. The H-bridge, SN754410NE is soldered according to the circut diagram on a regular PCB board. The switch is soldered and conntected to the battery.
The DC-motors can be mounted by taking some metal piece and bend them around the motors and then attach them to the base plate with some screws(picture).
I know the picture is quite messy so just to clear everything up, the connections goes as follows:
Digital pin nr.5 -> signal to Servo 1
nr.6 -> signal to Servo 2
nr.7 -> h-bridge pin.2
nr.8 -> h-bridge pin.7
nr.9 -> h-brigde pin.10
nr.10 -> h-bridge pin.15
5V pin from arduino -> h-bridge pin.1, pin.9
IMPORTANT! Make sure to connect all ground from all things togheter so they share the same gorund (Arduino,H-brigde,Servos,Battery and regulator). This can be done by cut out a small PCB board and connect all ground cabels to that board.
Pin 1 and pin 9 -> 5V arduino
Pin 2 -> Digital pin 7 on Arduino
Pin 3 -> DC Motor 1 +
Pin 4,5,12,13 -> Ground
Pin 6 -> DC Motor 1 -
Pin 7 -> Digital pin 8 on Arduino
Pin 8 -> 12 V battery +
Pin 10 -> Digital pin 9 on Arduino
Pin 11 -> DC Motor 2 +
Pin 14 -> DC Motor 2 -
Pin 15 -> Digital pin 10 on Arduino
The datasheet for SN754410NE can be found here: http://www.ti.com/lit/ds/symlink/sn754410.pdf
Servo 1 signal line -> Digital pin 6 on Arduino
Servo 2 signal line -> Digital pin 7 on Arduino
Connect positive 12v to both Arduino and to the H-bridge pin nr.9 and to the regulator
Datasheet for the regulator can be found here: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Com...
Step 6: 2nd Arduino: Connecting Flex Sensors, Button, Led
The second Arduino will be mounted on the hand. Simply mounted with some velcrotape, the battery pack is also mounted with velcro tape under the hand.
Everything is hooked up according to my schematic. A button is connected to the arduino to later control if we want to control the robot arm or the motors on the robot. The led will indicate which one we is controlling.
Led on = robot arm mode, Led off = motor mode
Step 7: Code
The coordinator is the one wich will recive all commands from the hand, therefore that code is called "Coordinator".
The router is the one which will send all commands to the coordinator, and therefore that code is namned "Router".
To switch between controlling the motors and the robot arm, the button on the hand is pressed once.
I have tried to comment the main parts in the code.
The commands for driving forward, backward ect. can be programmed differently according to your own choices. Total combinations with four flexsensors is 16, and we only need four. So there is plenty of combinations to choose between.
The commands I used:
Forward: All fingers closed
Backward: Only thumb bent
Left: Thumb and pinky bent
Right: Thumb middle finger and pinky bent.
Robot arm commands
Tilt down: All fingers closed
Tilt up: Only thumb bent
Gripper open: Thumb and pinky bent
Gripper close: Thumb middle finger and pinky bent.
Step 8: Demo
The purpose of pick up a beer was unfortunately not workable. The diameter was too big for the gripper :(