Los modernos teléfonos inteligentes con conectividad Bluetooth, que disponen del sistema operativo Android, a partir de ahora nos permiten acceder a infinitas aplicaciones que antes requerían de módulos de RF u otros medios de enlace y que no siempre funcionaban como deseábamos. En este artículo haremos un “Hola Mundo” con un PIC y un LED de la manera más sencilla que te puedas imaginar. No te preocupes, no será necesario aprender toneladas de libros para programar sistemas útiles en Android para PICs. Juntos aprenderemos, paso a paso, a comandar un LED a distancia, por Bluetooth, y luego te darás cuenta de que cualquier sistema remoto con Android estará a tu alcance de manera muy sencilla.

Bluetooth + Android + PIC + LED =
Bluetooth + Android + PIC + LED = “Hola Mundo”

El punto de partida: el montaje con Bluetooth RN41

Para iniciar este trabajo, haremos un breve repaso del desarrollo que presentamos cuando mostramos el módulo Bluetooth RN41, aquí en NeoTeo. Vamos a recordar algunos puntos básicos que serán comunes a cualquier sistema Bluetooth que quieras implementar.

Nosotros usamos un PIC 18F25K20 programado en AMICUS, al que conectamos el módulo RN41 de Microingenia S.L. En este montaje colocamos en el pin 0 (cero) del puerto B un LED, que encenderemos y apagaremos a distancia con la ansiada conectividad Bluetooth desde nuestro móvil, teléfono inteligente o tableta, con Android. Por lo tanto, vamos a iniciar este trabajo desde lo básico, desde lo elemental, para que no te pierdas un solo detalle y te resulte claro y sencillo crear tus propias aplicaciones con microcontroladores comunicados vía Bluetooth sobre plataformas Android.

Luego de refrescar los conocimientos de aquel “Hola Mundo” con Bluetooth, podemos definir que el circuito empleado será muy sencillo y se limitará, en esta oportunidad, a un LED Rojo. Por supuesto, tu imaginación hará que ese LED sea un portón levadizo, el sistema de iluminación de tu habitación o el sistema de activación remota de cualquier sistema electromecánico que necesite ser operado a distancia. Aquí será un LED convencional, pero este ejemplo tiene la intención de ser el puntapié inicial de una variedad de circuitos sin final.

Vale reiterar que nosotros utilizamos un tipo determinado de microcontrolador por comodidad, porque lo teníamos a mano, porque utiliza software libre y porque también podríamos haber utilizado un PIC32 o un 12F675A para hacer este trabajo. ¿Qué intentamos decirte? Tú utiliza el que quieras y te haga feliz. Nosotros avanzamos con el RN41, con el PIC 18F25K20 y con AMICUS, trabajando todo a una tensión de alimentación de 3,3Volts. El hardware, por lo tanto, nos quedará montado según el esquema de arriba y de la siguiente manera.

El software del PIC: AMICUS y el lazo principal

Una vez que todo está listo, definimos el software a utilizar en el PIC y procederemos a escribirlo, compilarlo y crear el .HEX que utilizaremos. La creación del código ya no tiene misterios a esta altura de nuestros trabajos con este PIC. Recordemos que AMICUS es un software de alto nivel que nos exime de definir absolutamente todo lo que en otros programas estamos obligados a hacer para no cometer errores que puedan derivar en un mal funcionamiento o, en el peor de los casos, en que el desarrollo nunca funcione. Aquí solo hay que escribir instrucciones y AMICUS se encarga del resto.

Definimos la velocidad de comunicación entre el módulo Bluetooth y el 18F25K20, que será de 115Kbps, declaramos la variable que recibiremos como dato (BYTE) desde el móvil vía Bluetooth y allí comenzamos con el lazo principal del programa. HSERIN es la instrucción en BASIC para poner el PIC a “escuchar” si recibe datos por su entrada serie (EUSART) (Enhanced Universal Synchronous Asynchronous Receiver Transmitter).

