Termómetro con LM92 en Android (App Inventor)

Mario Sacco . Vista 13241 veces

En este artículo, veremos como controlar temperaturas a distancia mediante un enlace Bluetooth y como recibir los eventos de activación de dos pulsadores remotos sobre nuestro móvil con Android. La versatilidad que nos brindan los sensores integrados, como el LM92, sumado a la practicidad de trabajar en cualquier entorno con un dispositivo móvil Android, nos llevan a idear elementos que antes dependían de transportar un ordenador portátil a donde sea necesario controlar y/o registrar eventos o condiciones de trabajo de alguna máquina, de un ambiente o de cualquier entorno “que debía ser controlado”. Hoy, gracias a Android, a App Inventor y a un elemental hardware construido alrededor de un 18F25K20 podremos controlar todo esto y mucho más desde la comodidad de nuestro dispositivo móvil.


  • En artículos anteriores pudimos ver todo lo necesario para alcanzar un enlace entre nuestro dispositivo móvil, dotado de Android, y un circuito sencillo basado en un PIC, el poderoso 18F25K20 que, gracias a la utilización del software libre Amicus nos permitía recibir instrucciones y datos enviados desde nuestro dispositivo móvil. La aplicación, por sencilla que fuera, nos permitió alcanzar un “Hola Mundo” encendiendo un LED a distancia. Por supuesto que ese puntapié inicial nos creó el entusiasmo para intentar la comunicación inversa, es decir, transmitir hacia el dispositivo con Android, datos generados en nuestro circuito de ensayo. Además de dos pulsadores, hemos incluido en este trabajo un sensor de temperatura para recibir a distancia un dato adicional que agrega más complejidad al trabajo, pero que sirve para imaginar el control total que podemos ejercer sobre un equipo remoto. Esto es, nos muestra el potencial de comodidad que podemos alcanzar, dejando de lado los ordenadores portátiles que antes eran los reyes de los trabajos de campo. Hoy, Android llega para ocupar ese lugar y que todo sea más sencillo, rápido y práctico que antes. Las aplicaciones ahora pueden desarrollarse en ámbitos insólitos. Observa:



    Lo que vemos en imagen es la aplicación que venimos desarrollando desde hace algunos artículos atrás, con el beneficio de recibir información en el dispositivo móvil, proveniente de nuestro circuito con microcontrolador. Recuerda que tú puedes utilizar cualquier microcontrolador y cualquier lenguaje de programación, nosotros por comodidad utilizamos el PIC 18F25K20, pero estos ejemplos pueden trasladarse a cualquier microcontrolador. En este desarrollo concreto, tomamos lectura de dos pulsadores y la cadena de datos que nos envía el termómetro integrado LM92 para presentarlas en la pantalla de nuestro dispositivo móvil. Hasta ahora, nuestro trabajo se construía en el App Inventor con los eventos de pulsar un botón y ello se continuaba con acciones que se presentaban en la pantalla del móvil y con datos enviados vía Bluetooth a nuestro desarrollo remoto. Estos eventos ocurrían a cada momento en que “nosotros decidíamos ejecutar la acción” y el PIC los esperaba con la instrucción HSERIN para recibir los datos, interpretarlos y ejecutar el trabajo en función de la estructura de los datos enviados. Ahora, es nuestro móvil Android el que debe estar a la escucha y atento, de manera permanente, esperando las instrucciones o datos que el PIC pueda enviarle en cualquier momento con el comando HSEROUT. Es muy importante comprender esto: la aplicación de campo puede enviar datos en cualquier momento y Android deberá estar atento siempre.

    En esta aplicación con App Inventor para Android vemos resaltadas las líneas de envío de datos al móvil En esta aplicación con App Inventor para Android vemos resaltadas las líneas de envío de datos al móvil

    Por supuesto, siempre existe una tasa de error, en la recepción de datos, que puede ser resuelta de muchas formas, de acuerdo a la habilidad del programador y a la complejidad necesaria para el trabajo. No será igual la prevención de errores para una sala de cuidados intensivos en un hospital que para un sencillo juego de luces de entretenimiento. En nuestro ejemplo, intentamos reducir al mínimo los errores aunque se trate de una aplicación trivial, pero de todos modos, nuestro propósito (ahora) no es explicar ahora cómo evitar o minimizar errores  sino cómo enviar datos útiles y que se puedan utilizar para aplicaciones con un alto potencial de desarrollo posterior. El video anterior muestra un simple protoboard dentro de una heladera (nevera/refrigerador/cámara de frío) pero con algo más de esfuerzo y atención en el trabajo del software, puede transformarse en el control de una cámara frigorífica industrial que puede ser monitoreada con un simple teléfono móvil que disponga de Android. Las alarmas del LM92 más todos los eventos y parámetros que puede controlar el PIC, estarían en la palma de tu mano o lo que es mejor, de tu futuro cliente. Como mencionamos antes, para ello hay que trabajar sobre las rutinas de corrección de errores para evitar falsas alarmas o funcionamientos erráticos. El circuito utilizado es el mismo que el anterior con el agregado de los pulsadores y el LM92.

    Circuito propuesto para el termómetro Bluetooth en Android (App Inventor) Circuito propuesto para el termómetro Bluetooth en Android (App Inventor)

    Para estar siempre alerta y “a la escucha” de cualquier arribo de datos, App Inventor, como todo sistema de programación orientada a objetos, posee lo que se conoce como “Timer”. A este importante elemento de programación podemos utilizarlo para muchas cosas dentro de un programa. Con él podemos construir desde una alarma, pasando por un temporizador o un cronómetro hasta para lo que nosotros lo necesitamos: para ejecutar eventos cada un determinado período de tiempo. Es decir, nuestro “Timer” (o temporizador, o reloj, o clock) se encargará de decirle a Android que “escuche” si llega algún dato. Mientras no está escuchando, Android hará otras tareas, pero cada determinados lapsos de tiempo (establecidos por nosotros) se pondrá atento a recibir datos. Estos datos quizás nunca lleguen, o tal vez lo hagan en el momento menos oportuno, pero tarde o temprano llegarán y Android deberá recibirlos, procesarlos y ejecutarlos. Demás está decir que, todo esto será preparado mediante la aplicación App Inventor para finalmente ser cargada y utilizada en el dispositivo móvil. Uno de los criterios más importantes que debemos considerar entonces es que el “Timer” se activa cada determinado lapso de tiempo, el que puede no coincidir con la llegada de los datos. Es decir, puede presentarse la situación en que el los datos comienzan a llegar y a la mitad de ellos, el Timer se activa. Resultado: cadena de datos rota y resultados incorrectos para procesar.



    El peor escenario es cuando el programador desconoce el tipo de información que debe recibir la aplicación. En cambio, si sabemos que siempre leeremos una cadena de datos que empieza con un asterisco, será sencillo rechazar cualquier cosa que no comience con un asterisco. Como dijimos antes, este no es un artículo donde explicaremos los métodos de corrección de errores, pero no debemos dejar de explicarte que te encontrarás con ellos al trabajar en App Inventor (o en cualquier tipo de software) y deberás trabajar para resolverlos. Retomando el trabajo de nuestro Timer, podemos mostrarte que utilizaremos dos. Uno será para marcar el ritmo de la “escucha” de los datos provenientes de la aplicación remota y el otro lo utilizamos para permitir que los datos recibidos se puedan mostrar un lapso de tiempo útil en pantalla. En el editor de bloques, el Timer más “rápido” servirá para tomar lectura de los datos (cada 10 milisegundos se activa) y el otro servirá para dejar la indicación en pantalla durante un tiempo prudencial. Visto en el App Inventor quedarían de este modo:

    Vista del Editor de Bloques de App Inventor para nuestro Clock1.Timer Vista del Editor de Bloques de App Inventor para nuestro Clock1.Timer

    Los temporizadores (Clock1.Timer y Clock2.Timer) se pueden apreciar en la parte inferior de la imagen. Clock1.Timer, cada 10 milisegundos (tú puedes ensayar otros lapsos de tiempo), en nuestro caso realiza la siguiente secuencia. Primero controla si el dispositivo Android está conectado con el dispositivo remoto. Si esto es así, observa si hay Bytes para recibir (en una cantidad mayor a cero). Nuevamente, si esto se cumple coloca sobre la etiqueta 10 (Label10) un texto. Este texto será la conjunción (join) de todos los Bytes recibidos en la cadena transmitida y acumulados en Label10.Text. Eliminará el color de fondo de la etiqueta y ofrecerá las letras de color amarillo. Por este motivo, cada vez que veías la temperatura entregada por el LM92, ésta aparecía de color amarillo. De este modo entonces, cada 10 milisegundos estamos atentos a lo que el módulo Bluetooth recibe. Pero al texto recibido hay que borrarlo porque de lo contrario se acumularía en pantalla y se perdería la lectura de datos en el fondo de la misma. Por este motivo, hay que colocar un segundo temporizador para borrar los textos mostrados después de un tiempo prudente. Para borrar un texto el procedimiento es muy simple, se escribe en su lugar un texto vacío. Obsérvalo en Clock2.Timer. Una vez que el intervalo se realiza, se aplica un texto vacío donde antes se mostraba la información.

    La aplicación de campo puede enviar datos en cualquier momento y Android deberá estar atento siempre.

    Uno de los problemas habituales es “sincronizar” los temporizadores, cosa que nosotros no hemos hecho ya que, te repetimos, nuestra intención (ahora)  no es corregir errores, sino recibir y mostrar datos. Ya tendremos oportunidad de aprender a corregir los defectos que provocan las activaciones fuera de tiempo de los temporizadores y que se manifiestan con una corta exposición del texto siendo en ocasiones, muy fugaz y breve mientras que en otras es prolongada y eficiente. Otro detalle que habrás notado en los videos es que, en ocasiones, el texto es truncado al inicio de los datos. Más allá de esto, ya estamos en condiciones de comenzar a trabajar con datos en ambos sentidos sobre Android. Ahora depende de ti y tu creatividad. En el Foro de Electrónica de NeoTeo estaremos siempre atentos a tus aportes, ejemplos, experiencias y enseñanzas que puedas ofrecernos. ¿Te imaginas todo lo que puedes lograr enviando y recibiendo datos de manera inalámbrica vía Bluetooth? Pues si te lo imaginas, compártelo con todo el mundo aquí, en NeoTeo.

    Aplicación para App Inventor  Descargar Código Fuente para el 18F25K20  Descargar

