Está en la página 1de 22

UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO

FACULTAD DE INGENIERÍA CIVIL, SISTEMAS Y


ARQUITECTURA

IMPLEMENTACION DE CODIGO Y DESARROLLO DE UNA


APLICACION MOVIL CONTROLADO POR BLUETOOTH
PARA CARRO Y BRAZO ROBOTICO

ASIGNATURA:

ROBÓTICA.

INTEGRANTES:
DELGADO BARBOZA, YORDIN RAY
FERNANDEZ GASTELO, WILLY
HUAMAN CALLE, ELMER
SEGUNDO ORTIZ, GUSTAVO
ZORRILLA SEGURA, JOEL

DOCENTE:
RODRIGUEZ CHIRINOS, FRANK.

LAMBAYEQUE, agosto del 2019.

1
Contenido

IMPLEMENTACION DE CODIGO Y DESARROLLO DE UNA APLICACIÓN MOVIL


CONTROLADO POR BLUETOOTH PARA CARRO Y BRAZO ROBOTICO ............................ 3
I. INTRODUCCION ..................................................................................................... 3
II. IMPLEMENTACION DEL CODIGO PARA EL CARRO Y BRAZO ROBOTICO ............. 4
FUNCIONALIDAD .......................................................................................................... 4
EXPLICACIÓN DEL CÓDIGO ........................................................................................... 4
FUNCIONES DEL BRAZO ROBÓTICO ............................................................................. 8
FUNCIONES DEL CARRO ............................................................................................. 10
III. APLICACÍON MOVIL PARA EL CONTROL DEL BRAZO ROBOTICO (ARDUINO) 12
DESCRIPCION DE LOS PANELES DE LA INTERFAZ DE LA APLICACIÓN. ...................... 13
PROGRAMACIÓN EN BLOQUE DE LA APLICACIÓN MOVIL. .......................................... 14
PROGRAMACION DEL PANEL DE CONEXIÓN BLUETOOH. ........................................ 14
PROGRAMACION DEL PANEL DE CONTROL DEL BRAZO ROBOTICO. ....................... 15
1. CONTROL MUÑECA. ........................................................................................ 15
2. CONTROL CODO .............................................................................................. 15
3. CONTROL HOMBRO. ....................................................................................... 16
4. CONTROL BASE ................................................................................................ 16
PROGRAMACION DEL PANEL DE CONTROL DEL MOVIMIENTO DEL CARRO ........... 17
1. ACELERAR ........................................................................................................ 17
2. GIRAR IZQUIERDA ........................................................................................... 17
3. GIRAR DERECHA .............................................................................................. 18
4. RETROCEDER.................................................................................................... 18
5. DETENER. ......................................................................................................... 19
IV. CONCLUSIONES ............................................................................................... 20
V. RECONOCIMIENTO .............................................................................................. 20
VI. ANEXOS ............................................................................................................ 21
VII. REFERENCIAS: .................................................................................................. 22

2
IMPLEMENTACION DE CODIGO Y DESARROLLO DE UNA APLICACIÓN
MOVIL CONTROLADO POR BLUETOOTH PARA CARRO Y BRAZO
ROBOTICO

I. INTRODUCCION

EL presente proyecto consiste en la implementación de código en arduino y desarrollo


de una aplicación móvil controlado por bluetooth para un carro y un brazo robótico, que
permitirá el poder coger distintos objetos así como moverlos y cambiarlos de posición
o, reposicionarlos.
Debemos tener en cuenta sobre Fundamentos de Programación para este trabajo, se
necesita conceptos básicos y algunos avanzados de programación en “Arduino” para así
conseguir la automatización de las piezas.
Para lograr el objetivo del proyecto dado por el docente, los integrantes del grupo
acordamos que para el proyecto a desarrollar se haga uso de la aplicación Appinventor
para el desarrollo de las interfaces que nos permitirá el movimiento del robot por medio
de bluetooth.

