soporte plataforma robotica rp6v2 adiciÓn de mÓdulos y...

14
1 SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y SENSORES EXTERNOS A LA PLATAFORMA ROBÓTICA RP6V2 Y ADICIÓN DE ACTIVIDADES A LA APLICACIÓN DESARROLLADA EN ANDROID. LIZETH VANESSA MENDIVELSO RODRÍGUEZ BRAYAN STICK MOLINA ESCOBAR UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS TECNOLOGÍA EN ELECTRÓNICA NUEVOS RECURSOS S.A.S.

Upload: others

Post on 16-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

1

SOPORTE PLATAFORMA ROBOTICA RP6V2

ADICIÓN DE MÓDULOS Y SENSORES EXTERNOS A LA PLATAFORMA

ROBÓTICA RP6V2 Y ADICIÓN DE ACTIVIDADES A LA APLICACIÓN

DESARROLLADA EN ANDROID.

LIZETH VANESSA MENDIVELSO RODRÍGUEZ

BRAYAN STICK MOLINA ESCOBAR

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

TECNOLOGÍA EN ELECTRÓNICA

NUEVOS RECURSOS S.A.S.

Page 2: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

2

CONTENIDO

INTRODUCCIÓN .............................................................................................................................. 3

ADICIÓN DE PERIFÉRICOS EXTERNOS A LA PLATAFORMA ROBÓTICA RP6V2 ....... 4

SOPORTE DE COMUNICACIÓN .............................................................................................. 4

CONEXIÓN DEL NUEVO PERIFÉRICO A LA PLATAFORMA .......................................... 4

EL BUS I2C DEL RP6V2 ............................................................................................................ 5

MODO MAESTRO ................................................................................................................... 6

MODO ESCLAVO .................................................................................................................... 8

CREACIÓN DE NUEVAS ACTIVIDADES EN LA APLICACIÓN .......................................... 10

ARCHIVO XML ........................................................................................................................... 10

CONSTRAINT LAYOUT ....................................................................................................... 10

ARCHIVO JAVA ......................................................................................................................... 11

REFERENCIAS .............................................................................................................................. 14

Page 3: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

3

INTRODUCCIÓN

Este documento contiene información detallada acerca de cómo adicionar módulos

y sensores externos a la plataforma robótica RP6V2. Además, contiene una guía

para la adición tareas, a través de actividades, a la aplicación desarrollada para

dicha plataforma.

Es importante tener en cuenta que la plataforma robótica RP6V2 cuenta con un

manual el cual describe su funcionamiento de una forma más general. [1]

También cabe destacar, que para el uso de este manual se debe contar con

conocimientos básicos de programación en lenguaje C. Si no se dispone de dichos

conocimientos, en la sección 4.4 del manual del RP6V2, se encuentra un curso

rápido de programación en dicho lenguaje, como la explicación y el debido uso de

las librerías que se nombrarán en este manual. Adicionalmente se debe contar con

conocimientos básicos de programación en lenguaje JAVA para el desarrollo de la

aplicación en Android Studio.

En el siguiente enlace encontrará el manual del RP6V2, una introducción al lenguaje

JAVA y un tutorial de programación en Android Studio:

https://drive.google.com/drive/u/3/folders/1LTVsaRclk47-gLMsPTtaqWN9fy-Y6X0i

Page 4: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

4

ADICIÓN DE MODULOS Y SENSORES EXTERNOS A LA

PLATAFORMA ROBÓTICA RP6V2

SOPORTE DE COMUNICACIÓN

Para empezar, es necesario que tenga claro el tipo de módulo o sensor que va a

añadir y su funcionamiento. La plataforma robótica tiene un sistema de expansión

por medio de un bus Two-Wire Interface (TWI) o mejor conocido como Inter-

Integrated Circuit (I2C) el cual proporciona una capacidad de hasta 255 dispositivos

conectados al bus por lo cual, el periférico que usted va a añadir debe soportar este

tipo de comunicación.

NUEVA CONEXIÓN A LA PLATAFORMA

Luego de validar que el módulo o sensor que va a añadir tenga soporte de

comunicación I2C, deberá verificar la forma en que se conecta y su nivel lógico de

funcionamiento. Si el módulo o sensor cuenta con un voltaje lógico diferente a 5V

(voltaje lógico de la plataforma robótica), deberá diseñar el circuito conversor de

nivel bidireccional, mostrado en la figura 1, para evitar daños en el nuevo periférico

o en la plataforma robótica.

Figura 1: Conversor de nivel lógico.

ATENCIÓN: La alimentación del Low Side puede variar dependiendo del nivel lógico

de su módulo o sensor. También cabe añadir que se pueden adicionar tantos

dispositivos como requiera (hasta 255) como se muestra en la figura 2. Las

resistencias también pueden variar dependiendo de la velocidad que usted

disponga a usar en la comunicación, por defecto se usan de 10KΩ para una

velocidad de 100KHz.

Page 5: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

5

Figura 2: Bus I2C con conversor lógico.

Por otro lado, la plataforma robótica cuenta con conectores de expansión de 14

