0% found this document useful (0 votes)
220 views45 pages

Arm Move Fixed

The document describes the development of an Arduino-based robotic arm that can be controlled via a smartphone application. The robotic arm uses 6 servo motors connected to an Arduino Uno microcontroller to move in 4 axes (up, down, left, right). The Arduino is connected to an HC-05 Bluetooth module to enable wireless control of the robotic arm from an Android phone application. SolidWorks was used to design the mechanical parts of the robotic arm. A 5V power supply provides power to the entire system.

Uploaded by

pramo_dass
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
220 views45 pages

Arm Move Fixed

The document describes the development of an Arduino-based robotic arm that can be controlled via a smartphone application. The robotic arm uses 6 servo motors connected to an Arduino Uno microcontroller to move in 4 axes (up, down, left, right). The Arduino is connected to an HC-05 Bluetooth module to enable wireless control of the robotic arm from an Android phone application. SolidWorks was used to design the mechanical parts of the robotic arm. A 5V power supply provides power to the entire system.

Uploaded by

pramo_dass
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 45

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/350236721

ARDUINO BASED ROBOT ARM WITH SMARTPHONE CONTROL

Method · November 2020

CITATIONS READS
0 5,698

7 authors, including:

Michael Ray Doria Maligro Rochelle Ashley Capangpangan Lao


Mindanao State University - Iligan Institute of Technology Mindanao State University - Iligan Institute of Technology

1 PUBLICATION 0 CITATIONS 2 PUBLICATIONS 0 CITATIONS

SEE PROFILE SEE PROFILE

Francis Ian Pioquinto Joshua Montealegre


Mindanao State University - Iligan Institute of Technology Mindanao State University - Iligan Institute of Technology

2 PUBLICATIONS 0 CITATIONS 2 PUBLICATIONS 0 CITATIONS

SEE PROFILE SEE PROFILE

All content following this page was uploaded by Michael Ray Doria Maligro on 21 March 2021.

The user has requested enhancement of the downloaded file.


MINDANAO STATE UNIVERSITY –

ILIGAN INSTITUTE OF TECHNOLOGY

COLLEGE OF ENGINEERING AND TECHNOLOGY

BACHELOR OF SCIENCE IN MECHANICAL ENGINEERING

ARDUINO BASED ROBOT ARM WITH

SMARTPHONE CONTROL

PROJECT REPORT SUBMITTED TO THE DEPARTMENT OF MECHANICAL

ENGINEERING FOR THE SUBJECT COMPUTER APPLICATIONS FOR

MECHANICAL ENGINEERING (MEC 194)

By:

ROCHELLE ASHLEY C. LAO

DIANNE ROSE S. LUMOSAD

MICHAEL RAY D. MALIGRO

JOSHUA A. MONTEALEGRE

RAEIDEN M. PANGO

FRANCIS IAN L. PIOQUINTO

ELJAY R. RESABA

Subject Adviser:

PETER PANOREL
ABSTRACT

With the advancement of technology and innovation at its peak, fabrication of systems

and designs akin to human skills are increasingly integrated into working task to cater

the rapid surge of human needs. Such innovations are made with the hopes of making

people’s live easier. This paper concentrates on the development of a robotic arm

which is functional to do a pick and place operation and controlled by using a mobile

application via Android phone. Designed to work on predetermined commands, the

robot arm has the ability to move in a 4 axis direction; upward, downward, left and

right direction at a specified angle with 6 servo motors and according to the mobile

app specifications. Designed and realized, the robotic arm control is through the use

of a mobile application, via Bluetooth module, that has been programmed through

Arduino UNO microcontroller.


Table Of Contents:

ABSTRACT
TABLE OF CONTENTS
LIST OF FIGURES
LIST OF TABLES