PALABRAS CLAVE
 Robótica
 Arduino
 Bluetooth
 Android

3
II. IMPLEMENTACION DEL CODIGO PARA EL CARRO Y BRAZO ROBOTICO
FUNCIONALIDAD

 Parte de Carro:

El código permite desplazar el carro a la derecha, izquierda, adelante y

atrás. Además de detenerse

 Parte del Brazo Robotico:

El código permite mover el codo, la muñeca, el brazo y el hombre de

manera independiente de acuerdo a ángulo que se le envía mediante la

app.

EXPLICACIÓN DEL CÓDIGO


Incluimos la librería para utilizar el servomotor y bluetooh
#include <Servo.h> //Incluimos la librería Servomotor
#include <SoftwareSerial.h>
SoftwareSerial I2CBT(0, 1);
bool automatico = false;//Modo de control (Automático=true, Manual=false)
char stateBt ; // Estado del Puerto Serial BLUETOOTH
String readString;

Servo servoMotorBase,servoMotorHombro,servoMotorCodo,servoMotorMunieca;

#define AMI 5
#define BMI 4
#define AMD 3
#define BMD 2

4
Establecemos los pines de salida y los asignamos a cada servomotor, también

declaramos la velocidad de transmisión del bluetooh a 9600 baudios y asignamos el

ángulo inicial a cada servomotor

void setup() {
pinMode(13, OUTPUT);
I2CBT.begin(9600); // transmisión de datos en serie. CON EL BLUETOOTH
Serial.begin(9600); //Establece la velocidad de datos en bits por segundo
(baudios) para la transmisión de datos en serie. CON LA COMPUTADORA
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);

//Asociamos cada servomotor a un pin


servoMotorBase.attach(11);
servoMotorHombro.attach(10);
servoMotorCodo.attach(9);
servoMotorMunieca.attach(8);
//Asignamos un ángulo a cada servomotor
servoMotorBase.write(90);
servoMotorHombro.write(100);
servoMotorCodo.write(164);
servoMotorMunieca.write(0);
delay(10); // Introducimos 1 segundo de espera antes de entrar en el bucle
}

Recibimos los datos del bluetooh enviados desde el celular mediante el método

bluetoothControl() y lo ponemos en un bucle.

void loop()
{
bluetoothControl(); //Recibe los datos por BT enviados desde el celular.
}

5
El método bluetoothControl evaluamos primero si se recibe algún dato después se

crea una variable llamada stateBt el cual lee el dato recibido.

Después se evalúa el contenido de stateBt si es:

 “A” – Base

 “B” – Hombro

 “C” – Codo

 “D” – Muñeca

 “E” – acelerarCarro

 “F” – retrocederCarro

 “G” – girarCarroDerecha

 “H” – girarCarroIzquierda

 “I” – apagarCarro

 “X” — Si ya no se está presionando nada

Y Se llaman a cada método

void bluetoothControl() {
if (Serial.available() > 0) {
stateBt = Serial.read();
//stateBt = I2CBT.read(); //si no funciona la conexión por bt, comentar
esta fila, descomentar la anterior

if (stateBt == 'A') {//M1: ángulo del servo tronco o base (entre 0° y


180°)
base();
}

6
if (stateBt == 'B') { // M2: ángulo del servo hombro (entre 15° y 165°).
hombro();
}
if (stateBt == 'C') { //M3: ángulo del servo codo (entre 0° y 180°).
//función
codo();
}
if (stateBt == 'D') { //M4: ángulo del servo muñeca elevación (entre 0° y
180°).
//función
munieca();
}

//Estados para controlar el carro


if (stateBt == 'E') {//Acelerar carro
//función
acelerarCarro();
//delay (1500); //distancia vertical
digitalWrite(13, LOW);
}

if (stateBt == 'F') {//Retroceder carro


//función
retrocederCarro();
//delay (1500) ;//distancia vertical
digitalWrite(13, LOW);
}

