Bluetooth + Android + PIC + LED = "Hola Mundo"

Mario Sacco . Vista 84114 veces

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, como comandar un LED a distancia, por Bluetooth y luego, te darás cuenta que cualquier sistema remoto con Android estará a tu alcance de manera muy sencilla.


  • Para iniciar este trabajo, nos remontaremos a hacer un breve repaso del desarrollo que hemos realizado con anterioridad, cuando presentamos el módulo Bluetooth RN41, aquí en NeoTeo. Para esto, vamos a recordar algunos puntos básicos que serán comunes a cualquier sistema Bluetooth que quieras implementar. Es decir, nosotros usamos un PIC 18F25K20 programado en AMICUS, al que le conectamos el módulo RN41 de Microingenia S.L. En este montaje, lo único que hemos hecho es colocar en el pin 0 (cero) del puerto B, un LED que será el que encenderemos y apagaremos a distancia con la ansiada conectividad Bluetooth, operada 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.

    Circuito con módulo Bluetooth para nuestro Circuito con módulo Bluetooth para nuestro

    Luego de volver a leer y de refrescar los conocimientos de lo que hicimos en aquel “Hola Mundo” con Bluetooth, podemos definir entonces que el circuito empleado será muy sencillo y se limitará, en esta oportunidad a un LED Rojo. Por supuesto que tu imaginación hará que ese LED sea un portón levadizo de una cochera, o el sistema de iluminación de tu habitación. Es decir, podría ser el sistema de activación remota de cualquier sistema electro-mecánico que necesite ser operado a distancia. O sea, 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 además, que nosotros utilizamos un tipo determinado de microcontrolador por comodidad, porque lo teníamos a mano, porque utiliza un software libre y porque 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.

    • Imagen completa con el 18F25K20, el módulo Bluetooth y la fuente modular Imagen completa con el 18F25K20, el módulo Bluetooth y la fuente modular
    • Módulo Bluetooth RN41 Módulo Bluetooth RN41
    • Microcontrolador 18F25K20 y los LEDs utilizados Microcontrolador 18F25K20 y los LEDs utilizados


    Una vez que todo está listo, definimos el software a utilizar en el PIC y procederemos a escribirlo, a compilarlo y a 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, que el desarrollo nunca funcione. Aquí sólo hay que escribir instrucciones y AMICUS se encarga del resto, por lo tanto, definimos la velocidad de comunicación entre el módulo Bluetooth y el 18F25K20 que será a 115Kbps, declaramos la variable que recibiremos como dato (BYTE) desde el móvil vía Bluetooth y allí comenzamos con el lazo principal de 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 esto ocurre (recibir un dato), lo carga en la variable declarada (LED), sino, al cabo de un tiempo de espera (50mS), salta a otra instancia del programa definida por una etiqueta (Lazo). En el caso de recibir el dato, el firmware observa si es algo de lo que está esperando y actúa en consecuencia. En este caso 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:

    Programa completo para nuestro Programa completo para nuestro

    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 modulo USB externo. Por lo tanto, si ya has realizado la experiencia de un enlace Bluetooth con un PIC, estaremos un paso adelante en la explicación. Si así no fuese, te recomendamos la lectura del artículo donde explicamos, paso a paso, como 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:



    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) y aunque es sencilla, intuitiva y fácil de usar, requiere de 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 on-line de Android. No, ni lo sueñes. Hay mucho material para leer, hay mucho que practicar y por algún lugar hay que comenzar. Lo primero que harás entonces es descargar e instalar la aplicación 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 en que te resulte más cómodo.

    Esquema de funcionamiento de App Inventor Esquema de funcionamiento de App Inventor

    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 (a esta nueva aplicación que estás a punto de crear) 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 (para utilizar) en tu aplicación. Como nosotros 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, le asignarás las propiedades, colores y demás parámetros que creas oportuno. Si alguna vez has trabajado con software orientado a objetos, estarás ante un sistema de aplicación muy similar:

    • Pulsas el boton para abrir un proyecto nuevo, le colocasel nombre y ya estarás trabajando con Android Pulsas el boton para abrir un proyecto nuevo, le colocasel nombre y ya estarás trabajando con Android
    • En la pantalla principal de nuestro proyecto, encontraremos todo lo necesario para realizar nuestra aplicación Android En la pantalla principal de nuestro proyecto, encontraremos todo lo necesario para realizar nuestra aplicación Android

    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 de tanto la pantalla inicial. Luego que hayas colocado una imagen de fondo, que los botones tengan el tamaño que deseas y 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.



    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 como 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 porqué 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)

    Así quedará nuestro diagrama en el editor de bloques Así quedará nuestro diagrama en el editor de bloques

    ¿Te animas a jugar un poco mientras preparamos la segunda parte de este artículo? En la próxima entrega veremos como 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 como 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!