pines (figura 3) entre los cuales se encuentran: pines de alimentación, tierra,

interrupciones y por supuesto los pines SCL y SDA pertenecientes al bus I2C. Para

mayor información acerca de los conectores de expansión puede leer la sección 2.5

del manual del RP6v2.

Figura 3: Conector de expansión RP6v2.

EL BUS I2C DEL RP6V2

La plataforma robótica cuenta con una librería llamada RP6Library, la cual provee

al usuario una gran cantidad de funciones para asignar tareas a la plataforma de

una manera más sencilla. Entre estas funciones se encuentran: Funciones UART,

contadores, delays, estado de los sensores, conversores análogo-digitales,

funciones propias para el control de la plataforma y funciones para control del bus

Page 6: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

6

I2C. Este documento hace énfasis en las funciones del bus I2C incluidas en la

librería. Si requiere mayor información acerca de la librería y todas las funciones de

esta, diríjase al numeral 4.6 del manual del RP6v2.

La plataforma robótica tiene la cualidad, como la mayoría de los dispositivos que

soportan el bus I2C, de funcionar en modo maestro y en modo esclavo.

Mediante modo maestro la plataforma robótica será la encargada de controlar los

periféricos externos, tanto en la recolección como en el envío de datos. Por otro

lado, en el modo esclavo la plataforma será controlada por otro dispositivo ya sea

un microcontrolador u otro periférico que cuente con circuitos integrados

programables.

MODO MAESTRO

Figura 4: Comunicación I2C modo maestro.

Page 7: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

7

INICIALIZACIÓN DE LA PLATAFORMA E INLUSIÓN DE LAS LIBRERÍAS DEL

MODO MAESTRO:

En el modo maestro se definen dos líneas de código para llamar la librería del RP6v2

(siempre debe ser incluida) y para incluir la librería del modo maestro:

ESPECIFICAR VELOCIDAD DEL BUS I2C

Además de estas librerías, se debe especificar la velocidad del bus I2C mediante la

sentencia I2CTWI_initMaster(FREQ). Si no se especifica la velocidad de

transmisión del bus I2C, por defecto esta será de 100KHz.

ENVÍO Y RECEPCIÓN DE DATOS

La librería RP6I2CmasterTWI.h incluye funciones de escritura que tiene la

capacidad de enviar desde uno hasta veinte bytes dependiendo del uso que se

desee darle al bus I2C.

Por otro lado, la librería RP6I2CmasterTWI.h cuenta con funciones de lectura. Estas funciones son similares a las de escritura y los datos obtenidos pueden ser almacenados en un buffer del tamaño de la cantidad de datos que usted desee recibir.

Page 8: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

8

MODO ESCLAVO

Figura 5: Comunicación I2C modo esclavo.

INICIALIZACIÓN DE LA PLATAFORMA E INLUSIÓN DE LAS LIBRERÍAS DEL

MODO ESCLAVO:

En el modo esclavo se definen dos líneas de código para incluir la librería del RP6v2

(siempre debe ser incluida) y para incluir la librería del modo esclavo.

Page 9: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

9

ESPECIFICAR DIRECCION DEL BUS I2C

Además de estás librerías, se debe definir la dirección de esclavo con la que

funcionará el RP6v2.

ENVÍO Y RECEPCIÓN DE DATOS

El modo esclavo cuenta con dos vectores llamados I2CTWI_readRegisters,

I2CTWI_writeRegisters. I2CTWI_readRegisters se encarga de almacenar la

información interna, es decir, de almacenar el estado de los periféricos internos o

los periféricos con los que cuenta la plataforma robótica. Sin embargo,

I2CTWI_writeRegisters se encarga de almacenar la información que es enviada

desde el maestro, es decir, la información de los periféricos externos que el usuario

desde almacenar en la plataforma robótica para su posterior tratamiento.

Existen también funciones para verificar si el bus I2C se encuentra ocupado tanto

para lectura como para escritura, esto con el fin de tener una lectura y/o escritura

limpia y sin errores. La primera, I2CTWI_readBusy, se encarga de verificar si el

maestro se encuentra leyendo los datos de la plataforma para no sobrescribir los

datos de los periféricos internos en el vector I2CTWI_readRegisters. La segunda,

I2CTWI_writeBusy, se encarga de verificar si el maestro se encuentra escribiendo

datos en la plataforma para no alterar la lectura del vector I2CTWI_readRegisters

desde el maestro.

Se debe tener en cuenta que el vector I2CTWI_readRegisters varía según la

cantidad de datos obtenidos mediante el bus I2C, es decir, si usted está recibiendo

tres datos a través del bus I2C (estos se almacenan en el vector

I2CTWI_writeRegisters de forma ordenada a medida que llegan los datos), el vector

I2CTWI_readRegisters empezará a ser válido desde la posición tres, es decir, la

posición cero, uno y dos del vector, estarán vacías.

Para mayor información y ejemplos acerca del bus I2C tanto en modo maestro como

