Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ASIGNATURA:
ROBÓTICA.
INTEGRANTES:
DELGADO BARBOZA, YORDIN RAY
FERNANDEZ GASTELO, WILLY
HUAMAN CALLE, ELMER
SEGUNDO ORTIZ, GUSTAVO
ZORRILLA SEGURA, JOEL
DOCENTE:
RODRIGUEZ CHIRINOS, FRANK.
1
Contenido
2
IMPLEMENTACION DE CODIGO Y DESARROLLO DE UNA APLICACIÓN
MOVIL CONTROLADO POR BLUETOOTH PARA CARRO Y BRAZO
ROBOTICO
I. INTRODUCCION
PALABRAS CLAVE
Robótica
Arduino
Bluetooth
Android
3
II. IMPLEMENTACION DEL CODIGO PARA EL CARRO Y BRAZO ROBOTICO
FUNCIONALIDAD
Parte de Carro:
app.
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
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);
Recibimos los datos del bluetooh enviados desde el celular mediante el método
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
“A” – Base
“B” – Hombro
“C” – Codo
“D” – Muñeca
“E” – acelerarCarro
“F” – retrocederCarro
“G” – girarCarroDerecha
“H” – girarCarroIzquierda
“I” – apagarCarro
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
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();
}
7
//función
girarCarroIzquierda();
// delay(620);
digitalWrite(13, LOW);
}
datos recibidos mediante el ciclo while y se crea la variable local c en donde se almacena,
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
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 = "";
}
}
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.
13
PROGRAMACIÓN EN BLOQUE DE LA APLICACIÓN MOVIL.
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.
2. CONTROL CODO
15
3. CONTROL HOMBRO.
4. CONTROL BASE
16
PROGRAMACION DEL PANEL DE CONTROL DEL MOVIMIENTO DEL CARRO
1. ACELERAR
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
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.
19
IV. CONCLUSIONES
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