CHAPTERS
1. INTRODUCTION
2. THEORETICAL INFRASTRUCTURE
2.1. Arduino UNO Microcontroller
2.2. Servo Motors
2.3. HC-05 Bluetooth Module
2.4. Circuit Diagram (Above Board)
2.5. Power
3. BLOCK DIAGRAM
4. ROBOT ARM DESIGN

5. RESULTS AND DISCUSSION


5.1. Projected Method
5.2. Complete Designing of Robot Arm
5.3. Operational of Robot Arm
6. CONCLUSION

REFERENCES
APPENDIX 1: PROGRAMMING CODES
APPENDIX 2: ROBOT ARM TECHNICAL
DRAWINGS DOCUMENTATION
List of Figures

Figure 1 Arduino UNO Microcontroller


Figure 2 Servo Motor TowerPro SG90
Figure 3 Servo Motor TowerPro SG-5010
Figure 4 HC- 05 Bluetooth Module
Figure 5 Circuit
Figure 6 Block Diagram
Figure 7 Schematic diagram
Figure 8 Design of Mechanical Part: Base
Figure 9 Design of Mechanical Part: Arm Body 1
Figure 10 Design of Mechanical Part: Arm Body 2
Figure 11 Design of Mechanical Part: Waist
Figure 12 Robot Design
Figure 13 Mounting of servo motors
Figure 14 Design of the Android Application
Figure 15 Completed Robot Arm
Figure 16 Robot arm workplace
List of Tables
Table 1 Specifications of Servo Motr used
Table 2 Maximum Angle per Servo Motor in the Robot Arm
INTRODUCTION

In the industrial world, automation is one of the most important elements for

development. It avails to reduce the need for humans by creating additional help

systems that can increase efficiency and productivity. The field of automation

manufactures and fabricate sophisticated equipment's which are used daily for people

who needed auxiliary machines in place where their strength was not enough. These

machines, which are operated with the need for human assistance in advance, have

been made to operate spontaneously without the need of human power with the

progress of technology (Safdar, 2015). And one of the most widely used components

of automation systems is robots, and the most common type in the market is the

robotic arm which is commonly used in industrial purposes.

A robotic arm is a mechanical model arm, usually programmable, with similar

functions to a human arm. It is connected by joints allowing either rotational motion

(such as in a articulated robot) or linear displacement (Rajashekar et al.,2012). Akin to

the purpose of a human arm, robotic arms are designed to fulfill tasks determined in a

controlled environment in accordance with predetermined commands.

With technology advancing and the rapid increase in the flow of information,

people are now guided to search different markets that caters with the rapidly

increasing human needs and people have then entered the competition to manufacture

quality products cheaply.

In the project, Arduino UNO Microcontroller written in c+ + language is

programmed and servo motor control is provided. Thus, it is possible to perform the
desired operations by means of the elements located on the Arduino without any

circuit construction other than the circuit where the servo motor inputs are located.

For the mechanical part, the robot arm is drawn with the SolidWorks program and the

dimensions of the robot arm are specified. A 5V power supply is also preferred for the

robot to work.
THEORETICAL INFRASTRUCTURE

The theoretical background of the project is examined below as main headings and

subheadings.

2.1. Arduino UNO Microcontroller

Arduino UNO is an open-source microcontroller word based on the microchip

ATmega328P microcontroller and developed by Arduino cc. It has 14 digital

input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16

MHz crystal oscillator, a USB connection, a power jack, an ICSP header, and a reset

button. The microcontroller was introduced in the electronics industry with the

intention of making tasks easy. It is based on arduino’s past wiring and processing

