Iluminación LED controlada con Android

68 Flares Twitter 53 Facebook 0 Google+ 15 Pin It Share 0 Email -- 68 Flares ×

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.

Iluminación LED controlada con 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.

Iluminación LED controlada con 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.

Iluminación LED controlada con Android

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.

Iluminación LED controlada con Android

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.

Iluminación LED controlada con Android

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.

Iluminación LED controlada con Android

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.

Iluminación LED controlada con Android

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í!


Avatar de Mario
Autor: Mario
  • mauro

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

  • Kracter

    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

  • Anónimo

    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…

  • Armando Paredes

    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/

  • Anónimo

    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.

  • Anónimo

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

    Saludos y muchas gracias.

    • Anónimo

      #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)

      Saludos!
      Mario

  • Anónimo

    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

  • Edilberto Lopez

    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.

  • Bombilla Led

    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.
    http://www.buyleds.es

  • Anónimo

    Excelente trabajo !, mis felicitaciones!!!

  • Anónimo

    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?

  • Anónimo

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

  • Anónimo

    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.

  • Chevo

    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???

  • Pablo Mecoli

    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!

  • OMAR

    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

  • OMAR

    puedo usar el rn41 o solo funciona con el hc06

  • clara

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

  • Joel

    UNa consulta ya arme todo pero en el android me pide permisos de bluetooh_admin con runtime error como corrijo eso?
    Aparte baje el blueterm pero no se que comandos mandar para que por lo menos prenda y apague porfavor respondeme.
    Saludos

  • Joel

    Ya lo solucione el que desee ayuda me escribe a give151@hotmail.com

  • Joel

    BUeno lo solucione el que desee ayuda me escribe a give151@hotmail.com
    ya que nadie respondió

  • jose luis

    hola tengo una duda, se puede programar con arduino, que diferencias abría en cuanto al funcionamiento. es mas eficiente que con amicus.
    y si quisiera ponerle unos 100 leds de alta luminocidad que cambios abría que hacer.
    gracias
    buena explicacion

  • jose luis

    hola, podrian subir una lista con todos los componentes utilizados y el PCB para realizar la conexion

    graicas mario, buen projecto
    saludos

  • Leandro

    Puedes subir el circuito impreso porfavor. Gracias

  • Selene

    Hola, muchas gracias por el proyecto lo pienso usar para mi proyecto de la escuela pero por favor algien me podria decir la medida de cada componente como las resistencias y lo demas por favor es que de verdad me urge si no no podre utilizar este proyecto. Y otra cosa mas alguien me recomienda una paguina para proyectos relaconados con la Domotica, les estare muy agradecida por favor ayuda

  • javier

    como instalo el programa de android en mi celular. Tengo un samsung galaxy y. muchas gracias

  • Jorge

    Hola Mario, antes de nada darte miles de enhorabuena por ser un fenómeno con la electrónica y con app inventor, eres la inspiración de muchos,pero ante app inventor me surge 2 problemas, el primero es… como puedo dejar trabajando la aplicación en segundo plano sin que cierre o pierda la comunicación con el bluetooth ? y el segundo problemas es… en caso de perder la comunicación por falta de batería, o fuera de rango con HC-06 como podría hacer que salte una alarma (sonido)en mi telefono? Gracias.

  • http://www.neoteo.com/miembro/pequeno_francisco/ Pequeño Francisco

    Muchassss gracias!!!!

    Me va a venir de lujo para implementarlo en el sistema de domotica con arduino que he desarrollado.
    Por cierto si quieres darle un vistazo lo tienes en.

    Proyecto domotica con arduino”

    Un saludo y otra vez gracias.

  • Valentina Martinez

    Hola
    me gustaría saber si el módulo bluetooht sirve para cualquier pic o depende de la referencia del pic se usa un bluetooth en especifico, en mi caso el pic 18f4550.
    Gracias

    • Ricardo

      Hola valentina, el módulo sirve para cualquier microcontrolador, no es exclusivo de la familia PIC, en mi caso lo utilize con un microcontrolador motorola y tuvo un buen funcionamiento

  • Pingback: Iluminación LED controlada con Android | Automatismos Mar del Plata