Boletín No. 55
1o. de julio de 2016
COMUNICACIÓN ENTRE ARDUINO Y ANDROID POR BLUETOOTH
Ing. Sonia Leticia Valencia Ortiz
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Ing. Juan Jesús Contreras Valdez
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Centro de Innovación y Desarrollo Tecnológico en Computación
CIDETEC-IPN
Abstract
En la actualidad la intercomunicación entre dispositivos ha sido por medio de diversas tecnologías, ya sea por radio frecuencia, Wifi, Bluetooth, entre otras. Estas tecnologías se han utilizado para un sin fin de proyectos y áreas de aplicación. Este trabajo tiene la finalidad de dar a conocer unas de las aplicaciones innovadoras que se puede utilizar en la vida diaria. La posibilidad de realizar una comunicación por Bluetooth mediante un circuito integrado y una aplicación móvil es de gran utilidad cuando se necesite enviar y recibir información remotamente. La comunicación se realizó mediante la plataforma de hardware Arduino (una placa con un microcontrolador ATMEL y un entorno de desarrollo de programación integrado que facilita proyectos de electrónica), la plataforma de Google Labs: App Inventor (que por medio de bloques y un conjunto de herramientas que proporciona, se pueden realizar aplicaciones móviles complejas) y un módulo Bluetooth para la plataforma Arduino. El resultado de utilizar Bluetooth con éstas herramientas queda en la imaginación del lector.
Introducción
La evolución de la tecnología inalámbrica ha crecido inmensamente en los recientes años y demuestra la explotación que se ha llevado a cabo en diversas áreas de aplicación. La tecnología Bluetooth se basa en el espectro radioeléctrico (radio), ya que las conexiones o enlaces entre las diferentes terminales de los dispositivos no hacen contacto físico si no utilizando ondas radioeléctricas mediante emisión y recepción. La ventaja es que se puede trabajar en proyectos que requieran libertad de movimiento evitando el cableado.
Arduino es una plataforma de hardware para crear prototipos de código abierto, utilizándolo de una forma sencilla tanto el hardware de la placa como el software que integra para realizar proyectos pequeños o de gran escala. El hardware integra una placa con un microcontrolador, una serie de puertos de entrada y salida (analógicas, digitales y protocolos de comunicación). Los microcontroladores que se utilizan son el Atmega 8, 168, 328, 1280; se diferencian por sus características de procesador, velocidad, memoria, número de puertos de e/s, funciones, entre otras. Arduino tiene un entorno de desarrollo integrado (IDE) basado en Processing, y mediante el cual se programa el microcontrolador por medio del lenguaje de Arduino basado en Wiring.
App inventor es una plataforma creada por el Instituto Tecnológico de Massachusetts y Google Labs, donde se puede programar de una manera sencilla aplicaciones móviles codificando de manera visual, arrastrando y soltando pequeños bloques que dan la funcionalidad a la aplicación, ahorrando tiempo de diseño y programación. Se accede mediante la siguiente página web http://appinventor.mit.edu. Consta de dos secciones, la primera es el diseño o la interfaz gráfica de la aplicación (botones, texto simple, multimedia, animación) y la segunda es el editor de bloques (en base de componentes gráficos permite interactuar con los elementos de la interfaz gráfica, realizar cálculos matemáticos y lógicos, crear procedimientos de decisión, entre otras). Algunas de las características de esta plataforma son las siguientes:
• Aplicaciones sencillas de diseñar y realizar la lógica de la aplicación por medio de bloques.
• Las aplicaciones pueden funcionar en cualquier Smartphone con SO Android.
• Es multiplataforma ya que con solo tener instalado cualquier navegador y la máquina virtual de java puede acceder al entorno de desarrollo.
• Crear y guardar el archivo .apk a la PC o mediante un código QR permite instalar la aplicación directamente al Smartphone.
Desarrollo e Implementación
Para el desarrollo y la implementación del Bluetooth, se utilizó la placa de prototipos Arduino UNO con el microcontrolador Atmega328, junto con la plataforma App Inventor. Se utilizaron dos módulos Bluetooth con características y modo de operación similar, pero con una gran diferencia de alcance. El primero es el HC05 (maestro/esclavo), con un alcance de 10 metros en vista libre; y el segundo es el RN41 (maestro/esclavo) con un alcance de 100 metros en vista libre.
Unas de las pruebas que se realizó inicialmente fue con el módulo RN41, conectado a la placa Arduino de la siguiente manera (figura 1), con el pin 0-RX (pata 2 del microcontrolador) hacia el pin TX del módulo y con el pin 1-TX (pata 3 del microcontrolador) hacia el pin RX del módulo. Se utiliza de manera cruzada ya que para recibir un dato RX en el módulo, primeramente hay que transmitir TX desde el microcontrolador y viceversa.
Como se puede mostrar en la figura anterior, un botón conectado al pin 7 (pata 13), es el encargado de enviar la información que se desea al dispositivo Android, el LED sólo se utilizará para comprobar si el botón se ha presionado.
Para la programación del microcontrolador Atmega328, se utiliza el IDE de Arduino. El código que se muestra en la figura 2, es un ejemplo sencillo para realizar la comunicación entre el Bluetooth y un dispositivo Android. El código importante a resaltar y poder transmitir/recibir información, está en la estructura condicional IF. El funcionamiento es el siguiente: si el módulo Bluetooth está disponible; realizará las sentencias que estén dentro del IF, de acuerdo al código mostrado en la figura 2, si se ha presionado un botón, entonces se prenderá un LED, enviará una cadena de caracteres (en este caso la letra A), realiza una pausa de 5 segundos y apagará el LED.
Para poder enviar un dato desde Arduino, se utiliza la función Serial.println. Lo que este dentro de las comillas es lo que enviará a través del pin TX del módulo Bluetooth, y para poder recibir datos por ejemplo desde una aplicación Andriod, se utiliza la función Serial.read a través del pin RX.
La aplicación para el Smartphone se muestra en la figura 3, donde se observa el código a bloques para recibir el dato que envía desde el modulo Bluetooth. Ésta aplicación se realiza desde App Inventor. Se accede a la plataforma online por medio de una cuenta de usuario, dentro de la plataforma existen dos tipos de funcionamiento, el primero de ellos se muestra en la figura 3 que es el código a bloques, y el segundo es la parte de la interfaz de usuario, como se muestra en la figura 4.
Los bloques para realizar la conexión entre el Bluetooth y el dispositivo Android son dos botones (conectar/desconectar), el reloj (timer) y un procedimiento llamado recibedatos. El primer bloque llamado Conectar, contiene el cliente Bluetooth del Smartphone, presionando éste botón y si el dispositivo está disponible, pueda vincularse al Smartphone por medio de un ListPicker, que muestra los dispositivos disponibles para la conexión, el segundo bloque llamado Desconectar, se usa para desvincular al dispositivo. El tercer bloque y el más importante es un timer, llamado Reloj1, ya que constantemente recibe información del ambiente buscando si el dispositivo Bluetooth está conectado al Smartphone, esperando recibir los datos enviados dese el microntrolador Atmega328.
Lo relevante en esta parte del código a bloques y lo que hace realmente que la aplicación funcione para recibir los datos, es comparar la cadena de caracteres que envía Arduino con la cadena de caracteres que contiene la aplicación Android. La función o el procedimiento que se llama recibedatos, es la encargada de obtener todo lo que le envía el modulo Bluetooth hacia a la aplicación, lo guarda en una variable global y después compara, si las dos cadenas de caracteres (la letra A) son iguales, está recibiendo correctamente los datos y puede realizar cualquier acción que se le pida, por ejemplo, reproducir un sonido por 5 segundos, como se muestra en el código a bloques.
En cuanto al diseño de la interfaz, en la figura 4 se muestra un ejemplo básico para realizar la interacción con el módulo Bluetooth. Se muestra un botón Conectar, que va a mostrar los dispositivos para realizar la conexión con el módulo, el siguiente botón Desconectar, es para desvincular el dispositivo con el cual estaba conectado.
En esta sección de la plataforma, se agregan los elementos o componentes a utilizar, como la multimedia para agregar imágenes, audio para agregar música o sonidos, en este caso el cliente Bluetooth para vincular el dispositivo, el reloj para actualizar la búsqueda y recibir la información, y las notificaciones que se muestran al usuario de los eventos de la aplicación.
Pruebas y Resultados
Para realizar las pruebas se utilizaron dos Smartphone de gama alta, el módulo Bluetooth HC05 y el RN41. Una vez vinculados el Smartphone y el módulo, se propuso que tuviera una distancia de algunos metros con el Smartphone mientras el modulo se quedaba fijo. Presionando el botón desde el circuito, el Smartphone reproducía un sonido por unos segundos. Las pruebas arrojaron los siguientes resultados:
De acuerdo al datasheet del HC05, las características de alcance o de trabajo promedio es de 10 metros, pero en la práctica se obtuvo una distancia aproximadamente de 20 metros con algunos obstáculos, y al aire libre alcanza aproximadamente 30 metros. Físicamente posee 5 pines de conexión, de los cuales 2 son para la alimentación (que permite alimentar de 3.6V a 6V), 2 más son para la comunicación (TX, RX) y el último para entrar al modo de comandos AT. La configuración estándar de velocidad de transmisión es de 9600 bps y su modo de operación por defecto es esclavo.
Por otro lado, las características para el módulo RN41 y teniendo como referencia el datasheet, su alcance es de 100 metros al aire libre y en interiores con obstáculos como se realizó con el módulo HC05 tiene un alcance de 30 metros aproximadamente. Al igual que el módulo HC05, tienen las mismas características físicas con 5 pines, pero distribuidos de distinta manera. La operación de voltaje va de 3.3V a 5V. Su velocidad de transmisión es de 115200 bps y su modo de operación es esclavo.
El circuito funcionó correctamente con los dos módulos enviando la información debidamente proporcionada. Los Smartphone trabajaron correctamente reproduciendo el sonido, sin tener problema alguno.
Conclusiones
La comunicación inalámbrica y la interfaz de usuario en móviles influye directamente en su facilidad de uso y contribuye enormemente a crear aplicaciones mejores que ayude a la sociedad a brindarle una mejor experiencia.
La plataforma de App inventor y la plataforma de hardware Arduino es una de las herramientas más potentes para crear aplicaciones para Android permitiendo el ahorro de tiempo y diseño, permitiendo crear proyectos complejos que utilicen circuitos electrónicos y desarrollos de software. Existen diversas áreas en las cuales se puede emplear este tipo de tecnologías, lo mostrado aquí es solo una pequeña parte de todo lo que se puede llegar a hacer, sólo falta aplicar un poco de imaginación.
Referencias
- Massachusetts Institute of Technology (2012, 2015). Mit App Inventor. Recuperado el 18 de Febrero de 2016, de http://appinventor.mit.edu/explore/
- Arduino (2016). Recuperado el 18 de Febrero de 2016, de https://www.arduino.cc/
- Roving Networks Wireless for less (2011). Data sheet RN41. Recuperado el 18 de Febrero de 2016, de http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/Bluetooth/Bluetooth-RN-41-DS.pdf
- ITEAD Intelligent Systems Co.Ltd (2015. Data sheet HC05. Recuperado el 18 de Febrero de 2016, de ftp://imall.iteadstudio.com/Modules/IM120723009/DS_IM120723009.pdf
- Panama Hitek (2014). Antony García, Kiara Navarro. ¿Qué es Arduino y para qué se utiliza? Recuperado el 23 de Febrero de 2016, de http://panamahitek.com/que-es-arduino-y-para-que-se-utiliza/
- Manual práctico. Derecho de las Telecomunicaciones. Xavier Bellvehí, Ignacio Herreros Margarit. 2ª edición. Legal Link Abogados. Madrid.2006. - Jason Tyler. App Inventor for Android. Jhon Wiley & Sons. 2011.
- App Open Source. Fritzing electronics made easy. Recuperado el 6 de Abril de 2016, de http://fritzing.org/home/