Braccio Robotic Arm
The TinkerKit Braccio is a sophisticated and fully operational robotic arm designed to be controlled by an Arduino microcontroller. Developed by TinkerKit, Braccio offers a versatile platform for robotics enthusiasts and professionals alike, providing the flexibility to be assembled in various configurations to perform multiple tasks.
Key Features
Versatile Assembly:
The Braccio robotic arm can be assembled in different ways, allowing it to adapt to a wide range of applications. Whether it’s lifting objects, performing precise movements, or interacting with the environment, Braccio’s modular design makes it capable of handling diverse tasks.
End Effector Support:
The arm is equipped with an end effector that can support various objects, enhancing its versatility. This feature allows Braccio to be used in applications such as picking and placing objects, holding tools, or even performing intricate operations that require precision.
Arduino Controlled:
At the core of its functionality is the Arduino microcontroller, which provides powerful yet user-friendly control over the robotic arm. Using Arduino, users can program Braccio to perform complex sequences of movements and tasks, leveraging the vast ecosystem of Arduino libraries and resources.
Educational and Practical Applications:
Braccio is ideal for educational purposes, allowing students and hobbyists to learn about robotics, programming, and automation. Additionally, it is suitable for practical applications in fields like manufacturing, research, and development where precise robotic manipulation is required.
Braccio assembly configurations and end-effector options [Image courtesy of Arduino.org/braccio]
Assembly
Braccio robotic arm comes with a detailed assembly instruction manual that can be found here, download an electronic copy. Besides, Arduino.org has also provided a video that shows step by step instructions on how to assemble the robotic arm.
The Braccio robotic arm kit comes with a comprehensive set of components to build a fully functional robotic arm. The kit includes the following items:
Assembly Hardware
Screws: Various sizes for securing different parts of the arm.
Flat Washers: Used with screws to distribute the load and prevent damage to surfaces.
Hexagon Nuts: For securing screws in place, providing a tight and secure fit.
Springs: Used in specific joints to provide tension and movement control.
Motors and Electronics
Servo Motors:
2 x SR 311: Smaller servos for fine movements.
4 x SR 431: Larger servos for more substantial movements and load-bearing parts of the arm.
Arduino Compatible Shield: A shield that allows easy connection of the servo motors to the Arduino microcontroller.
Tools and Accessories
Phillips Screwdriver: A basic tool required for assembling the screws and nuts.
Spiral Cable Protection Wrap: Used to organize and protect the cables from wear and tear during arm movement.
Assorted Plastic Parts: Various plastic components that form the structure of the robotic arm, including the base, joints, and end effector.
Assembly Steps
Organize the Components:
Lay out all the parts and tools. Ensure you have all the necessary components as listed.
Assemble the Base:
Start by assembling the base of the robotic arm using the provided screws, flat washers, and hexagon nuts. Secure the base firmly as it will support the entire structure.
Attach the Servo Motors:
Install the SR 431 servos in the base and main joints of the arm. Use the appropriate screws and washers to secure them in place.
Attach the SR 311 servos in the finer joint areas where precise movements are required.
Connect the Joints:
Connect the assorted plastic parts to form the arm structure. Follow the instructions to ensure each part is correctly oriented and secured.
Use the springs in specified joints to provide necessary tension and smooth movement.
Install the Arduino Shield:
Attach the Arduino-compatible shield to your Arduino board. Connect the servo motor cables to the shield, ensuring each motor is connected to the correct pin.
Organize the Cables:
Use the spiral cable protection wrap to bundle and protect the servo motor cables. This prevents tangling and damage during arm operation.
Power Supply Connection:
Connect the 5V, 5A power supply to the Arduino and the servo motors. Ensure all connections are secure and correctly oriented to prevent damage.
Final Assembly Check:
Go through all the connections and assemblies to make sure everything is tight and correctly positioned. Double-check the alignment of the servos and joints.
With all components properly assembled and connected, the Braccio robotic arm is now ready for programming and operation. Follow the provided software instructions to start controlling the arm with your Arduino, and explore the various configurations and tasks the Braccio can perform. This versatile and educational project provides a hands-on experience with robotics, mechanical assembly, and Arduino programming.
Braccio Motor Shield
The Braccio Motor shield is used to drive the six servo motors. The shield will be installed stacked directly onto the Arduino UNO or Arduino Mega 2560 boards. The Braccio shield connectors labeled M1 through M6 are connected to the PWM capable outputs of the Arduino board and are used to drive the six servo motors of the Braccio robotic arm.
Besides, the 4-pin TWI connector (blue) allows the Arduino board to communicate with devices that support the TWI (Two Wire Interface) or I2C (Inter-Integrated Circuit) protocol through the Wire library in Arduino.
Braccio motor shield
Key Features
Servo Motor Control:
Connectors M1 to M6: These connectors are labeled and correspond to the six servo motors of the Braccio robotic arm. Each connector is tied to the Pulse Width Modulation (PWM) capable outputs of the Arduino board, facilitating precise control over the servos' positions and movements.
TWI (I2C) Communication:
4-pin TWI Connector (Blue): This connector allows the Arduino board to communicate with other devices that support the TWI (Two Wire Interface) or I2C (Inter-Integrated Circuit) protocol. Using the Wire library in Arduino, users can implement communication with sensors, displays, and other peripherals that use the I2C protocol.
Serial Communication:
4-pin SERIAL Connector (Yellow): This connector supports serial communication with other devices. It is important to note that the pins on this connector are not labeled. Users should check the continuity between these pins and the shield header pins to identify their functions. Starting from the end near the reset button, the sequence is GND, +5V, TX, and RX. Verifying these pinouts is essential to avoid miscommunications and potential damage to connected devices.
Stackable Design:
The Braccio Motor Shield is designed to stack directly onto the Arduino UNO or Mega 2560 boards. This stacking design simplifies the setup process and ensures a stable and secure connection between the shield and the Arduino.
Important Considerations
Serial Communication Limitation:
When using the serial connector for communication, it is not available for sending or receiving data to and from the computer. This limitation can be overcome by using the Arduino Mega 2560, which provides additional TX/RX ports. The Mega 2560 has multiple serial ports (Serial1, Serial2, and Serial3), allowing you to maintain computer communication while also interfacing with other serial devices.
Power Supply:
Ensure the power supply connected to the shield is adequate to drive all six servo motors. The recommended power supply for the Braccio robotic arm is 5V, 5A, which provides sufficient current for all motors under typical operating conditions.
Braccio shield connectors:
Connectors M1 to M6: These connectors correspond to the six servo motors of the Braccio robotic arm. Each connector is tied to the Pulse Width Modulation (PWM) capable outputs of the Arduino board, facilitating precise control over the servos' positions and movements. Here is the detailed mapping of the connectors to their respective functions: (Motor M1-M6 serve as digital outputs)
M1: Controls the base rotation from 0 to 180 degrees.
M2: Controls the shoulder movement from 15 to 165 degrees.
M3: Controls the elbow movement from 0 to 180 degrees.
M4: Controls the wrist vertical movement from 0 to 180 degrees.
M5: Controls the wrist rotation from 0 to 180 degrees.
M6: Controls the gripper, with 10 degrees indicating fully open and 73 degrees indicating fully closed.
Braccio motor shield and Arduino uno. Image courtesy of Arduino.org/braccio
The terminal connectors on the Braccio Motor Shield are mapped to the following pins on the shield and the Arduino board:
Pinouts
The Braccio Motor Shield features 12 standard 3-pin connectors. The orange connectors labeled M1 through M6 are connected to the PWM-capable outputs of the Arduino board and can drive either servo motors or LED lights. The connectors labeled I0 through I5 serve as analog inputs.
Here is the detailed mapping of the connectors to their respective pins on the shield and the Arduino board:
M1: Pin 11 - Controls the base rotation from 0 to 180 degrees.
M2: Pin 10 - Controls the shoulder movement from 15 to 165 degrees.
M3: Pin 9 - Controls the elbow movement from 0 to 180 degrees.
M4: Pin 6 - Controls the wrist vertical movement from 0 to 180 degrees.
M5: Pin 5 - Controls the wrist rotation from 0 to 180 degrees.
M6: Pin 3 - Controls the gripper, with 10 degrees indicating fully open and 73 degrees indicating fully closed.
Analog Inputs:
Connectors I0 to I5: These connectors serve as analog inputs, allowing the Arduino to read sensor data or other analog signals. Here is the detailed mapping of these connectors to their respective pins:
I0: Pin A0 (aka 14)
I1: Pin A1 (15)
I2: Pin A2 (16)
I3: Pin A3 (17)
I4: Pin A4 (18)
I5: Pin A5 (19)
Software Integration for Braccio Robotic Arm
To begin controlling the Braccio robotic arm, the first step is to download and install the TinkerKit Braccio Library. This can be done either from the Arduino website or directly through the Library Manager in the Arduino Software (IDE). Simply search for "Braccio" in the Library Manager and install the TinkerKit Braccio Library.
Once the library is installed, you can begin programming the Braccio robotic arm using the provided functions. The library offers two main functions for controlling the arm:
Braccio.Begin(): This function initializes the Braccio robotic arm and prepares it for operation.
Braccio.ServoMovement(): This function controls the movement of the servos in the robotic arm. It takes parameters including the step delay and the positions of each servo motor (M1 to M6).
#include <Braccio.h>
void setup() {
Braccio.Begin(); // Initialize the Braccio robotic arm
}
void loop() {
// Set desired positions for each servo motor
// Adjust the step delay and servo positions as needed
// Example movement
Braccio.ServoMovement(50, 90, 90, 90, 90, 90, 90);
delay(1000); // Delay between movements
}
Simple Movement Test
To perform a basic movement test with the Braccio robotic arm, you can use the Braccio.ServoMovement() function to set the desired positions for all servo motors. Below is an example code snippet taken from the Arduino IDE example folder:
#include <Braccio.h>
#include <Servo.h>
Servo base;
Servo shoulder;
Servo elbow;
Servo wrist_rot;
Servo wrist_ver;
Servo gripper;
void setup() {
Braccio.begin();
}
void loop() {
// (step delay, M1, M2, M3, M4, M5, M6);
Braccio.ServoMovement(20, 0, 15, 180, 170, 0, 73);
//Wait 1 second
delay(1000);
Braccio.ServoMovement(20, 180, 165, 0, 0, 180, 10);
//Wait 1 second
delay(1000);
}
To locate this example code in the Arduino IDE, navigate to:
File => Examples => Braccio => SimpleMovements
In this example, the Braccio.ServoMovement() function sets all servo motors to specific positions (in degrees) with a step delay of 50 milliseconds between movements. You can modify the servo positions and step delay according to your requirements.
/*
Step Delay: a milliseconds delay between the movement of each servo.
Allowed values from 10 to 30 msec.
M1=base degrees.
Allowed values from 0 to 180 degrees
M2=shoulder degrees.
Allowed values from 15 to 165 degrees
M3=elbow degrees.
Allowed values from 0 to 180 degrees
M4=wrist vertical degrees.
Allowed values from 0 to 180 degrees
M5=wrist rotation degrees.
Allowed values from 0 to 180 degrees
M6=gripper degrees.
Allowed values from 10 to 73 degrees. (10: is open, and 73: is closed)
*/
By running this example code, you can observe the Braccio robotic arm performing basic movements according to the specified servo positions. This serves as a starting point for further experimentation and integration of more complex movements and functionalities.
»»» END of Braccio Robotic Arm »»»