Mechatronics Exercises

Workspace Navigation

5-DOF Robot arm with wifi-control via Blynk

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 18 Next »

Team 1: Eerik Alamikkotervo, Aaro Junnikkala, Olli Heikkilä

Brief Project description

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 added the possibility to save postions and run them peridiocally. 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: . The servos are strongly integrated in the design, so identical servos are used. 

Electromechanical structure (step by step)

1: List of required parts was created



Price in total



Arduino MKR1010


Lend for free


MG966R servo



SG90 servo



Bread board



Jumper cable



USB cable


Old phone charging cable


5V 2A USB power brick


Old phone charging power brick


M3X20 bolt


Clas Ohlson


M3 nut


Clas Ohlson


Plastic tapping screw 2.5X10



2: The body of the robot arm was 3D printed using stl files provided in Howtomechatronics site: Following setting were used for printing (printer Ultimaker 2):



Layer height


Generate Support

ON everywhere

Buil Plate Adhesion

ON, Type: Brim

3: The servos were tested one by one in order to confirm that they work properly before installation.

4: The power cable was created by opening an USB cable and separating  the positive (colour: red) and ground (color: black) wire from the data transfer wires. This modified USB cable was then plugged to and 5V 2A power brick. This power module provides power to the MKR1010 board and all the servos. 5V and 2A is required in order to provide enough power to all the servos. 

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. 


Blynk-app and library

. The robot arm is controlled with blynk mobile application. The app talks with blynk servers and blynk serves talk with the MKR1010 board wifi module. The wifi module and phone have to be connected to internet but they don't have to be in the same network because data is routed via blynk serves not straight via local network. Blynk has also developed a designated Blynk library (named Blynk) for connecting and controlling MCU board like MKR1010. This makes it easy to connect the MKR1010 to the blynk servers and send and reseive data from the application. 

The blynk application has an graphic interface that allows to place different kinds of controls to the dashboard. We used sliders for moving each of the joint servos (rotation angle 0-180 degrees) and buttons for controlling the gripper (open/closed). We also added buttons for saving two positions and and running them. When SAVE POS -button is pressed all the servo angles are saved  to vector and when RUN POS -button is pressed each the servos move to the orientation that was saved in the corresponding vector. 

Smooth servo movements

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.

The final product

Improvement ideas and thoughts about the project

3d-printing is a cheap way to make the robot arm body, but it has some downsides. There are gaps between the parts which puts a lot of load to the servo axis and allows the joints to wiggle. Some of the gaps are shown in the picture below.  This problem could be partially fixed with more accurate design. The other donwside is the soft nature of plastic. You can only screw a fastener once before the hole becomes loose. Thus we would recommend using aluminiun body which can be purchased quite cheaply

We used really cheap servos in this project. The bigger servo model, MG966R servo, worked well and it could handle the weight of the arm quite easily. The smaller SG90 servo however wasn't very accurate or durable and we would recommend replacing it with a better quality one. If budget allows upgrading to stepper motors is recommended. Stepper motors can hold their position and move smoothly without oscillation that the PID control causes to reqular servos. 

We wanted to add inverse kinematics to the robot arm but doing smooth movements even without inverse kinematics turned to be quite challenging with our low quality servos. Thus we weren't able to implement inverse kinematics to our robot arm. For an inverse kinematics project  we would recommend aluminium body and stepper motors. 

  • No labels
No files shared here yet.