Arm Move Fixed
Arm Move Fixed
net/publication/350236721
CITATIONS READS
0 5,698
7 authors, including:
All content following this page was uploaded by Michael Ray Doria Maligro on 21 March 2021.
SMARTPHONE CONTROL
By:
JOSHUA A. MONTEALEGRE
RAEIDEN M. PANGO
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
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
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
REFERENCES
APPENDIX 1: PROGRAMMING CODES
APPENDIX 2: ROBOT ARM TECHNICAL
DRAWINGS DOCUMENTATION
List of Figures
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
the purpose of a human arm, robotic arms are designed to fulfill tasks determined in a
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
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.
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
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)
This is a module which can add two-way wireless functionality to your projects.
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
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
PHONE ARDUINO
APP USER
BLUETOOTH BLUETOOTH
INTERFACE
RECEIVER
SERVO ARDUINO
MOTOR CHIP
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
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
(a)
(b)
(c)
Figure12. Robot design (a) main structure arm robot. (b) side view of the robot arm.
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).
The Android application used in the project was done with App Inventor. App
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
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
UNO via Bluetooth module. Controlling the robotic arm will be possible by using the
mobile application.
(a)
(b)
The result of the tests indicates the inability of the servo to perform complex
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;
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 (dataIn.startsWith("s2")) {
String dataInS = dataIn.substring(2, dataIn.length());
s2p = dataInS.toInt();
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();
}
}
Aqeel, Adnan. (2018, June 21). Introduction to Arduino Uno. Retrieved from
https://www.theengineeringprojects.com/2018/06/introduction-to-arduino-
uno.html
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.
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