domingo, 13 de noviembre de 2011

Título de la Entrada : Proyecto Robotica

Autor: Martin Berkhoff

Competencia (Nivel): Gestión de TI

Palabras clave: android, app inventor, lenguaje NXC

Descripción de la actividad:

Dirty Lock, el nuevo sistema de seguridad; que con su novedosa tecnología mantendrá seguras nuestras viviendas, aplicando novedosas tecnologías: app inventor, bluetooth, lego mindstorm , programación en nxc y twitter. Una nueva herramienta que nos permitirá dejar una de las más comunes de las preocupaciones: la seguridad de nuestras viviendas.
El desarrollo de este sistema de seguridad fue pensado de manera estricta y rigurosa para que bajo ningúna circunstancia se pueda vulnerar la seguridad de nuestros hogares.
¿Cómo logramos esto?:
Hacer un sistema de seguridad de este tipo toma tiempo; pero aquí podrán ver el proceso, paso a paso de la creacion del sistema de seguridad DIRTY LOCK.

Solucion y Estrategia de trabajo:

Al comenzar el Proyecto tuvimos la claridad de lo que queríamos hacer como proyecto, esto nos llevó como grupo a dividir las funciones: 

Lo primero, luego de dividir el trabajo, fue pensar en las tecnologías que tenemos a nuestro alcance para poder hacer un eficiente sistema de seguridad.
Aquí seleccionamos básicamente cuatro tecnologías, sin contar los sensores: twitter, bluetooth, app inventor y lenguaje nxc. 


APP INVENTOR: Es una parte de Google Labs, un parque infantil para lo ingenieros de Google y aventureros usuarios de Google, con este programa para celulares Android es posible crear muchos tipos de aplicaciones; Con app inventor es posible crear aplicaciones que quedaran guardadas en la nube.
Para mas informacion ir a esta pagina http://www.appinventor.es/ aquí encontraran video de presentacion, tutoriales y manual de como descargar app inventor.


Creación de el software en app inventor:

La aplicación que logramos hacer pudo conectarse con el nxt via bluetooth y coordinar acciones mediante sensores. Esta es la base de la aplicación, cada ves que cualquier tipo de sensor detecta algo, la aplicación enviaba un twitter dando cuenta de que el sensor estaba activo, este también podia llamar a la persona dueña del hogar si esto era necesario; o si el nivel de alarma que marcaron los sensores era demasiado alto.
El uso de los sensores está especificado en el anexo de lego mindstorm. Como también la programación en nxc.
Aquí les presentamos imágenes de el programa junto con la aplicación en el celular android.

Asi queda finalmente la aplicación, donde los botones cambian de color según sea la alerta.



Creación de la interfaz de la aplicación, es sólo la interfaz app inventor


Aquí podremos crear la interfaz, osea arrastrar ventanas, imágenes textos, sonidos y muchas cosas mas.


Ahora les mostrare el interior o lo que no se ve que es la programación de todo lo que pusimos gráficamente, donde le damos la funcionalidad al sistema de alarma.



En paralelo nuestro sistema de seguridad utilizando las tecnologias: Lego mindstorm y programacion en nxc, registra y genera un archivo de todas las actividades sospechosas que ocurren en el transcurso de la noche o en el tiempo que el usuario considere dentro de su hogar, ya sea forzar la puertas o ventanas, movimientos dentro de su casa y sonidos sobre lo normal.

Uso de sensores: Utilizamos del quit de legos mindstorm los siguientes sensores: Sensor de Sonido, encargado de detectar los sonidos que sean poco comunes. Sensor tacto, este cuida las puertas y ventanas del hogar y también verifica si estas se abren. Sensor Ultrasonido, encargado de ver si algo se mueve dentro de el hogar.

Aquí esta el código comentado que genera un informe de todos los eventos que verifican los sensores, mientras la alarma este ativa:


/Simulación de un sistema de seguridad en un hogar




int verConexion;   //1 activo desconectado, 3 activo conectado
int evento[16];   //arreglo para almacenar tipo de evento
int tiempo[16];  //almacena el tiempo transcurrido desde inicio
int tiempoInicial;
int tiempoTranscurrido;
int j=0;
int i=0;
int muevemotor=0;

#define SONIDO 97
#define DISTANCIA 50

sub traspasaArchivo()
{
    byte fileHandle;
    short fileSize;
    short bytesWritten;
    string write;
    string cadena;
    DeleteFile("Registro.txt");
    CreateFile("Registro.txt", 512, fileHandle);
    WriteLnString(fileHandle,"Reporte de eventos", bytesWritten);
    WriteLnString(fileHandle,"------------------", bytesWritten);
    WriteLnString(fileHandle,"Sensor",bytesWritten);

    for(j=0; j<i; j++ )
    {
        if(evento[j]==2)
        {
           cadena = "Puerta";
        } 
        if(evento[j]==3)
        {
           cadena = "Ventana";
        }
        if(evento[j]==1)
        {
            cadena = "Ruido";
        }
        if(evento[j]==4)
        {
            cadena = "movimiento";
        } // depedendiendo del valor de evnto[j], se identifica la procedencia del evento
        string tiem = NumToStr(tiempo[j]);
        write = StrCat(cadena,"     ",tiem); //concatena tipo de evento con el tiempo de éste
        WriteLnString(fileHandle, write, bytesWritten);
    }

    CloseFile(fileHandle);
    StopAllTasks(); //cierra todo proceso
} //sub rutina para crear archivo