Si recibe un dato, el firmware lo carga en la variable declarada (LED); si no, al cabo de un tiempo de espera (50mS) salta a otra instancia del programa definida por la etiqueta (Lazo). En el caso de recibir el dato, observa si es algo de lo que está esperando y actúa en consecuencia: con un 100 enciende el LED colocado en PORTB.0 (pin 0 del puerto B) y con un 200 lo apaga. Listo. Eso es todo. Así debe quedarte el listado de instrucciones.

La carga del programa y el enlace Bluetooth

Una vez escrito este elemental programa, lo compilamos y lo cargamos en el PIC de la manera que mejor nos convenga: mediante una conexión ICSP (In Circuit Serial Program) o, si lo deseamos, colocando el PIC en nuestro programador habitual.

El ensayo será igual al que hicimos antes, ya sea con un módulo nativo Bluetooth en un ordenador móvil o mediante el método que utilizamos nosotros, acoplando un módulo USB externo. Si ya has realizado la experiencia de un enlace Bluetooth con un PIC, estaremos un paso adelante en la explicación. Si no es así, te recomendamos la lectura del artículo donde explicamos, paso a paso, cómo lograr este enlace entre el adaptador USB conectado a nuestro ordenador móvil y al par formado por el módulo RN41 y el PIC 18F25K20.

Una vez llegados a este punto, abrimos una consola serie, como puede ser el Hyperterminal de Windows o, como en nuestro caso, el terminal serie que viene en el programa Proton, y lo hacemos de este modo:

La aplicación para Android con App Inventor

Una vez que tenemos ensayado el enlace Bluetooth y estamos seguros de que todo funciona, podemos comenzar a prepararnos para lo que estábamos esperando: comenzar a realizar nuestro programa para la plataforma Android.

Para esto, lo primero que debes saber es que utilizaremos la aplicación “App Inventor” (creada por Google). Aunque es sencilla, intuitiva y fácil de usar, requiere tu atención y esmero para lograr aplicaciones finales interesantes. A pesar de ser un sistema de programación de alto nivel, no posee lo que habitualmente conocemos como “Librerías”. Es decir, no podrás llamar a una librería, colocarle tu nombre, una pequeña imagen de identificación y lograr Realidad Aumentada que se pueda vender en la tienda en línea de Android. No, ni lo sueñes. Hay mucho material para leer, mucho que practicar y por algún lugar hay que comenzar.

Lo primero que harás será descargar e instalar App Inventor según el sistema operativo que utilices; la aplicación te indicará los pasos a seguir y, si es necesario, deberás instalar algún software adicional (Java). Debes saber además que utilizarás un sistema de trabajo en línea, donde tendrás una página dedicada a tus desarrollos y desde ella podrás acceder a descargar las aplicaciones de la manera que te resulte más cómoda.

Las aplicaciones se arman en la web, sobre una página a la que accederás mediante tu nombre de usuario de una cuenta de correo Gmail. Por supuesto, si no posees una, deberás hacerlo para acceder a la web de App Inventor. En la página inicial encontrarás, arriba a la izquierda, el botón de indicación para crear una aplicación nueva (estás ingresando por primera vez). Te pedirá que le asignes un nombre y luego te aparecerá una pantalla donde se seleccionan los componentes para realizar el “diseño de la aplicación”. Esto es botones, cuadros de texto, etiquetas, imágenes, separadores, reproductores de video, animaciones, accesos directos a las redes sociales, los sensores de movimiento que tu equipo posea y todos los elementos que quieras colocar en tu aplicación.

Como estamos haciendo nuestra primera aplicación, comenzaremos aprendiendo a colocar botones, separadores y algún otro elemento “básico” para realizar nuestros primeros ensayos. Estos elementos se arrastrarán hasta el “lienzo” y, sobre la margen derecha de la pantalla, les asignarás las propiedades, colores y demás parámetros que creas oportunos. Si alguna vez has trabajado con software orientado a objetos, estarás ante un sistema de aplicación muy similar.