`projects. Processing is written for nonprogramming users. Arduino wiring is

produced on the basis of programming language (Jetir, 2020).

Figure1. Arduino UNO Microcontroller used


2.2. Servo Motor

It is a type of motor that can rotate an object at some specific angles. It is made up

of simple motor which runs through a servo mechanism. A servo motor usually comes

with a gear arrangement that allows us to get a very high torque servo motor in small

and lightweight packages. Due to these features, they are being used in many

applications like toy car, RC helicopters and planes, robotics, etc. (Apoorve, 2015)

Specifications TowerPro SG-5010 TowerPro SG90

Modulation Digital Analog

4.8V: 76.38 oz-in (5.50 kg-


Torque cm) 4.8V: 25.00 oz-in (1.80 kg-
6.0V: 90.27 oz-in (6.50 kg- cm)
cm)
Length:1.60 in (40.6 mm) Length:0.91 in (23.0 mm)
Dimensions Width:0.81 in (20.5 mm) Width:0.48 in (12.2 mm)
Height:1.50 in (38.0 mm) Height:1.14 in (29.0 mm)
Rotational Range Approximately 180° Approximately 180°
Types of Servo Motors used:

Table 1. Specifications of Servo Motor used


Figure2. TowerPro SG90
Figure3. TowerPro SG- 5010

2.3. HC- 05 Bluetooth Module

This is a module which can add two-way wireless functionality to your projects.

It is used to communicate between microcontrollers or communicate with any device

with Bluetooth functionality. This is considered as the perfect choice if you are

looking for a wireless module that could transfer data from your computer or mobile

phone to a microcontroller or vice versa.

Figure4. HC- 05 Bluetooth Module


2.4. Circuit Diagram (Above Board)

Figure5. Cicuit

2.5. Power

A power supply takes the AC from the AC source then produces a DC output of 2A

and 5V. The power supply chosen to supply the servomotors’ control circuit is

capable of supplying the same current even though all though all the synchronous

servomotors are working.


BLOCK DIAGRAM

PHONE ARDUINO
APP USER
BLUETOOTH BLUETOOTH
INTERFACE
RECEIVER

SERVO ARDUINO
MOTOR CHIP

Figure6. Block diagram of robot arm using Arduino

Figure7. Robot Arm Schematic


ROBOT ARM DESIGN

The robot arm design is divided into two parts, the mechanical design parts and

mechanical installation. In this project, the hardware and software function are

combined to make the system reliable.

4.1. Mechanical Design

Materials needed for the mechanical part of the robot arm were supplied, and were

drawn on SolidWorks in IPS unit form. The Robot Arm will have 5 outputs which consist

of the base, grip, wrist, elbow, shoulder and waist. The robot has a combination of a

round and rectangular base capable of housing the Arduino UNO microcontroller and the

body of the robot arm. Chipboard 20 pt was used as the main material for the construction

of the robot arm because it is easy to be formed, cheap and can bear the motor weight and

movement. The robot degree- of- freedom mechanism is powered by two different type of

servo motors. The robot gripper is also made of plastic filament.

Figure8. Design of mechanical Part: Base


Figure9. Design of Mechanical Part: Arm Body 1

Figure10. Deisgn of Mechanical


Figure11. Design of Mechanical Part: Waist Part: Arm Body 2

(a)

(b)
(c)

Figure12. Robot design (a) main structure arm robot. (b) side view of the robot arm.

(c) robot arm design

4.2. Mechanical Mounting

The robot arm moves in 4 axes with 6 servo motors at a specified position according to

the mobile app specifications. The robot is designed to have a stationary base and

movable arm body with servo motors attached to move the arm. Each servo motor (6) is

assigned as joints of the robot arm which then corresponds, each of it, on the mobile

application namely for the; (s1) waist, (s2) shoulder, (s3) elbow, (s4) wrist roll, (s5)
wrist pitch and (s6) grip. Mounting of servo motors is given on Figure13.

Figure13. Mounting of servo motors (some were enclosed inside the body arm).

4.3. Android Programming

The Android application used in the project was done with App Inventor. App

Inventor is a free web application integrated development environment developed by

Google and later developed by the Massachusetts Institute of Technology (MIT). The

mobile application used was developed and c reated by dragging and dropping

components into a design view and using a visual blocks language to program

application behavior. In this section, the design criterion where many variables such

as the Grip, Wrist Pitch, Wrist Roll, Elbow, Shoulder, Waist, and the Speed of the

arm.

The design of the android application used in the project is shown in Figure14 .
Figure14. Design of the Android Application
RESULTS AND DISCUSSION

5.1. Projected Method


A research on possible designs and basic information about the robotic arm was

initially made. Using Solidworks – a software used for planning, visual ideation, and

feasibility assessment, in finalizing the design. Using 6 servo motors, the robotic arm

could move in different directions and could hold or release things with its gripper.

For the optimal control of the robotic arm, the microcontroller Arduino UNO is used.

This microcontroller was preferably used since it is low cost and good for beginners

especially in writing the program. The program code was written in c+ + language

which is one of the most popular and fundamental programming languages. We also

created a mobile application that will be connected to the microcontroller Arduino

UNO via Bluetooth module. Controlling the robotic arm will be possible by using the

mobile application.

5.2. Complete Designing of Robot Arm

(a)
(b)

Figure15. Completed Robot Arm

5.3. Operational of Robot Arm


The workplace of the robot arm is illustrated in Figure16. For this project the
robot arm has 5-DOF. Table 2 shows the maximum angle that the robot arm can move
(per servo).

Figure16. Robot arm workplace


Table2. The different maximum angle that each servo in the robot arm can move.
No. Servo Part Maximum Angle(°)
1 Waist 180
2 Shoulder 60
3 Elbow 85
4 Wrist Roll 180
5 Wrist Pitch 180
6 Grip 90
RECOMMENDATION

The result of the tests indicates the inability of the servo to perform complex

operations due to certain limiting factors. Successful benchmarks during pre-assembly

show that the communication between the robotic arm and the smartphone is without

issue. It is, however, failing when it comes to post-assembly tests due to the

underpowered servo motor. To increase the performance, a torque not less than that of

a 1501MG servo motor is recommended. Reducing the prototype's density may also

improve the overall usability. PLA (Polylactic acid) is a material with excellent

rigidity to weight ratio and can be manufactured easily with 3-D printing. Saving

operations greater than five directions may also pose a problem to the Arduino board.

Although the code only occupies 60 percent, simultaneous procedures prove to be too

taxing for the processor. Continuous operating modules like the HC-05 also adds to

the performance losses of the CPU. As such, an Arduino Mega is recommended since

it also offers more serial UART and a faster processor than the UNO R3.
APPENDIX 1: PROGRAMMING CODES

#include <SoftwareSerial.h>
#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;

SoftwareSerial Bluetooth(3, 4);

int s1p, s2p, s3p, s4p, s5p, s6p;


int s1pp, s2pp, s3pp, s4pp, s5pp, s6pp;
int s1sp[50], s2sp[50], s3sp[50], s4sp[50], s5sp[50], s6sp[50];
int speedDelay = 20;
int initial = 0;
String dataIn = "";

void setup() {
servo1.attach(5);
servo2.attach(6);
servo3.attach(7);
servo4.attach(8);
servo5.attach(9);
servo6.attach(10);
Bluetooth.begin(9600);
Bluetooth.setTimeout(1);
delay(20);

s1pp = 90;
servo1.write(s1pp);
s2pp = 150;
servo2.write(s2pp);
s3pp = 35;
servo3.write(s3pp);
s4pp = 140;
servo4.write(s4pp);
s5pp = 85;
servo5.write(s5pp);
s6pp = 80;
servo6.write(s6pp);
}

void loop() {

if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString();

if (dataIn.startsWith("s1")) {
String dataInS = dataIn.substring(2, dataIn.length());
s1p = dataInS.toInt();

if (s1pp > s1p) {


for ( int j = s1pp; j >= s1p; j--) {
servo1.write(j);
delay(20);
}
}

if (s1pp < s1p) {


for ( int j = s1pp; j <= s1p; j++) {
servo1.write(j);
delay(20);
}
}
s1pp = s1p;
}

if (dataIn.startsWith("s2")) {
String dataInS = dataIn.substring(2, dataIn.length());
s2p = dataInS.toInt();

if (s2pp > s2p) {


for ( int j = s2pp; j >= s2p; j--) {
servo2.write(j);
delay(50);
}
}
if (s2pp < s2p) {
for ( int j = s2pp; j <= s2p; j++) {
servo2.write(j);
delay(50);
}
}
s2pp = s2p;
}

if (dataIn.startsWith("s3")) {
String dataInS = dataIn.substring(2, dataIn.length());
s3p = dataInS.toInt();
if (s3pp > s3p) {
for ( int j = s3pp; j >= s3p; j--) {
servo3.write(j);
delay(30);
}
}
if (s3pp < s3p) {
for ( int j = s3pp; j <= s3p; j++) {
servo3.write(j);
delay(30);
}
}
s3pp = s3p;
}

if (dataIn.startsWith("s4")) {
String dataInS = dataIn.substring(2, dataIn.length());
s4p = dataInS.toInt();
if (s4pp > s4p) {
for ( int j = s4pp; j >= s4p; j--) {
servo4.write(j);
delay(30);
}
}
if (s4pp < s4p) {
for ( int j = s4pp; j <= s4p; j++) {
servo4.write(j);
delay(30);
}
}
s4pp = s4p;
}

if (dataIn.startsWith("s5")) {
String dataInS = dataIn.substring(2, dataIn.length());
s5p = dataInS.toInt();
if (s5pp > s5p) {
for ( int j = s5pp; j >= s5p; j--) {
servo5.write(j);
delay(100);
}
}
if (s5pp < s5p) {
for ( int j = s5pp; j <= s5p; j++) {
servo5.write(j);
delay(100);
}
}
s5pp = s5p;
}

if (dataIn.startsWith("s6")) {
String dataInS = dataIn.substring(2, dataIn.length());
s6p = dataInS.toInt();
if (s6pp > s6p) {
for ( int j = s6pp; j >= s6p; j--) {
servo6.write(j);
delay(30);
}
}
if (s6pp < s6p) {
for ( int j = s6pp; j <= s6p; j++) {
servo6.write(j);
delay(30);
}
}
s6pp = s6p;
}

if (dataIn.startsWith("SAVE")) {
s1sp[initial] = s1pp;
s2sp[initial] = s2pp;
s3sp[initial] = s3pp;
s4sp[initial] = s4pp;
s5sp[initial] = s5pp;
s6sp[initial] = s6pp;
initial++;
}
// If button "RUN" is pressed
if (dataIn.startsWith("RUN")) {
runservo();
}
/ If button "RESET" is pressed
if ( dataIn == "RESET") {
memset(s1sp, 0, sizeof(s1sp));
memset(s2sp, 0, sizeof(s2sp));
memset(s3sp, 0, sizeof(s3sp));
memset(s4sp, 0, sizeof(s4sp));
memset(s5sp, 0, sizeof(s5sp));
memset(s6sp, 0, sizeof(s6sp));
initial = 0;
}
}
}

void runservo() {
while (dataIn != "RESET") {
for (int i = 0; i <= initial - 2; i++) {
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString();
if ( dataIn == "PAUSE") {
while (dataIn != "RUN") {
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString();
if ( dataIn == "RESET") {
break;
}
}
}
}

if (dataIn.startsWith("ss")) {
String dataInS = dataIn.substring(2, dataIn.length());
speedDelay = dataInS.toInt();
}
}

if (s1sp[i] == s1sp[i + 1]) {


}
if (s1sp[i] > s1sp[i + 1]) {
for ( int j = s1sp[i]; j >= s1sp[i + 1]; j--) {
servo1.write(j);
delay(speedDelay);
}
}
if (s1sp[i] < s1sp[i + 1]) {
for ( int j = s1sp[i]; j <= s1sp[i + 1]; j++) {
servo1.write(j);
delay(speedDelay);
}
}

if (s2sp[i] == s2sp[i + 1]) {


}
if (s2sp[i] > s2sp[i + 1]) {
for ( int j = s2sp[i]; j >= s2sp[i + 1]; j--) {
servo2.write(j);
delay(speedDelay);
}
}
if (s2sp[i] < s2sp[i + 1]) {
for ( int j = s2sp[i]; j <= s2sp[i + 1]; j++) {
servo2.write(j);
delay(speedDelay);
}
}

if (s3sp[i] == s3sp[i + 1]) {


}
if (s3sp[i] > s3sp[i + 1]) {
for ( int j = s3sp[i]; j >= s3sp[i + 1]; j--) {
servo3.write(j);
delay(speedDelay);
}
}
if (s3sp[i] < s3sp[i + 1]) {
for ( int j = s3sp[i]; j <= s3sp[i + 1]; j++) {
servo3.write(j);
delay(speedDelay);
}
}

if (s4sp[i] == s4sp[i + 1]) {


}
if (s4sp[i] > s4sp[i + 1]) {
for ( int j = s4sp[i]; j >= s4sp[i + 1]; j--) {
servo4.write(j);
delay(speedDelay);
}
}
if (s4sp[i] < s4sp[i + 1]) {
for ( int j = s4sp[i]; j <= s4sp[i + 1]; j++) {
servo4.write(j);
delay(speedDelay);
}
}

if (s5sp[i] == s5sp[i + 1]) {


}
if (s5sp[i] > s5sp[i + 1]) {
for ( int j = s5sp[i]; j >= s5sp[i + 1]; j--) {
servo5.write(j);
delay(speedDelay);
}
}
if (s5sp[i] < s5sp[i + 1]) {
for ( int j = s5sp[i]; j <= s5sp[i + 1]; j++) {
servo5.write(j);
delay(speedDelay);
}
}

if (s6sp[i] == s6sp[i + 1]) {


}
if (s6sp[i] > s6sp[i + 1]) {
for ( int j = s6sp[i]; j >= s6sp[i + 1]; j--) {
servo6.write(j);
delay(speedDelay);
}
}
if (s6sp[i] < s6sp[i + 1]) {
for ( int j = s6sp[i]; j <= s6sp[i + 1]; j++) {
servo6.write(j);
delay(speedDelay);
}
}
}
}
}
APPENDIX 2: ROBOT ARM TECHNICAL DRAWINGS
REFERENCES

Aqeel, Adnan. (2018, June 21). Introduction to Arduino Uno. Retrieved from
https://www.theengineeringprojects.com/2018/06/introduction-to-arduino-
uno.html

Anonymous. (2018, March 10). HC-05 – Bluetooth Module. Retrieved from


https://components101.com/wireless/hc-05-bluetooth-module

Hemmings, Megan. (2018, January 30). What is a Jumper Wire?. Retrieved from
http://blog.sparkfuneducation.com/what-is-jumper-wire

Apoorve. (2015, August 1). What is a Servo Motor? – Understanding the Basics of
Servo Motor Working. Retrieved from https://circuitdigest.com/article/servo-
motor-working-and-
basics#:~:text=A%20servo%20motor%20is%20a,to%20rotate%20with%20great
%20precision.

TowerPro SG-5010 Servo. (n.d.). Retrieved from


https://servodatabase.com/servo/towerpro/sg-5010

TowerPro SG90 Servo. (n.d.). Retrieved from


https://servodatabase.com/servo/towerpro/sg90

Radu. (2020, September 29). What is a Power Bank? Power Banks Explained.
(n.d.). Retrieved from https://www.powerbankexpert.com/what-is-a-power-bank-
power-banks-explained/
View publication stats

You might also like