sub llenaarreglos(int x, int y)
{
    evento[i] = x;
    tiempo[i] = (y - tiempoInicial)/1000;
    i++;
    if(i==10)
    {
        traspasaArchivo();
    }//el valor de if, puede ser cambiado en función de la cantidad de eventos a registrar.
}//subrutina para llenar arreglos, si eventos es 10, llama a subrutina para crear archivo

task conexion()
{
    while(true)
    {
        verConexion = BluetoothState(); //verifica estado bluetooth y almacena en variable
        if(verConexion==1) //si estado es 1
        {
            PlayTone(400,400); //toca ruido
            TextOut(0,0,"BA - MD"); //muestra en pantalla Bluetooth Activadp- Movil Desconentado
            Wait(1000);
        } 
        if(verConexion==3)
        {
            TextOut(0,0,"BA - MC"); //Muestra en pantalla Bluetooth Activado-Movil Conectado
        }
    }
}//tarea muestra en pantalla estado conexión.

task sensorSonido()
{
    while(true)
    {
        if(SENSOR_1>SONIDO)//si ruido es mayor a SONIDO
        {
            tiempoTranscurrido = CurrentTick();//toma el tiempo actual y almacena
            llenaarreglos(1,tiempoTranscurrido);//se envian parametros a subrutina llenaarreglo
        }
        Wait(300);
    }
}//tarea detecta ruidos

task sensorTacto1()
{
    while(true)
    {
        if(SENSOR_2 == 0) //Si se abre puerta
        {
             tiempoTranscurrido = CurrentTick();//toma el tiempo actual y almacena
             llenaarreglos(2, tiempoTranscurrido);//se envian parametros a subrutina llenaarreglo
        }
        Wait(300);
    }
}//tarea detecta apertura puerta

task sensorTacto2()
{
    while(true)
    {
        if(SENSOR_3 == 1) //Si se abre ventana
        {
             tiempoTranscurrido = CurrentTick();//toma el tiempo actual y almacena
             llenaarreglos(3,tiempoTranscurrido);//se envian parametros a subrutina llenaarreglo
             if(muevemotor==0)//si el motor nunca se ha movido
             {
                 OnFwd(OUT_A,60);//mueve motor
                 Wait(150);
                 Off(OUT_A);//apaga motor
                 muevemotor=1;//se movio el motor
             }//usado para simular el encendido de un interruptor
        }
        Wait(300);
    }
}//tarea detecta apertura ventana

task sensorUltraS()
{
    while(true)
    {
        if(SensorUS(IN_4) < DISTANCIA)
        {
            tiempoTranscurrido = CurrentTick();//toma el tiempo actual y almacena
            llenaarreglos(4,tiempoTranscurrido);//se envian parametros a subrutina llenaarreglo

        }
        Wait(300);
    }
}//tarea detecta movimiento 


task main()
{
    SetSensorSound(IN_1);
    SetSensorTouch(IN_2);
    SetSensorTouch(IN_3);
    SetSensorLowspeed(IN_4);
    tiempoInicial=CurrentTick();//inicio de tiempo.
    Precedes(conexion,sensorSonido,sensorTacto1,sensorTacto2,sensorUltraS);
}


Aquí adjunto el vídeo de el trabajo:



conclusión 
El presente trabajo nos ha permitido implementar un sistema de seguridad, mediante la utilización de herramientas de la informática como lo son : app inventor, lenguaje nxc, bluetooth.
Para la creacion de una aplicación en android y la programacion en nxc.
Durante el proceso de investigacion fue necesario aprender sobre la creacion de archivos y arreglos en nxc y la programacion en app inventor. En este ultimo fue necesario buscar guias y tutoriales para poder aplicar una programacion adecuada a los requerimientos del equipo.
El trabajo en grupo no permitió avnazar sumando los aportes de cada uno de los integrantes, no obstante a medida que avanzabamos en el proceso se nos fueron presentando dificultades que nos llevaron a nuevas interrogantes, a la búsqueda de mayor información, a la consulta de nuevas fuentes de tal modo que el avanse se vio enrriquecido por el aprendizaje.
El resultado final de este proyecto, permite ver un sistema de Resguardo o de seguridad, funcionando a través de un equipo de tefelonía celular, con sistema Android en conjunto con la programación nxc y con la posibilidad de dar seguimiento de los eventos vía Twitter.





No hay comentarios:

Publicar un comentario