lunes, 14 de noviembre de 2011

Proyecto de Robotica #2: Robot Grua

Autor: Carlos Alberto San Martín San Román.
Universidad Católica de Temuco.





Gestión en Tecnologías de información.

Nivel 1: Usa sistemas informáticos finales y ofrece soluciones a problemas de los usuarios, mediante la integración básica de distintos elementos de hardware y software.
Robot Grúa utilizado mediante la tecnología BlueTooth.

Proyecto realizado por el Grupo Skynet(al cual pertenezco), que cuenta con el objetivo de controlar el robot mediante un SmartPhone con sistema operativo ANDROID para, con este lograr sostener y transportar objetos de una ubicación a otra, llevando además un control de tiempos con un código interno en el robot.

Especificaciones del robot:


  • Robot NXT "LEGO Mindstorm" programado en nxt.
  • sensor de tacto. (TouchSensor)
  • Tres motores. <movilidad horizontal> <movilidad vertical> <garra> 
  • aplicacion APK de android para el control Bluetooth.

Aplicacion Android:

La aplicacion APK realizada para este robot esta desarrollada en AppInventor de Google, consta con control para los tres motores del robot. Además este cuenta con botones de conexión y desconexión del bluetooth.
Esta ha sido desarrollada por el Grupo Skynet de la universidad Católica de Temuco.





 Link de descarga Megaupload:


Codigo fuente interno para guardar datos de tiempo del sensor:

int dif=0; //Definir variables
int h=0;
int i=0;
int tantiguo=0;
int tnuevo=0;
int tiempo [4];
byte punteroA;
byte bytesEscritos;
string cadena, numero, cad;
string esp=" ";
sub GuardaArchivo(){ //Subrutina para guardar los datos tomados en un archivo
DeleteFile("Tiempo.txt"); //borrar archivo
CreateFile("Tiempo.txt", 512, punteroA); //crear nuevo archivo
WriteLnString(punteroA, " REPORTE DE DESEMPEÑO", bytesEscritos); //escribir
WriteLnString(punteroA, "Nº de cubos tiempo", bytesEscritos);
WriteLnString(punteroA, "---------------------------", bytesEscritos);
for(i=0;i<ArrayLen(tiempo);i++){ //iteracion de largo de arreglo
cad=NumToStr(tiempo[i]); //pasa a cadena el entero guardado en la posicion "i"
numero=NumToStr(i); //pasa a entero i para guardar el numero de la posicion
cadena="Cubo"+numero+esp+cad+"_seg"; //genera cadena para luego escribir
WriteLnString(punteroA,cadena,bytesEscritos); //escribir
}
CloseFile(punteroA); //al termino de escribir en el archivo este se cierra
}
sub GuardaTiempo(int t){ //subrutina para guardar el tiempo en arreglo
tiempo[i]=t; //guarda "t" en el arreglo "tiempo[]" posicion "i"
i++; //aumenta "i" para cambiar la posicion del arreglo
}
task Sonido(){ //tarea para detectar si toma o no el "container"
while(true){ //siempre activa
if(Sensor(IN_1)==1) //si el sensor de tacto se activa toca un tono
PlayTone(1500,600);
}
}
task Garra(){ //tarea para tomar el tiempo en que se demora en mover un "container"
while(true){ //siempre activa
while(h<=4){ //mientras "h" sea meno o igual a 4 hacer...
if(Sensor(IN_1)==1){ //si sensor de tacto se activa
tantiguo=CurrentTick(); //tomar el tiempo de cuando se activa
until(Sensor(IN_1)==0) //cuando el sensor se desactive
tnuevo=CurrentTick(); //tomar el tiempo de cuando se desactivo
dif=(tnuevo-tantiguo)/1000; //restar los tiempos y dividirlos por 1000 para obtener los segundos
GuardaTiempo(dif); //activar subrutina "GuardaTiempo()"
h++; //aumentar "h"
}
}
GuardaArchivo(); //activar subrutina "GuardaArchivo()"
int total=tiempo[0]+tiempo[1]+tiempo[2]+tiempo[3]; //sumar todos los tiempos
if(total<35){
TextOut(0, 50, "Muy bien"); //si demora menos de 35s imprimir...
Wait(5000);}
else{ //si no, imprimir
TextOut(0, 50, "Te falta practica");
Wait(5000);
}
StopAllTasks(); ///detener todas las tareas
}
}
task main(){ //inicia tarea principal
Precedes(Garra, Sonido); //ejecutar tarea "Garra" y "Sonido"
SetSensorTouch(IN_1); //setear sensor de tacto
} //fin de la tarea principal



Reflexión:
Hoy en día, la tecnología es tan sofisticada que de cualquier forma se le puede sacar provecho, sea en bien o en mal. En este proyecto he aprendido a realizar aplicaciones para celulares y a su vez, controlar otros dispositivos con estos.
Espero que les sea de provecho este aporte, y si tienen cualquier duda no duden en escribirme, responderé cordialmente.
Además si necesitan ayuda con appinventor, igual puedo ayudarlos. 

No hay comentarios:

Publicar un comentario