A partir de allí deberás colocar en el lienzo central, que simula ser la pantalla de tu Android, los elementos que quieras, aunque al principio, con un par de botones, etiquetas y alguna imagen, ya es suficiente para no llenar demasiado la pantalla inicial. Luego de que hayas colocado una imagen de fondo, de que los botones tengan el tamaño que deseas y de que los colores estén a tono con tu calzado deportivo, grabarás la aplicación pulsando el botón “Save”.

Una vez hecho esto, observarás que en la esquina superior derecha tienes dos botones. Uno te lleva al “editor de bloques” y el otro te arma, te construye la aplicación para que la puedas cargar en tu dispositivo Android. Al pulsar el botón de abrir el “editor de bloques”, la aplicación te pedirá que instales, si no lo has hecho ya, el Android SDK, que no es otra cosa que el verdadero sistema de desarrollo Android que debe estar instalado en tu máquina.

A través de él tendrás acceso a montar un emulador de dispositivo que puede ayudarte mientras trabajas en el desarrollo. ¿Qué es un emulador de dispositivo? Un equipo virtual que ejecutará en tu máquina los programas que realices a medida que los vayas construyendo. O sea, si no tienes un dispositivo móvil con Android, igual puedes empezar a trabajar y a ensayar tus aplicaciones en este emulador. ¡Ya puedes correr aplicaciones Android en tu máquina! Ten cuidado con los requisitos mínimos del sistema y la velocidad del proceso. Ten presente que, como en toda simulación virtual, algunas cosas no suceden a la misma velocidad que en el mundo real; sin embargo, puede resultarte una herramienta muy útil si le tomas la mano.

El editor de bloques y la depuración por USB

Luego de que abra la sesión de Java correspondiente, notarás que el editor de bloques posee una serie de elementos, bloques (valga la redundancia), que se manejan y organizan sin que sea necesario cuidar al extremo la estética y la elegancia. Sobre la izquierda encontrarás los elementos que has cargado sobre el lienzo, en la página del diseño de la aplicación, y al pulsar sobre cada uno de ellos se abrirán las opciones que el editor de bloques te permitirá utilizar con cada uno de esos elementos. ¿Has visto cómo la muchacha del video seleccionaba el clic del botón y el sonido que ya había cargado antes en la pantalla de diseño? Como ya te mencionamos, si has trabajado en programación orientada a objetos, notarás que los bloques poseen indicadores muy intuitivos que te guiarán y te ayudarán a ensamblar los bloques de manera apropiada, ya que no puedes unir cualquier pieza con otra sin saber por qué lo haces. No te preocupes, el mismo editor de bloques te ayudará cuando algo no coincida.

Por último, conectando tu dispositivo Android al ordenador mediante uno de los puertos USB, podrás observar, en tiempo real, cada avance que logres en la programación, pulsando la opción adecuada en el botón dedicado a “empaquetar” la aplicación. No olvides, para trabajar de este modo, habilitar la opción “Depuración por USB” entrando en Configuración > Aplicaciones > Desarrollo. Luego veremos otros métodos.

En la próxima entrega

¿Te animas a jugar un poco mientras preparamos la segunda parte de este artículo? En la próxima entrega veremos cómo crear la aplicación que se muestra en la imagen cabecera del artículo y conectaremos nuestro móvil con Android a un PIC mediante un enlace Bluetooth, ya no con un cable USB. Colocaremos las etiquetas sobre el lienzo en la página de diseño, le agregaremos la imagen de fondo, los botones, la conectividad Bluetooth y, en el editor de bloques, armaremos el interesante rompecabezas que ves en la imagen superior, donde cada bloque tiene una función específica.

Te reiteramos lo que te dijimos al comienzo: hay mucho para leer, para practicar, para ensayar y para experimentar. ¿Quieres verlo en funcionamiento? ¿Quieres saber cómo queda terminado? Así:

También tenemos que aprender a configurar nuestro dispositivo Android para que acepte las aplicaciones que construyamos y mucho, mucho más trabajo nos espera en la próxima entrega de este maravilloso “Hola Mundo”. Hasta aquí la introducción, los preparativos, algunas perlitas y algunos elementos necesarios como para comenzar a jugar. No te pierdas la próxima entrega; hay mucho por hacer y ¡todavía falta lo mejor!