if (stateBt == 'G') { //Girar a la derecha carro


//función
girarCarroDerecha();
// delay(620);
digitalWrite(13, LOW);
}

if (stateBt == 'H') { //Girar a la izquierda carro

7
//función
girarCarroIzquierda();
// delay(620);
digitalWrite(13, LOW);
}

if (stateBt == 'I') {//frenar carro


//función
apagarCarro();
// delay(100);
digitalWrite(13, LOW);
}

if (stateBt == 'X') {//CUANDO deja de presionar los botos del carro


digitalWrite(13, HIGH);
}

FUNCIONES DEL BRAZO ROBÓTICO


Aquí están los métodos base, hombro, codo y muñeca en donde primero se evalúa los

datos recibidos mediante el ciclo while y se crea la variable local c en donde se almacena,

luego se va concatenando en el variable readString.

Después se comprueba que la variable readString no esté vacía y luego se extrae de la

cadena los valores correctos ya que al hacer un debug los datos contienen caracteres

extraños por este motivo se reemplaza con ceros y posteriormente se hace pasa a

entero. Para que finalmente se escriba como paramento en el servomotor.

void base() {

8
delay(10);
while (Serial.available()) {
char c = Serial.read();

readString += c;
}
if (readString.length() > 0) {
String aux=readString.substring(4,9);
aux.replace('"',0);

servoMotorBase.write(aux.toInt());

readString = "";
}
}