¿Y tú, qué opinas?

  • #1 Slin
    Slin domingo, 02 de octubre de 2011, 00:13

    Excelente justo lo que estaba buscando en este momento lo pruebo

    Responder >> Attention Minus Plus Votos: 5 de 9
  • #2 GABINO
    GABINO domingo, 02 de octubre de 2011, 01:36

    para cuando tendras termido la siguiente parte del proyecto... en verdad esta interesante y es precisamente algo que andaba buscando..

    pero tengo poco tiempo para realizar este proyecto asi que en verdad me gustaria que no demoraras mucho en terminar de redactar tu proyecto.

    Responder >> Attention Minus Plus Votos: -23 de 25
  • #3 <a href="../../foro/member.php?u=86" target="_self">Yesbond</a>
    Yesbond domingo, 02 de octubre de 2011, 01:38

    Magnifico, eres un capo amigo Mario. Felicitaciones porque siempre estas innovando en tus articulos.

    Un abrazo

    Responder >> Attention Minus Plus Votos: -7 de 13
  • #4 jaun
    jaun domingo, 02 de octubre de 2011, 01:39

    Se me ocurren muchas ideas con esto! lo malo es que la mayor parte de ellas involucran olgasanería (prender y apagar el foco de mi cuarto desde mi cama por ejemplo)

    Responder >> Attention Minus Plus Votos: 15 de 19
  • #5 Tekenen
    Tekenen domingo, 02 de octubre de 2011, 02:24

    Genial señor mario, pero no tengo un phone android

    Responder >> Attention Minus Plus Votos: -13 de 17
  • #6 Juan Carlos
    Juan Carlos domingo, 02 de octubre de 2011, 10:58

    Gracias por compartir la info!!

    Responder >> Attention Minus Plus Votos: 6 de 8
  • #7 <a href="../../foro/member.php?u=4" target="_self">Fede</a>
    Fede domingo, 02 de octubre de 2011, 13:35

    Muy pero muy bueno Mario

    Responder >> Attention Minus Plus Votos: 6 de 10
  • #8 <a href="../../foro/member.php?u=31481" target="_self">eduardo echeverry rodas</a>
    eduardo echeverry rodas domingo, 02 de octubre de 2011, 17:59

    Super bueno Mario!. De lo mejor que eh visto, felicitaciones!.

    Responder >> Attention Minus Plus Votos: 8 de 10
  • #9 FERNANDOAE
    FERNANDOAE domingo, 02 de octubre de 2011, 20:47

    Mario donde conseguis los modulos bt? y cuanto duelen?

    Responder >> Attention Minus Plus Votos: -6 de 8
  • #10 FERNANDOAE
    FERNANDOAE domingo, 02 de octubre de 2011, 20:48

    Donde puedo comprar el modulo BT? y cuanto cuestan?

    Responder >> Attention Minus Plus Votos: -7 de 7
  • #11 luis
    luis lunes, 03 de octubre de 2011, 06:05

    buena voz Mario ..preparare lo necesario para este proyecto....

    Responder >> Attention Minus Plus Votos: 5 de 9
  • #12 Mario Daniel
    Mario Daniel lunes, 03 de octubre de 2011, 16:09

    Buenos días, muy bueno el proyecto, a donde se pueden comprar los modulos bluetooh en Argentina?

    Responder >> Attention Minus Plus Votos: -3 de 5
  • #13 <a href="../../foro/member.php?u=43154" target="_self">DaniC</a>
    DaniC lunes, 03 de octubre de 2011, 16:52

    Excelente Articulo Mario !!, como siempre, tus proyectos son excelentes y este es uno de los mejores que he visto.

    gracias por compartir tus conocimientos y experiencias !

    Responder >> Attention Minus Plus Votos: 4 de 6
  • #14 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario lunes, 03 de octubre de 2011, 17:17

    Hola a todos!

    Gracias por los saludos! Me alegra mucho que les haya gustado esta primera parte del artículo. Se viene mucho Android a partir de esto y con toda la movilidad que el Bluetooth nos permite.

    #2 Discúlpame si me demoro unos días en hacer el trabajo. Y si en verdad debo hacerlo pronto, auméntame el sueldo y lo terminamos en pocas horas :))

    Al módulo lo compré directamente en Microingenia a 40 Euros (más envío)
    http://www.microingenia.com/electronics/product.php?id_product=4

    No tengo conocimiento sobre si se comercializa en Argentina. Pero el módulo RN41 es muy popular y quizás se pueda conseguir a partir de otro fabricante/distrib...
    Leer más

    Responder >> Attention Minus Plus Votos: 6 de 8
  • #15 Jose
    Jose martes, 04 de octubre de 2011, 01:41

    Mario, porque en algunos circuitos anteriores el Pin 8 esta connectado al Pin 10 del microcontrolador, pero en este caso el Pin 8 esta connectado a tierra?

    Responder >> Attention Minus Plus Votos: 4 de 4
  • #16 Jose
    Jose martes, 04 de octubre de 2011, 01:51

    En el diagrama del circuito, el LED esta connectado a PIO12, pero no hay un PIO12.

    Responder >> Attention Minus Plus Votos: 4 de 4
  • #17 animationxx
    animationxx martes, 04 de octubre de 2011, 06:01

    Mario de casualidad conoces alguna forma de programar en java como el pp inventor para android???

    Responder >> Attention Minus Plus Votos: 1 de 5
  • #18 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario martes, 04 de octubre de 2011, 06:08

    #16 Tienes razón José, había un error en el gráfico. Ya está corregido.

    El pin 8 del 18F25K20 es GND al igual que el pin 19. No creo haber realizado diagramas conectando el pin 8 al pin 10 en este PIC. De todos modos, si encuentras esto que me indicas, copia el enlace como texto y pégalo aquí para controlar. Gracias por tu ayuda.

    #17 Hola!
    Lo que solicitas empieza aquí, en un gran trabajo de Freddy-A
    http://www.neoteo.com/foro/f30/programacion-android-parte-i-introduccion-plataforma-2283/

    Saludos!
    Mario

    Responder >> Attention Minus Plus Votos: 5 de 5
  • #19 <a href="../../foro/member.php?u=58823" target="_self">j4mes153</a>
    j4mes153 martes, 04 de octubre de 2011, 07:14

    La verdad q! sta muy interesante la innovacion q sta ala vanguardia de stos dia !! soy nuevo aqui y soy un adicto ala tecnologia e innovaciones pronto lo armare para comentar q tal me fue gracias x tu aporte !! a la comunidad..
    gracias Mario.

    Responder >> Attention Minus Plus Votos: 4 de 4
  • #20 Jose
    Jose martes, 04 de octubre de 2011, 07:57

    Hola Mario. Aqui estan los enlaces. En el microcontrolador, el Pin 8 esta conectado al Pin 10.

    El projecto del Bluetooth y el termometro:

    http://www.neoteo.com/bluetooth-con-modulo-rn41-y-18f25k20

    Amicus: Software libre para PIC 18F25K20:

    http://www.neoteo.com/amicus-software-libre-para-pic-18f25k20

    Responder >> Attention Minus Plus Votos: 5 de 5
  • « «« Anterior123Siguiente »» »
    Cargando...Cargando...

  • nuevo comentario
    Nombre

    Campo obligatorio

    Email

    Escriba una dirección de correo electrónico con el formato sunombre@ejemplo.com.

    Campo obligatorio

 
Ir arriba