Welcome to the Homemade Manipulator Arm project repository! This project features a DIY robotic arm with 6 degrees of freedom (6DoF) and a gripper. The arm is controlled using 4 MG1501 servos and 3 SG90 servos. The project includes SolidWorks 3D part designs, electrical schemas created with EasyEDA, and the ESP code for controlling the arm. Use PlatformIO in Visual Studio Code (VSCode) to manage and upload the code to the ESP microcontroller.
This project is a homemade manipulator arm designed for educational purposes and hobbyist robotics enthusiasts. The arm is built using 3D-printed parts designed in SolidWorks and controlled using ESP32 microcontroller boards. The control methods include Bluetooth Low Energy (BLE) using the RemoteXY library or manual control using encoders (potentiometers).
The kinematics of the manipulator are represented using the Denavit-Hartenberg (DH) notation as follows:
Link | a | α (deg) | d | θ (deg) |
---|---|---|---|---|
0 | 0 | 90 | 94.85 | 90 |
1 | 104 | 0 | 0 | 90 |
2 | 104 | 0 | 0 | 0 |
3 | 0 | 90 | -7.65 | 90 |
4 | 0 | -90 | 66.6 | 0 |
5 | 0 | 0 | 66.6 | 0 |
a_i
: Represents the link length along the (x_i) axis.α_i
: Represents the twist angle about the (x_i) axis in degrees.d_i
: Represents the link offset along the (z_{i-1}) axis.θ_i
: Represents the joint angle about the (z_{i-1}) axis in degrees.
The manipulator arm features the following components:
-
Servos:
- 4 x MG1501 servos (for joints)
- 3 x SG90 servos (for gripper and the last wrists)
-
Electronics:
- ESP32 microcontroller board
- PCB Board to control the robot
- PCB Board with Potentiometers (for manual control using encoders)
-
3D Parts:
- Various parts designed in SolidWorks for the arm's structure
-
Electrical Schemas:
- Schemas created in EasyEDA for the wiring and electronic components layout
- Full BOM can be found:
For Manipulator
For Potentiometers
The repository is organized as follows:
/Code
├── src/main.cpp # Main file of the Project
├── lib # Folder containing help libraries
/Cad
├── stl # Folder with stl files for 3D
├── *.sldprt # SolidWorks files
printing
/Electrical_Schemas
├── Main Board # Electrical schemas created in EasyEDA for the robot control PCB
├── Potentiometer Board # Electrical schemas created in EasyEDA for the Potentiometer PCB
/docs # Datasheets for some of the components
/robodk # Robodk station with the robot. Note: The movement of the manipulator in robodk is not exactly the same due to robodk mechanism build limitations.
/README.md
To replicate or modify this project, follow these steps:
-
3D Printing:
- Print the 3D parts from the
\Cad\stl
directory using a 3D printer
- Print the 3D parts from the
-
Assembly:
- Assemble the printed parts and servos according to the design
-
Electronics:
Choose one of the following methods:- Option 1: Order PCB Boards:
- Use the provided PCB design files (
*.zip
) in the repository's attachments to order custom PCB boards.
- Manipulator Main PCB
- Potentiometer PCB
- Use the provided PCB design files (
- Option 2: Manual Wiring:
- Refer to the electrical schemas (
Electrical_Schemas
) and wire up the servos, microcontroller, and other components manually based on the schematic PDFs (*.pdf
).
- Manipulator Main Scheme
- Potentiometer Scheme
- Refer to the electrical schemas (
- Option 1: Order PCB Boards:
-
Programming:
- Use PlatformIO in Visual Studio Code (VSCode) to manage and upload the code
-
Control:
- Use the RemoteXY library for BLE control, or wire up potentiometers for manual control
This project was created by Tamir Mhabary. Feel free to contribute by submitting pull requests or reporting issues.
This project is proudly sponsored by PCBWay.
PCBWay provided the manufacturing of the PCB boards and 3D printing services for this project.
PCBWay is a one-stop solution for PCB prototyping, manufacturing, and assembly, as well as 3D printing services. Their high-quality products and excellent customer service make them a top choice for electronics enthusiasts and professionals alike.
Visit PCBWay for more information on their services and to get started on your own projects!
This project is licensed under the MIT License. Feel free to use, modify, or distribute this code and design for personal or educational purposes.