Introduction: 1Sheeld Controlled Robotic Arm
Using 1Sheeld, remote control an Arduino powered robotic arm with your Smartphone/Tablet.
Step 1: Essentials
You will require the following items, or equivalent.
1) Any Arduino powered robotic arm. Pictured is the Lynxmotion AL5D
2) Lynxmotion BotBoarduino
3) 1Sheeld and Android Smartphone/Tablet
4) Lynxmotion Heavy Duty Wrist Rotate upgrade (optional)
All items available at RobotShop
Step 2: Build Your Arm
Since this project is not really specific to any robotic arm, I'll leave it to you to build your own. Many kits are available, you could build your own from scratch using another Instructable, or your could redeploy a platform you already have.
When building your arm, Loctite everything!!!!! I know most beginners will ignore this, but eventually you'll understand why Harley, helicopter, and robot arm mechanics Loctite everything!!!!! These are all machines that can be described as a collection of parts trying to get away from each other.
It's OK to ignore this advice. After 10 hours or so of use when your arm starts to get all wibbly-wobbly because every screw and nut is loose and falling off, you'll then be convinced to Loctite everything!!!!!
I am quite happy with the AL5D combined with the BotBoarduino. And, as you will see later, it makes a perfect add-on to a suitably sized vehicle platform.
Step 3: 1Sheeld Explained
1Sheeld Android Smartphone Multi-Purpose Shield is an easily configured shield for Arduino. It is connected to a mobile app that allows the use of all of Android smartphones' capabilities such as LCD Screen, Gyroscope, Switches, LEDs, Accelerometer, Magnetometer, GSM, Wi-Fi, GPS …etc. into your Arduino sketch.
For more information, visit 1Sheeld Tutorials Archive
Step 4: BotBoarduino Explained
The shield compatible Lynxmotion BotBoarduino is perfect for controlling any Arduino (Duemilanove) based project, but especially those requiring servos.
It has an onboard speaker (hardwired to pin 5), three onboard pushbuttons with corresponding LED's, a reset button, separate logic and servo power inputs, an I/O bus with 20 pins and power and ground, and a 5vdc 1.5amp regulator.
Up to 18 servos can be plugged in directly, and powered separate from the logic circuit of the board in this manner (refer to image above)...
(15) VS is the power input for the servos. Whatever power you run into here will be directly used by the servos.
(16) VL is the power input for the logic circuit... ie... to run the board itself.
(13) is a jumper you remove to separate the VS and VL power circuits.
The digital pins 2 through 13 are arranged in banks of 4 ( 2-5, 6-9, 10-13). Each bank has a jumper next to it where you can select the power source for that bank. For example, you could set the jumper for bank 10-13 to VS to power servos, and set the jumper for bank 6-9 to 5V to power sensors.
The BotBoarduino can easily interface with a PS2 controller... see attached PDF for more on that.
Attachments
Step 5: The Algorithm - Gamepad Control
Not too much to understand here. The robot arm is a collection of 180 degree servos, so you just need to decide which buttons on the gamepad control what servo and direction.
Buttons can be used independently ( ie Up ) , or in combination ( ie Green Button + Up ).
I won't bore you with my specific choices here. If you download the code and read the comments there, you will see the choices I made.
The provided code is very modular and designed for future expansion. If you have a fundamental level of programming proficiency, you will be able to easily add new functionality for the gamepad, or the other many controls that are available to you via the 1Sheeld.
Step 6: The Algorithm - Servo Speed
Here's a small lesson for robot arm beginners. The rest of you move on... nothing to see here.
You've been asked to relocate yourself 180 feet. How would you like to go...
1) Shot out of a cannon?
2) Walk there?
Although being shot out of a cannon might have a certain amount of appeal, the speed and violence of it does have some draw-backs.
Servos (especially big powerful ones) are the same. Is this your idea of swinging your arm from one side to another???....
// Shot out of a cannon
baseServo.write ( 0 );
baseServo.write ( 180 );
Walking from one spot to another is a more controlled way of getting places. And the length of your pace combined with the rate of moving your feet determines how "smooth" your walk will appear.
The same with servos. "Walking" them from one position to another often is preferable...
// Walking (not Silly)
for ( int i = 0 ; i <= 180; i += 3 ) {
baseServo.write( i );
delay(40);
}
The provided code will use this technique. Read the embedded comments there for a deeper understanding.
Step 7: Install Code
I've provided an extensively documented Arduino sketch that provides the functionality as described in the previous steps..
If you've configured your components correctly, it should work as is. Some fine tuning will probably be required. Or, you could hack the code to suit your needs.
Step 8: Make It Mobile!
Mount your arm on a suitably sized vehicular platform. Visit my companion Instructable 1Sheeld Controlled Arduino Vehicle for more information.
Provided here is the "merged code" of both projects.
Control the vehicle and arm using 1Sheeld!