5-DOF Robot arm with wifi-control via Blynk
The goal of this project is to build a 5-DOF Robot arm with wifi-control via Blynk-app. 5-DOF means that the robot arm will have 5 joints, which all have their own servo plus one additional servo for controlling the gripper. Each of the servos will have their own slider control in the blynk app. Additionally we trie to add a added the possibility to save positions postions and run them periodically and inverse kinematics controlperidiocally. The hearth of this project is a Arduino MKR1010 with built in wifi and bluetooth connectivity. The robot arm body is 3d-printed according to the stl.files offered in the site: https://howtomechatronics.com/tutorials/arduino/diy-arduino-robot-arm-with-smartphone-control/ . The servos are strongly integrated in the design, so identical servos are used.
Current state of the project
The Robot arm is mechanically completed and the basics servo controls work. Inverse kinematics, postioion saving and smoother movements are under development.
Step by step instructions
In this section we present step by step instructions for building this robot arm including mechanical and electrical components and software
1: List of required parts was created
5: The servos were installed to the body and after that body parts were installed together. Necessary screws were provided with the servos, but the quality was so poor that better quality tapping screws had to be purchased. In the picture the self purchased better quality screw is above the low quality one provided with servos.
1: Controlling the arm was done with Blynk over Wi-Fi. Arduino has ready to use libraries for running Blynk and for controlling the servos. The code for stabilising the arm was written by ourselves. The operating principle of the stabilising code was simple: move the servos little by little until the angle is in a set tolerance. The stabilising was urgently needed only for the servo that tilts the grappler. When the grappler points straight down the resistance for the servo is very small which causes the PID controller of the servo to overdue to the movements and the grappler starts to oscillate. This position is shown in the picture below. The stabilising wasn’t required for the rest of the servos but it seems to improve the smoothness and accuracy of the movement so we are planning to implement the stabilising code to other servos too.
What is left to do
- Optimize movement speed/stability relationship by testing with different delay values and adjusting servo motor position resolution within the code
- Find an Arduino library for kinematics that supports at least 3-DOF
- Create a system to move the robot to a specific position using inverse kinematics
- Organize cable management and attach the robot onto a stand
Current problems and challenges
- Finding a library that supports 5-DOF is challenging. 3-DOF is available, which means that we can only have translation in the X,Y,Z domain but not rotation around any axis using the 3-DOF library. However the rotation can be used by open loop control (blynk sliders).