void hombro() {
delay(10);
char c;
while (Serial.available()) {
c = Serial.read();
readString +=c;

if (readString.length() > 0) {

String aux=readString.substring(4,9);
Serial.println(aux);
aux.replace('"',0);
int aux2=90-(aux.toInt());
servoMotorHombro.write(aux2);
readString = "";
}
}

9
void codo () {
delay(10);
while (Serial.available()) {
char c = Serial.read();
readString += c;
}
if (readString.length() > 0) {
String aux=readString.substring(4,9);
aux.replace('"',0);
servoMotorCodo.write(aux.toInt());
//delay(1500);
readString = ""; //clear string
}
}

void munieca() {
delay(10);
while (Serial.available()) {
char c = Serial.read();

readString += c;
}
if (readString.length() > 0) {

String aux=readString.substring(4,9);
aux.replace('"',0);
servoMotorMunieca.write(aux.toInt());

readString = "";
}
}

FUNCIONES DEL CARRO


Aquí están los métodos acelerar, retroceder girar a la derecha e izquierda y apagar

10
void acelerarCarro() {
digitalWrite (AMI, LOW);
digitalWrite (BMI, HIGH);
digitalWrite (AMD, LOW);
digitalWrite (BMD, HIGH);
}

void retrocederCarro() {
digitalWrite (AMI, HIGH);
digitalWrite (BMI, LOW);
digitalWrite (AMD, HIGH);
digitalWrite (BMD, LOW);
}
void girarCarroDerecha() {
digitalWrite (AMI, LOW);
digitalWrite (BMI, HIGH);
digitalWrite (AMD, HIGH);
digitalWrite (BMD, LOW);
}
void girarCarroIzquierda() {
digitalWrite (AMI, HIGH);
digitalWrite (BMI, LOW);
digitalWrite (AMD, LOW);
digitalWrite (BMD, HIGH);
}

void apagarCarro() {
digitalWrite (AMI, LOW);
digitalWrite (BMI, LOW);
digitalWrite (AMD, LOW);
digitalWrite (BMD, LOW);
}

11
III. APLICACÍON MOVIL PARA EL CONTROL DEL BRAZO ROBOTICO (ARDUINO)
Para el diseño y la programación de la aplicación móvil se utilizó la
plataforma appInventor que es una herramienta de programación creada por
el MIT (Instituto Tecnológico de Massachusetts) y que fue adoptada por Google para sus
usuarios como solución para crear de una forma sencilla aplicaciones para dispositivos
Android.
Dicha aplicación por medio de bluetooth será capaz de controlar remotamente un brazo
robótico integrado a un carro móvil.
A continuación, se detalla el diseño de esta.

Como podemos observar en la imagen anterior de diseño el bosquejo del interfaz que
será capaz de intuir una forma fácil y sencilla para el usuario final que disponga de
controlar el brazo robótico por medio de esta aplicación.

12
DESCRIPCION DE LOS PANELES DE LA INTERFAZ DE LA APLICACIÓN.
En la parte superior encontramos el botón que nos da la facilidad para podernos
conectar al módulo bluetooth que se encuentra integrado al brazo robótico.

Como segundo punto encontramos el panel del control del brazo robótico, el cual nos
ofrece la posibilidad por medio de un scroll de elegir los valores en grados que
mandaremos al Arduino para que este controle los movimientos del brazo robótico,
como son la muñeca, codo, hombro, y base. Ya que este brazo robótico está diseñado
con 4 grados de libertad.

Y en el parte inferior de la interfaz de la aplicación encontramos el panel que nos facilita


el movimiento del carro que sujeta el brazo robótico, como se visualiza incluye los
botones para desplazarse adelante, atrás, izquierda, derecha y detener que corresponde
al botón de en medio.

13
PROGRAMACIÓN EN BLOQUE DE LA APLICACIÓN MOVIL.

PROGRAMACION DEL PANEL DE CONEXIÓN BLUETOOH.

La imagen superior corresponde a la programación del botón que nos permitirá ver los
dispositivos bluetooth vinculados con nuestro teléfono móvil para posteriormente
conectarnos a él, y una vez conectados nos mostrará una alerta comunicándonos que la
conexión se ha realizado con éxito, una vez realizado esto ya es posible controlar el brazo
robótico por medio de la app, ya que ya estamos conectados con la vía remota por
medio del bluettooth.

14
PROGRAMACION DEL PANEL DE CONTROL DEL BRAZO ROBOTICO.
1. CONTROL MUÑECA.

Como observamos en la imagen superior corresponde a la programación en bloque del


control de la muñeca del brazo robótico, por medio del deslizador se obtiene el valor
que selecciona el usuario para que este posteriormente vaya al código que interpreta el
Arduino el cual entrará en un método que tenga como un parámetro igual a “D” que es
el método que moverá la muñeca del brazo del robot en “x” grados que seleccione el
usuario.

2. CONTROL CODO

Como observamos en la imagen superior corresponde a la programación en bloque del


control del codo del brazo robótico, por medio del deslizador se obtiene el valor que
selecciona el usuario para que este posteriormente vaya al código que interpreta el
Arduino el cual entrará en un método que tenga como un parámetro igual a “C” que es
el método que moverá el codo del brazo del robot en “x” grados que seleccione el
usuario.

15
3. CONTROL HOMBRO.

Como observamos en la imagen superior corresponde a la programación en bloque del


control del hombro del brazo robótico, por medio del deslizador se obtiene el valor que
selecciona el usuario para que este posteriormente vaya al código que interpreta el
Arduino el cual entrará en un método que tenga como un parámetro igual a “B” que es
el método que moverá el hombro del brazo del robot en “x” grados que seleccione el
usuario.

4. CONTROL BASE

Como observamos en la imagen superior corresponde a la programación en bloque del


control de la base del brazo robótico, por medio del deslizador se obtiene el valor que
selecciona el usuario para que este posteriormente vaya al código que interpreta el
Arduino el cual entrará en un método que tenga como un parámetro igual a A” que es
el método que moverá la base del brazo del robot en “x” grados que seleccione el
usuario.

16
PROGRAMACION DEL PANEL DE CONTROL DEL MOVIMIENTO DEL CARRO
1. ACELERAR

Las imágenes superiores corresponden a la programación en bloque del método


acelerar, el cual obtiene el valor cuando el usuario presiona el botón de acelerar en la
aplicación para que este posteriormente envié estos datos al código del Arduino en el
cual se interpreta que el usuario desea acelerar el carro que da soporte al brazo
robótico.
2. GIRAR IZQUIERDA

17
Las imágenes superiores corresponden a la programación en bloque del método girar
izquierda, el cual obtiene el valor cuando el usuario presiona el botón de girar izquierda
en la aplicación para que este posteriormente envié estos datos al código del Arduino
en el cual se interpreta que el usuario desea girar a la izquierda el carro que da soporte
al brazo robótico.

3. GIRAR DERECHA

Las imágenes superiores corresponden a la programación en bloque del método girar


derecha, el cual obtiene el valor cuando el usuario presiona el botón de girar derecha
en la aplicación para que este posteriormente envié estos datos al código del Arduino
en el cual se interpreta que el usuario desea girar a la derecha el carro que da soporte
al brazo robótico.

4. RETROCEDER

18
Las imágenes superiores corresponden a la programación en bloque del método
retroceder, el cual obtiene el valor cuando el usuario presiona el botón de retroceder
en la aplicación para que este posteriormente envié estos datos al código del Arduino
en el cual se interpreta que el usuario desea retroceder el carro que da soporte al brazo
robótico.

5. DETENER.

Las imágenes superiores corresponden a la programación en bloque del método frenar,


el cual obtiene el valor cuando el usuario presiona el botón de frenar en la aplicación
para que este posteriormente envié estos datos al código del Arduino en el cual se
interpreta que el usuario desea frenar el carro que da soporte al brazo robótico.

19
IV. CONCLUSIONES

Se ha desarrollado la programación de Arduino destinada al control del carro y brazo


robótico. Concretamente se buscaba que el robot alcance objetos con la pinza con una
gran precisión.

La creación de la aplicación desarrollada en AppInventor es sencilla y permite crear


aplicaciones funcionales. La aplicación creada presenta una interfaz sencilla, con
variedad de funciones. La creación del programa en Arduino y de la App ha tenido que
hacerse de forma simultánea ya que se requiere una comunicación entre los dos
dispositivos.

En conclusión, se ha logrado dotar de funcionalidad al carro y brazo robótico partiendo


del control angular de los servomotores, llegando a poder controlarlo mediante
bluetooth con un smartphone con funciones tales como posicionamiento en
coordenadas cartesianas, movimiento automático, movimiento de la pinza y variación
de su velocidad.

V. RECONOCIMIENTO

Agradecer al ingeniero Frank Rodríguez Chirinos por los conocimientos compartidos, los
cuales a través de este proyecto nos permitieron reforzar conceptos propios de esta
asignatura.

20
VI. ANEXOS

21
VII. REFERENCIAS:

1. https://www.youtube.com/watch?v=Ei43v93NEMQ&t=339s
2. https://github.com/luigi-castillo/carro-brazo-robot
3. https://riunet.upv.es/bitstream/handle/10251/49798/TFGOihanElesgaraySusie
rra_14049863024173195901317328014027.pdf?sequence=2
4. https://upcommons.upc.edu/bitstream/handle/2117/109557/TFG_MarcRuiz_R
icardLlauger_memoria.pdf?sequence=1&isAllowed=y
5. https://www.instructables.com/id/Brazo-Rob%C3%B3tico-Con-Agarre-
Autom%C3%A1tico-Y-Movilidad/
6. https://upcommons.upc.edu/bitstream/handle/2117/109557/TFG_MarcRuiz_R
icardLlauger_memoria.pdf?sequence=1&isAllowed=y
7. http://academica-e.unavarra.es/bitstream/handle/2454/29248/MemoriaTFG-
Alvaro%20Iba%C3%B1ez%20Mari%C3%B1elarena.pdf?sequence=1&isAllowed=
y

22

También podría gustarte