en modo esclavo, lea la sección 4.6.11 del manual del RP6v2.

Para mayor información y ejemplos acerca del bus las librerías nativas de la

plataforma robótica, lea la sección 4.6 del manual del RP6v2.

Page 10: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

10

CREACIÓN DE NUEVAS ACTIVIDADES EN LA APLICACIÓN

Al momento de diseñar la aplicación se utilizó Android Studio, que es un sistema operativo de código abierto para dispositivos móviles, que se programa principalmente en Java y su núcleo está basado en Linux [2]. Se recomienda desarrollar la aplicación en el API 21, es decir, en Android 5.0, debido a que esta versión ofrece mayor compatibilidad con otras versiones de Android. Una actividad está conformada por dos partes: una parte lógica (archivo .java) y una parte gráfica (archivo .xml) [3].

ARCHIVO XML

XML es un lenguaje de marcas extensible, lo que significa que no es un lenguaje

de programación sino un meta-lenguaje utilizado para almacenar datos de manera

legible, muy parecido al HTML.

La parte gráfica de la actividad, es un archivo de éste tipo, el cual nos ayuda a crear

layouts, valores, menús, AppWidgets, preferencias, entre otras. En éste caso, se le

permite al usuario alternar en dos vistas diferentes ya sea de diseño (Constraint

layout) o texto, trabajando con ambas la misma interfaz.

CONSTRAINT LAYOUT

Es una herramienta que facilita la construcción de interfaces para las aplicaciones,

la cual está dividida en dos partes: el modo diseño, que nos permite visualizar cómo

ve la actividad el usuario final, y el modo blueprint, el cual permite visualizar el

esqueleto de la aplicación. La ventaja de ésta herramienta es que no es necesario

escribir código para poder editar la interfaz, ya que cuenta con una paleta de

componentes, los cuales solo es necesario arrastrar y colocar, dentro de la interfaz

(figura 6).

Page 11: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

11

Figura 6: Herramienta ConstraintLayout.

ARCHIVO JAVA

La parte lógica de la actividad, es un archivo JAVA, el cual se crea para poder

manipular, interactuar y colocar el código que proporciona la funcionalidad de la

actividad (figura 7) [4].

Figura 7: Ejemplo, archivo java.

Page 12: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

12

Figura 8: Diagrama de flujo de una actividad

Como se muestra en la figura 8, hay una comunicación constante entre la aplicación y la plataforma, para esto se utilizó la librería Volley, que es una librería desarrollada por Google para optimizar el envío de peticiones http desde las aplicaciones Android, hacia servidores externos [5].

El método obtenerdatos () es utilizado para la petición de datos a una dirección web

local, en el cual la función mStringRequest es la petición que hace la aplicación al

servidor, para solicitar datos de determinada URL, el método onResponse () se

utiliza en caso de que exista una respuesta desde el servidor y, por otra parte, el

método onErrorResponse () se utiliza en caso de que haya un error en la respuesta.

Se debe tener en cuenta que la aplicación recibe los datos en forma de cadena

(String) y como se puede ver en las anteriores líneas de código, se guarda en una

variable llamada sensores, de carácter público para posteriormente ser usada fuera

del método obtenerdatos ().

El método llamarUrl () se utiliza para enviarle datos a la plataforma. En éste caso se utiliza la misma librería Volley utilizada anteriormente, y se utiliza una variable

Page 13: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

13

llamada envío, de tipo cadena (String), con la cual se hace una petición al servidor en esa URL específica (IP+” /on” ;), En este caso “/on” es el comando que se le envía al robot, por medio del cual se le especifica la tarea que se requiere que inicie. El comando puede variar según el programa y su estructura será de la siguiente manera: “/Comando”.

Por ejemplo, hay actividades que permiten que la plataforma robótica realice una

tarea determinada al oprimir un botón, en este caso, el método visto anteriormente

debería ir asignado a dicho botón. Como se puede apreciar en las siguientes líneas

de código, se muestra que se utiliza el método con el fin de que, al oprimir el botón

izquierdo, se cumpla la tarea de enviar a la plataforma el comando “/izq”.

Por último, para navegar entre las diferentes actividades se utiliza el objeto Intent,

que proporciona un enlace de tiempo de ejecución entre componentes separados,

como dos actividades. En este caso el objeto intent en primera estancia es creado

y describe que va desde la actividad en la que se encuentra hacia la llamada menú

principal.

Page 14: SOPORTE PLATAFORMA ROBOTICA RP6V2 ADICIÓN DE MÓDULOS Y …repository.udistrital.edu.co/bitstream/11349/14222/... · desde el maestro, es decir, la información de los periféricos

14

REFERENCIAS

[1] C. R. Vehicle, “RP6v2,” 2013.

[2] D. Robleado Fernández, “Desarrollo De Aplicaciones Para Android,” p. 49, 2014.

[3] S. Figure, “Tutoriales android.,” no. c, pp. 1–4.

[4] “INTRODUCCIÓN A LA PROGRAMACIÓN JAVApdf.crdownload.” .

[5] S. Weber, “Volley.”