¿Y tú, qué opinas?

  • #1 kiwi
    kiwi martes, 18 de octubre de 2011, 11:36

    Pero... esto anda de verdad?

    Responder >> Attention Minus Plus Votos: 0 de 2
  • #3 <a href="../../foro/member.php?u=3495" target="_self">andrs82</a>
    andrs82 martes, 18 de octubre de 2011, 16:00

    Hola q tal Mario? , eh seguido tus proyectos y articulos desde hace mucho y me parecen muy interesantes y bastante provechosos a la hora de llevarlos al diario vivir,

    esta vez tengo un pequeño inconveniente que me gustaria y en verdad quisiera me colaboraras con esto, y es q para los proyectos tengo destinada una tablet que funciona igual q un celular con android .. mi problema es q no tiene bluetooth pero si una entrada adaptada de ethernet y conectividad wifi.. se puede hacer algo con esto ???

    espero algun aporte de tu parte y de nuevo gracias por la dedicacion en estos articulos

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

    Hola Andrés

    En los artículos que utilizo Bluetooth con mi ordenador portátil, por ejemplo, en el de la Estación Meteorológica utilizo un módulo Bluetooth externo que se conecta por USB. Si tu tablet tiene conectores USB tradicionales (creo que la mayoría los trae) puedes hacer lo mismo. Es como un pen drive, pero es un módulo Bluetooth.

    Te reitero, busca en otros artículos míos sobre Bluetooth y verás de lo que te hablo. De ese modo creo que puedes solucionarlo y darle conectividad Bluetooth a tu tablet. No sé si Android permite trabajar con esos módulos externos, pero esa sería tu solución (y la de muchos que estén en la misma situación tuya)

    Saludos!
    ...
    Leer más

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #5 Julian
    Julian martes, 18 de octubre de 2011, 17:33

    hola mario soy nuevo en neoteo y aprecio tus proyectos sigue asi...
    Me gustaria poder ver el editor de bloque completo tengo un par de dudas por eso (si no te molesta) o sino podes explicarme que es lo que esta arriva de Encender_LED.click osea el bloque de arriva..
    me ayudaria muchisimo gracias!!

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #6 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario miércoles, 19 de octubre de 2011, 01:06

    #5 Hola Julián!

    Si estás trabajando con el App Inventor, observa que dejé esta aplicación que usamos en el artículo para descargar, al final del texto. En App Inventor, dentro de Mis Proyectos, pulsa el botón More Actions (Más acciones) y luego con Upload Source la subes a tu ambito de trabajo. Allí no sólo la tendrás completa sino que además podrás ensayar agregando o quitando bloques a tu criterio hasta hacerle las reformas que quieras o te interesen ver.

    Si subo una imagen tendrás información estática. Si en cambio subo la aplicación puedes trabajar sobre ella y jugar con los mismos juguetes que yo. :))

    Saludos!
    Mario

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #7 Julian
    Julian miércoles, 19 de octubre de 2011, 02:28

    #6 Mario sos un un genio.... pero siento molestar nuevamente:
    Por ser nuevo en esto de android y recien entro en la programacion con app inventor no puedo abrir los archivos.. osea cuando pongo examinar busco el archivo que descargue. Hasta ahi todo bien pero cual abro ya probe con todos y me dice "The selected project is not a project archive!"
    mario te pido perdon si te molesto... muchas gracias!!!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #8 <a href="../../foro/member.php?u=60158" target="_self">Julian_03</a>
    Julian_03 miércoles, 19 de octubre de 2011, 02:49

    ya esta ya esta lo solucione gracias Mario

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #9 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario miércoles, 19 de octubre de 2011, 03:05

    #7 OK Julian, no es ninguna molestia.

    Aquí te dejo la imagen que me pides del editor de bloques completo:

    http://www.4shared.com/photo/fullsize/Pc-SacUt/NeoTooth_Bloques_Completo.html

    Respecto al mensaje de error que te aparece, si lo crees conveniente, podemos tratarlo en el foro. De lo contrario, espero que con la imagen puedas armar tu aplicación.

    Cualquier duda me consultas en el foro.
    Saludos!
    Mario

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #10 <a href="../../foro/member.php?u=60158" target="_self">Julian_03</a>
    Julian_03 miércoles, 19 de octubre de 2011, 04:25

    #9 Muchisimas gracias Mario la verdad un genio

    Era yo que estaba cometiendo el error (descomprimia el archivo y buscaba dentro del mismo y no tenia que seleccionar el archivo rar completo) Ya visitare el foro gracias!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #11 <a href="../../foro/member.php?u=60038" target="_self">editronikx</a>
    editronikx miércoles, 19 de octubre de 2011, 06:16

    un cordial saludo mario

    gracias a sus primeros aportes ya hice mis propios aplicativos de control en android en un S.E x8 pero en mi medio es muy costoso un modulo Bluetooth es por ello que los datos los envio a mi laptop y en hiperterminal los veo y luego con un aplicativo de visual los reenvio al pc, existe alguna manera la manera mas sencilla de redireccionarlos a serial o usb para que un pic los lea.

    me puede recomendar alguna solución ?
    gracias...

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #12 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario miércoles, 19 de octubre de 2011, 06:53

    Hola editronikx!

    En realidad no; no existe nada sencillo para solucionar el inconveniente de no tener un módulo bluetooth disponible. La idea es hacer una aplicación portátil, que no dependa de un ordenador y que podamos llevarla a cualquier ámbito. Lo que podrías hacer con tu aplicación en visual es conectarte desde tu laptop al PIC utilizando un 18F2550 o un 4550 (mediante USB) evitando pasar por la PC de escritorio. Esa sería "lo menos complicado".

    Intenta conseguir un módulo bluetooth. La idea es aprovechar la libertad que te brinda un enlace inalámbrico entre un PIC y un móvil con Android.

    Saludos!
    Mario

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #13 Rolando
    Rolando miércoles, 19 de octubre de 2011, 14:34

    Hola,

    El módulo RN41 se consigue en Argentina? Dónde?

    Gracias,

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #14 gasty
    gasty miércoles, 19 de octubre de 2011, 17:17

    nose si vos que utilizas el ingenio de esa manera sos un genio o yo que no lo se aplicar soy un burro xD

    P.D.: es facil programar para el sistema android? o tiene lo suyo que no lo hace tan facil O.o?

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #15 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario miércoles, 19 de octubre de 2011, 17:35

    #13 Rolando

    No sé si se vende en Argentina. Yo lo compré en España, en Microingenia. http://www.microingenia.com/electronics/product.php?id_product=4

    #14 gasty

    Aquí nadie es genio y nadie es burro.
    Todos estamos en el mismo camino del aprendizaje. Algunos van más adelante y otros, a los que les cuesta más, vienen más atrás.
    No te sientas así, ni me consideres nada especial.
    Revisa los otrs hilos donde hablo de programar para Android con App Inventor y verás que sólo es cuestión de dedicación y que te guste. El resto viene solo. ;)

    Saludos!
    Mario

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #16 <a href="../../foro/member.php?u=86" target="_self">Yesbond</a>
    Yesbond miércoles, 19 de octubre de 2011, 18:34

    Nunca paras de innovar y de hacer parecer facil las cosas que haces; es como ver jugar futbol, cuando lo ves en la TV parece facil, pero si lo vas a practicar tu mimo ya no es tan facil; pero cuado lo logras es muy gratificante.
    Muchas gracias por tus geniales articulos; porfa no pares porque nos matas.

    Un abrazo

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #18 MLO
    MLO jueves, 20 de octubre de 2011, 06:02

    Esta excelente Mario :)

    Yo hice algo parecido pero con un .jar (http://www.youtube.com/watch?v=0hbh8BeRYpk) ... voy a seguir tu tuto para comenzar con el Android :)

    Según leí, las aplicaciones toca realizarlas en línea?

    Un saludo ;)

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #19 jukinch
    jukinch lunes, 24 de octubre de 2011, 04:42

    Muy copado Mario. !!!

    Responder >> Attention Minus Plus Votos: -1 de 1
  • #20 Claudio Joaquin Pérez
    Claudio Joaquin Pérez lunes, 24 de octubre de 2011, 05:49

    #13 Hola Rolando, los que se consiguen en argentina son los HC-05, que son similiares.

    http://articulo.mercadolibre.com.ar/MLA-131384750-modulo-bluetooth-hc-05-masterslave-rs232-a-bluetooth-_JM

    Buscame en facebook tengo un album de fotos para que veas.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #21 Luis Herrera Santisbon
    Luis Herrera Santisbon jueves, 17 de noviembre de 2011, 01:27

    HOla Mario!!!
    Tengo una pregunta!! Ya hice mi aplicación y me quedó muy bien, tambien compré un modulo HC 05, pero tengo problemas con parear mi modulo con mi celular que tiene android. es un Galaxy Ace. Nunca encuentra el modulo, y he probado tambien con otros celulares con android y no lo detectan.
    ¿A qué se puede deber este problema?

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #22 bruno Chile
    bruno Chile domingo, 20 de noviembre de 2011, 15:51

    Estimado Luis Herrera.

    este modulo tiene una particularidad, que es la siguiente:

    este modulo se debe resetear, para que pueda ser ubicado por otros "bluetooth", para hacerlo solo debes llevar el pin rst a bajo.

    el led indicador deberá quedar parpadeante a una frecuencia mayor q la q tenias (mas rapido q un seg).

    desde ese momento ya deberias verlo en cualquier dispositivo.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • « «« Anterior12Siguiente »» »
    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