Iluminación LED controlada con Android

Mario Sacco . Vista 34117 veces

Con el retorno de App Inventor a la web, los desarrollos para móviles con Android vuelven a decir presente en NeoTeo y la aplicación de hoy, posee características de expansión muy interesantes. En esta oportunidad, controlaremos mediante PWM, la iluminación de un LED sencillo que estará conectado a un PIC18F25K20. El control de intensidad luminosa variable o extrema, estará operada desde un teléfono móvil, a través de un enlace Bluetooth, utilizando los conocidos y económicos módulos HC-06. Como todo comienzo (Hola Mundo), iniciamos el trabajo con un LED y luego veremos como controlar toda la iluminación LED de la casa, desde la comodidad de nuestro dispositivo móvil. Aplicaciones Android, nuevamente en NeoTeo.


  • Primero fue el mando a distancia a través de los infrarrojos; hoy, con cualquier dispositivo móvil que utilice Android, podemos controlar la iluminación LED de nuestra habitación o de toda nuestra casa. El proyecto que te proponemos en esta oportunidad, además de encender y apagar una pequeña luminaria, permite variar la intensidad de encendido de la misma, gracias a la utilización de una señal PWM que generaremos con el hardware interno de un PIC18F25K20.  El circuito es muy sencillo y ya conocido por todos nosotros, con la novedad de que, en esta ocasión, utilizaremos una de las salidas CCP (Capture, Compare, PWM) que trae el microcontrolador. Queremos aclararte que esto no es exclusividad de este microcontrolador, sino que la mayoría lo trae, sólo hay que saber encontrar el pin correspondiente dentro del encapsulado del mismo. El beneficio que nos ofrece esta conexión es la posibilidad de utilizar, en el software gratuito Amicus, la instrucción HPWM que, básicamente, nos permite operar la mencionada salida (que comparte el pin con PORTC.2) en modo secundario. Es decir, no debemos poner al microcontrolador a estar atento y pendiente del uso de una interrupción para operar una salida PWM.

    Circuito propuesto para esta aplicación PWM - Bleutooth - Android - App Inventor, Android Circuito propuesto para esta aplicación PWM - Bleutooth - Android

    La instrucción se ejecuta y el PWM continúa su operación hasta que le indiquemos un cambio de trabajo, dentro de las líneas de programa del PIC. Dicho en otras palabras, mientras el PWM se mantiene activo en segundo plano, podemos aprovechar el PIC para otras operaciones. Como te adelantamos al comienzo, el circuito es un clásico en nuestras publicaciones y con su ayuda, vamos viendo y analizando diferentes alternativas para aprovechar las opciones que nos brinda este formidable conjunto que reúne al microcontrolador, el módulo Bluetooth y a nuestro dispositivo móvil con Android, para manipular y trabajar equipos o desarrollos a distancia, sin cables molestos, ni complejos sistemas, difíciles de programar o configurar. Para realizar la conexión Bluetooth y poner a funcionar el PWM de salida, nuestro PIC necesita tan sólo estas pocas líneas de programa.

    Pequeño programa que se carga en el 18F25K20 para controlar el dispositivo Android - App Inventor, Android Pequeño programa que se carga en el 18F25K20 para controlar el dispositivo Android

    En esta oportunidad, durante todo el tiempo de trabajo, el microcontrolador se encarga de “escuchar” con atención al módulo Bluetooth (trabajando a 115200bps) y tomará las variables que reciba desde el dispositivo móvil y ejecutará un programa muy elemental, muy sencillo. Con la instrucción HSERIN recibimos el dato de una variable BYTE y lo almacenamos en la variable PWMLED; luego, con ese valor nos encargaremos de dar forma a la instrucción HPWM. En esta última instrucción, el 1 significa que utilizaremos el canal número 1 (el 18F25K20 posee dos módulos CCP), luego viene la variable que tomaremos desde el módulo Bluetooth (PWMLED) y finalmente, encontramos la frecuencia de trabajo en “ciclos por segundo” sobre la que enviaremos la información, modulada por ancho de pulsos. Para este tipo de configuración, que utilizamos en el PIC, la frecuencia es de 4000 ciclos por segundo. Según la aplicación, utilizar frecuencias altas de PWM no favorece a la linealidad de la respuesta en la variación del ciclo de trabajo. Es decir, regular el ancho de los impulsos será más “efectivo” cuanto más baja sea la frecuencia de oscilación. Para la frecuencia utilizada por nosotros, las variaciones de la intensidad luminosa del LED más importantes se observaron en el primer tercio de la capacidad de la variable.

    Vista del protoboard con los pocos componentes necesarios para este desarrollo - App Inventor, Android Vista del protoboard con los pocos componentes necesarios para este desarrollo

    Con una alta frecuencia de salida, la inercia de “encendido y apagado” del LED como elemento físico luminoso, sumado a nuestra percepción visual, nos provoca la sensación de que el LED está intensamente encendido cuando, quizás, sólo se encuentra activo durante la mitad del tiempo. El fenómeno a destacar es la velocidad en que ocurre ese “encendido”. Cuatro mil veces en un segundo es muy rápido (al menos para mí) como para que el ojo humano identifique un PWM al 50%. Por este motivo, sólo podremos “apreciar” una variación efectiva durante el primer tercio de actividad. De todos modos, hay variaciones notables entre el 50%  y el máximo, pero lo importante (para el ojo humano), se desarrolla en las partes bajas del PWM. Para otro tipo de aplicaciones, que no sea el encendido de una luminaria y donde un dispositivo electrónico sea el encargado de decodificar esta señal sin las limitaciones humanas, el circuito trabajará del modo esperado y sin observaciones, ya que será capaz de acompañar las variaciones en el ancho de los impulsos.

    El montaje del circuito es, como mencionamos antes, muy sencillo de realizar y no plantea grandes o nuevos desafíos, respecto a los que ya hemos visto y trabajado con este (u otro) microcontrolador y un módulo Bluetooth. Un cristal, sus pequeños capacitores asociados, un circuito ICSP para la programación sin extracción del PIC del circuito, la alimentación con la fuente modular para protoboard y el módulo Bluetooth conectado a los terminales Rx y Tx del microcontrolador. Luego, el LED con su resistencia limitadora y un buen filtrado contra ruidos externos en la línea de alimentación del protoboard. Con este elemental hardware entonces, damos paso al trabajo realizado en el dispositivo móvil, viendo antes, hacia dónde vamos con este montaje.



    En la aplicación “armada” en App Inventor realizaremos una estructura habitual donde creamos variables y constantes a las que les asignamos nombres y luego utilizaremos o “llamaremos” en los momentos en que sea necesario, dentro de lo que el desarrollo de la aplicación requiera. Por ejemplo,  haremos uso de nuestro conocido objeto BluetoothClient para comunicarnos con el módulo HC-06, utilizaremos un temporizador (timer o clock) para observar cada pocos milisegundos la actividad de un elemento llamado “Ball” y los clásicos botones de conectividad Bluetooth con su pulsado corto, para conexión y extendido para su desconexión (LongClick). No debemos olvidar de incorporar el botón de “Salir” para cerrar en forma eficiente la aplicación (close application), además de la constante para incorporar de manera sencilla la dirección MAC de nuestro módulo Bluetooth.

    Canvas y Ball, los nuevos elementos que utilizaremos en App Inventor - App Inventor, Android Canvas y Ball, los nuevos elementos que utilizaremos en App Inventor

    Como mencionamos antes, lo destacado de esta aplicación es el uso de una zona rectangular que, dentro de ella haremos que el dispositivo móvil sea sensible al tacto y, entre otras cosas, sepa devolvernos una información útil, en valores x e y, como si estuviéramos hablando de un par de ejes cartesianos. Por supuesto, estamos hablando de una zona en dos dimensiones (2D). La particularidad de este objeto llamado “Canvas” es que la referencia que nos entregará  será considerada del siguiente modo: dentro del eje horizontal “x” a partir del margen izquierdo de la zona empleada y en el caso del eje vertical “y” será desde el margen superior del área que abarca este objeto que, te repetimos, se denomina “Canvas” y lo encontrarás fácilmente dentro de los elementos básicos a utilizar con App Inventor. Dentro de este objeto puede ocurrir mucho más que una simple devolución de posiciones relativas, sino que puedes incorporar otros objetos móviles llamados “Sprite” o “Ball” (como hemos utilizado nosotros) y que encontrarás en el apartado de objetos de animación.

    Así debe quedarte la parte superior del diagrama de bloques en App Inventor - App Inventor, Android Así debe quedarte la parte superior del diagrama de bloques en App Inventor

    Históricamente, a cualquier objeto móvil en la pantalla de un ordenador se lo denominó “Sprite” aunque aquí encontramos una variedad más sencilla que se denomina “Ball”. Éste objeto es sólo circular, liso, llano y puede poseer un color definido en App Inventor, mientras que el “Sprite” tiene posibilidades de incorporar una imagen. Por supuesto, esta imagen puede ser desde el cursor de un resistor variable lineal (potenciómetro) como es el caso que nos reúne, pasando por una nave espacial decidida a invadir el planeta, hasta llegar a un monstruo dispuesto a comer tu cerebro. Como te explicábamos, estos objetos móviles pueden obedecer nuestra acción externa (táctil) o pueden tener movimiento propio, según el armado de la aplicación ya que, como te darás cuenta, de este modo se inicia la construcción de un simple juego Pong en Android y con App Inventor. Nosotros haremos uso de la primera opción y seleccionaremos los bloques que nos permitan mover el objeto “Ball”, que llamamos “Cursor”, dentro del objeto “Canvas” que haciendo abuso de nuestra creatividad e imaginación llamamos “Zona_cursor”. En la primera imagen del conjunto de bloques obtenidos, puedes ver que tenemos un par de sectores importantes que reúnen la mayoría de los elementos que intervienen en el movimiento del cursor. No sólo cuando tocamos (Touch) dentro de la zona del cursor sino además, cuando arrastramos (Drag) el objeto móvil dentro de la zona.

    Así se completa el diagrama en bloques dentro de App Inventor - App Inventor, Android Así se completa el diagrama en bloques dentro de App Inventor

    Cuando trabajamos con el elemento móvil en el conjunto de bloques, observa que hacemos referencia al valor que el mismo adquiere dentro de la zona habilitada con las posiciones iniciales, previas, y actuales a cada momento. Esto nos permitirá ubicar el objeto en pantalla (en la zona canvas) y desplazarlo, obteniendo así los valores de referencia en los ejes “x” e “y”, que en nuestra aplicación sólo será para el eje “x”, ya que no utilizaremos otro tipo de movimiento para el objeto. Al valor de posición dentro de este eje lo llamaremos “PWM” y será como mencionamos al principio, un número comprendido entre 0 y 255 (variable BYTE). Ese valor que adquiera según su posición en le eje “x” se transmitirá vía Bluetooth cada un determinado intervalo de tiempo seleccionado en “Clock” (10mS) y nuestro montaje con el LED, recibirá ese dato interpretándolo como el valor a asignar a la variable que controla el ciclo de trabajo del LED. Por último, se encuentran los botones que apagan o encienden el LED en forma directa y mueven el objeto “Cursor” a la vez que asignan el valor apropiado (a PWM) según sea el botón activado. De esta manera, se completa esta sencilla aplicación realizada en App Inventor.

    PWM es el nombre de la variable que enviará datos cada 10mS al dispositivo bajo control - App Inventor, Android PWM es el nombre de la variable que enviará datos cada 10mS al dispositivo bajo control

    A partir del código que te dejamos al final del artículo tú puedes ampliar, reformar y mejorar todo este inicio de trabajo (que nosotros continuaremos ampliando en otras entregas) aprovechando que, todo lo necesario para su implementación y uso, es gratuito y se encuentra disponible en la web. Sólo debes ir tomarlo y comenzar a disfrutar realizando aplicaciones personales a tu gusto y a la medida de tus necesidades. Nosotros, seguiremos trabajando en este desarrollo, paso a paso para lograr un sistema de iluminación variable y eficiente que pueda ser incorporado a un sistema domótico o para simplemente, activar las luminarias empleadas en nuestra habitación. Como siempre, estamos en el Foro de Electrónica de NeoTeo para compartir ideas, nuevos proyectos o desarrollos y para seguir aprendiendo, entre todos, cada día un poco más. ¡Te esperamos allí!

    Web   App Inventor Aplicación de este artículo:  Descargar Firmware para el PIC  Descargar

¿Y tú, qué opinas?

  • #1 mauro
    mauro lunes, 19 de marzo de 2012, 19:40

    Muy Bueno Mario, segui asi, sos una gran inspiracion para todos los que andamos en la electronica

    Responder >> Attention Minus Plus Votos: 3 de 3
  • #2 Kracter
    Kracter lunes, 19 de marzo de 2012, 20:04

    Gracias Mario, tengo en mente esto desde que empezaste a trabajar con App inventor y el modulo Bluetooth, compre el modulo pero me falta el movil con android, que ya estoy buscando. Cuando lo tenga me pondre a practicar ya que lo queria implementar en un proyecto de led RGB en el que estoy metido, Saludos

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #3 <a href="../../foro/member.php?u=60038" target="_self">editronikx</a>
    editronikx lunes, 19 de marzo de 2012, 21:56

    saludos

    buen proyecto,habia mirado un ejemplo en la web para implementarlo a mi proyecto cuando hice mi dimer electronico con appinventor y asm, pero no sabia como usar el canvas.
    http://www.neoteo.com/foro/f9/proyectos-de-android-modulos-rn41-y-modulos-arduino-2488/
    les dejo el link de un aplicativo similar al de Mario a diferencia que el mio es creado con lenguaje asembler, pero la idea es parecida.


    saludos...

    Responder >> Attention Minus Plus Votos: 2 de 2
  • #4 Armando Paredes
    Armando Paredes lunes, 19 de marzo de 2012, 23:47

    Orale y yo habia pensado comprarme el que NEC "inventó", mejor lo hago jejejeje

    http://es.engadget.com/2012/03/19/nec-desarrolla-una-bombilla-led-con-altavoces-que-podras-gestion/

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #5 <a href="../../foro/member.php?u=72684" target="_self">manu_isaac</a>
    manu_isaac martes, 20 de marzo de 2012, 23:40

    Hola Mario, me agradó este proyecto y desearía realizarlo, pero no encuentro ese pic ni el hardware amicus 18 para desarrollarlo. ¿Puedes sugerirme otro pic o hardware? el 18F877A se puede emplear.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #6 <a href="../../foro/member.php?u=72684" target="_self">manu_isaac</a>
    manu_isaac martes, 20 de marzo de 2012, 23:50

    Perdón, es el 16F877A, si se puede utilizar de la misma forma para este proycto.

    Saludos y muchas gracias.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #7 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario miércoles, 21 de marzo de 2012, 00:54

    #6
    Hola!
    Lo único que necesitas comprar es el PIC 18F25K20 para hacer este proyecto. El "software" de Amicus es gratis y está en la web:
    http://www.myamicus.co.uk/content.php
    Es gratis, pero es sólo para esa línea de PIC (K20, K22 y tal vez algún otro. Yo sólo uso el K20)
    Si deseas utilizar el 16F877 junto a la instrucción "HPWM" deberás programar en cualquier otro lenguaje BASIC, pero deberás adaptar el código (agregarle fuses) para que pueda funcionar.

    Hacerlo funcionar es posible, sólo tienes que adaptar el código (no en su escencia, sino en los complementos que necesita para ser útil en otro IDE) y encontrar CCP1 en el 16F877 (pin 17)

    Sal...
    Leer más

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #8 <a href="../../foro/member.php?u=77743" target="_self">xbenax</a>
    xbenax miércoles, 21 de marzo de 2012, 23:13

    Hola Mario, me puedes responder una duda respecto a un proyecto anterior que subiste? http://www.neoteo.com/construye-tus-propios-auriculares-inalambricos
    necesito ayuda en eso :S ya me compre todo y parece que gaste dinero al vicio u.u bueno espero que me puedas responder... gracias de antemano

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #9 Edilberto Lopez
    Edilberto Lopez viernes, 23 de marzo de 2012, 22:41

    Al ponerle un moc con un triac puedes sustituir el led y controlar la intensidad de un foco. O de un motor. Creo que me tendré que comprar un módulo para hacer algunas pruebas.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #10 Bombilla Led
    Bombilla Led lunes, 26 de marzo de 2012, 19:03

    La iluminación led, se utilice en el ámbito que se utilice, es la más económica y ecológica existente hoy en día.
    www.buyleds.es

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #11 <a href="../../foro/member.php?u=78312" target="_self">FcoLuna</a>
    FcoLuna jueves, 05 de abril de 2012, 15:33

    Excelente trabajo !, mis felicitaciones!!!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #12 <a href="../../foro/member.php?u=78681" target="_self">ojitos_mentirosos</a>
    ojitos_mentirosos miércoles, 18 de abril de 2012, 17:39

    Hola amigos, una duda.
    Que programador (USB) conectan a la entrada ICSP del circuito propuesto?

    O que es lo que hay entre el SOFTWARE y la entrada ICSP de este circuito?

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #13 <a href="../../foro/member.php?u=78681" target="_self">ojitos_mentirosos</a>
    ojitos_mentirosos miércoles, 18 de abril de 2012, 19:15

    Otra duda, en la foto de montaje hay mas capacitores que en el diagrama, puedes explicar los detalles?

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #14 <a href="../../foro/member.php?u=78784" target="_self">pepe123</a>
    pepe123 sábado, 21 de abril de 2012, 23:59

    la programacion en hardware es con el pickit 2, el software es el amicus 18.

    pregunto:

    ¿si no tengo el pickit 2 y solo tengo un programador o grabador generico( que solo sirve para cargar el archivo en hexa al pic) este dispositivo gravador soporta el PI18F2520 (SIN LA K), me servira este para cargarle el codigo en hexa al 18F25K20.

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #15 Chevo
    Chevo miércoles, 25 de abril de 2012, 03:54

    oye disculpa amigo estoy siguiendo tu proyecto,tengo todo y utilizo arduino para controlar el led mi duda es cuando corro la aplicacion en el cel que variables o nombres de variable recibe el arduino???

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #16 <a href="../../foro/member.php?u=78681" target="_self">ojitos_mentirosos</a>
    ojitos_mentirosos viernes, 27 de abril de 2012, 06:40

    #15 Que onda Chevo, pues por aqui no hay muchas respuestas.. entra a este foro para echarnos la mano ambos http://www.neoteo.com/foro/f29/amicus-18f25k20-software-libre-60-page-2/

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #17 Pablo Mecoli
    Pablo Mecoli miércoles, 12 de septiembre de 2012, 03:45

    Querido Mario, ¿como estas?. Quería contactarme con vos, por lo siguiente.
    Soy estudiante de Electrónica, y en una materia tengo que hacer un proyecto, y esto me gusto mucho, por lo cual, si no tenes problema, me gustaría hacerlo.
    Por otro lado, estoy teniendo problemas con AppAndroid, parece que ya no va mas, o no se que es lo que paso. Y migrar toda la programación a otro tipo de lenguaje, quizás sea muy complicado. ¿Que me recomendas?
    Quedo a tu disposición.
    Gracias!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #18 OMAR
    OMAR domingo, 23 de septiembre de 2012, 02:08

    tengo una duda si el sistema tambien lo puedo manejar con el rn41 por que ya cuento con el o solo se puede con el hc06

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #19 OMAR
    OMAR domingo, 23 de septiembre de 2012, 02:09

    puedo usar el rn41 o solo funciona con el hc06

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #20 clara
    clara sábado, 27 de octubre de 2012, 04:05

    Como hago para conseguir el microchip?? ayuda please soy de chile-antofagasta y para descargar el programa

    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