domingo, 5 de octubre de 2014

Luces LED controladas con Arduino y Android

El objeto de este proyecto es instalar una luminaria LED en una vitrina que pueda ser controlada desde un dispositivo Android.






Habilidades necesarias

Soldar

He intentado que el proyecto se pudiera realizar sin soldar, pero es inevitable para usar los LEDs COB. Si necesitas aprender hay un curso en español para aprender a soldar, en forma de cómic, que ha tenido mucho éxito.

Cargar un programa en Arduino

Si necesitas aprender puedes empezar con la guía de iniciación (en inglés).


Lista de la compra

  • 1 Arduino Nano                           3,50 €
  • 1 Módulo Bluetooth HC-06                 4,00 € 
  • 1 Módulo de relé 5V                      1,20 €
  • 2 LEDs COB redondos 3W                   2,00 €
  • 1 Fuente de corriente DC12-32V 300mA     4,25 €
  • 1 Enchufe USB                            1,05 €
  • 1 Cable USB 2.0 macho a a mini-B         1,25 €
  • 1 Placa protoboard mini (170 contactos)  1,05 €
  • 65 Cables 10cm macho-macho               4,75 €
Total 23,05 €

En esta lista no he incluido las herramientas, ni el cable de alimentación a la red eléctrica. Lo más caro es comprar los 65 cables macho-macho, pero hay que tener en cuenta que solo necesitamos cinco, pero es que no he encontrado un vendedor en eBay que los venda sueltos.

Hay que tener en cuenta que los precios pueden variar, sobre todo en función del cambio dolar-euro.


Arduino Nano

Los clones de Arduino Nano se venden muy baratos actualmente. Se puede encontrar con o sin los pines soldados. Para nuestro proyecto mejor comprarlo con los pines ya soldados. 

Búsqueda en EBay





Modulo Bluetooth HC-06

Los módulos Bluetooth más comunes son el HC-05 y el HC-06, solo se diferencian por el firmware. El HC-05 puede hacer tanto de maestro como de esclavo. El HC-06 únicamente hace de esclavo. La manera de averiguar que módulo se tiene es comprobar como se identifica, si al explorar dispositivos Bluetooth se presenta como "HC-05" es un HC-05, si se presenta como "linvor" es un HC-06.

A la hora de comprarlo hay que elegir uno que venga montado en una placa madre, ya que tiene unos pines para poder insertarlo en la protoboard.

Búsqueda en EBay

Modulo de relé 5V

Tiene que ser de 5V porque es la tensión que el Arduino le proporcionará. También debería poder manejar la tensión de nuestra red eléctrica (en España 230V), por el amperaje no debería haber problema ya que va a ser muy pequeño. Para el proyecto solo es necesario que tenga un relé. Yo he comprado uno con dos relés porque me podría ser útil para otro proyecto.

LEDs COB redondos 3W

Los LED COB (Chip On Board) son más eficientes y disipan mejor el calor que los LED SMD.

Nos hemos de fijar en dos características: la caída de tensión (forward voltage) y la corriente directa (DC forward current). En función de estas características hemos de elegir la fuente de corriente. Los que he usado tiene una caída de tensión de entre 9V y 12V, mientras que la corriente directa es de 300mA. La potencia se calcula como P = V·I, que nos da una potencia de entre 2,7W y 3,6W, que, redondeando, decimos que son 3W.

Búsqueda en EBay

Fuente de corriente DC12-32V 300mA

Normalmente se suelen usar más las fuentes de tensión que las de corriente, pero para alimentar LED's es más indicado hacerlo con fuentes de corriente. Las fuentes de tensión proporcionan una tensión fija, mientras que las de corriente proporcionan una corriente fija. Para cumplir con la ley de Ohm, las de tensión varían la corriente según la carga, mientras que las de corriente varían la tensión según la carga.

Hay que elegir una fuente que proporcione la corriente indicada en las características de los LEDs, es decir 300mA (para un montaje en serie). Además hemos de fijarnos en los rangos de tensión. Como la caída de tensión de los LEDs es de entre 9V y 12V, entonces la caída de tensión al conectarlos en seria será de entre 18V y 24V. He elegido una fuente con un rango de entre 12V y 32V con la que se cumplirán los requisitos. Si los rangos de tensión de la fuente fueran incorrectos lo que sucedería es que la corriente no sería de 300mA.


Búsqueda en EBay


Enchufe USB y Cable USB 2.0 macho a a mini-B

Esta es la manera más barata que he encontrado de alimentar el Arduino Nano.

Búsqueda en EBay
Búsqueda en EBay

Placa protoboard mini (170 contactos)

Con esta placa nos evitaremos tener que realizar soldaduras. Suele salir más barato si, en vez de comprar una, se compra un pack de varias.

Búsqueda en EBay


65 Cables 10cm macho-macho

En realidad solo necesitamos 5, pero no los venden sueltos.

Búsqueda en EBay


Manos a la obra

1. Carga del programa en el Arduino Nano

Este es el programa que se ha de cargar:


 #include <SoftwareSerial.h>
#define RELAY_0_PIN 13
#define MAX_COMMAND_LENGTH 40

String command;
char inChar; // caracter leido
byte index = 0; // indice para almacenar caracter leido

SoftwareSerial mySerial(12, 11); // RX, TX
String relay_0_on = "0 1";
String relay_0_off = "0 0";

void setup()  
{
  Serial.begin(57600);
  Serial.println("Arduino listo");

  // ajustar velocidad del puerto serie por Software
  mySerial.begin(9600);
  mySerial.println("Conexion bluetooth lista");
  pinMode(RELAY_0_PIN, OUTPUT);
}

void loop() // bucle infinito
{
  if (mySerial.available()) {
    delay(100);
    inChar = mySerial.read();
    Serial.write(inChar);
    
    if (inChar == '\n' || inChar == '\r' || inChar == '#') {
      processCommand();
      command = "";
    } else {
      mySerial.write(inChar);
      command = command + inChar;
    }
  }
  if (Serial.available())
    mySerial.write(Serial.read());
}

void processCommand(){
  command.toLowerCase();
  char charBuf[50];
  command.toCharArray(charBuf, 50);
  Serial.write("\nComando: ");
  Serial.print(command);
  Serial.write(charBuf);
  if (command.equals(relay_0_on)) {
    digitalWrite(RELAY_0_PIN, HIGH);
    Serial.write("\nActivando rele 0\n");
    mySerial.write("OK");
    return;
  }
  if (command == relay_0_off) {
    digitalWrite(RELAY_0_PIN, LOW);
    Serial.write("\nDesactivando rele 0\n");
    mySerial.write("OK");
    return;
  }
  
    
  Serial.write("\nComando desconocido\n");
}

2. Conectar Arduino y el módulo Bluetooth


Conectamos el Arduino y el Bluetooth en la protoboard. En el lado del módulo Bluetooth dejamos cuatro filas libres, en el otro solo una.

El pin RXD del Bluetooth queda conectado con el pin D11 del Arduino, el pin TXD del Bluetooth queda conectado con el pin D12 del Arduino.

Para conectar la masa empleamos un cable que vaya de GND del Bluetooth a GND de Arduino.
Conexión de masa

Hemos dejado sin conectar la alimentación del Bluetooth (VCC), lo haremos en el siguiente paso.


3. Conectar el módulo de relé y fuente de corriente

Conexión Arduino con módulo de relé
Conectamos la salida de 5V del Arduino a la alimentación del módulo de relé (VDD), también conectamos la alimentación del Bluetooth al módulo de relé (VCC) a la alimentación del módulo de relé (VDD), de esta manera, Arduino alimenta con 5V a los dos módulos.  GND de Arduino GND del módulo de relé y D13 de Arduino a IN del módulo de relé.
Conexión de la fuente y el módulo de relé
Para conectar la fuente de corriente con el módulo de relé conectamos la entrada de alterna (cables azules, indicados como L y N) de la siguiente manera: uno va a una conexión lateral de un relé, mientras que el otro va a la toma de electricidad domestica (seguramente 230V).

El cable de la toma eléctrica que todavía no hemos conectado va a la conexión central del relé.

3. Conectar LEDs y fuente de corriente

Vista interior
Para conectar los LEDs necesitamos soldar a ellos unos cables. Para fijar los LEDs en el mueble hay que hacer dos agujeros por cada LED, uno para anclarlo y otro para pasar el cable. La manera que he encontrado para fijar el LED ha sido por medio de un alambre fino, como puede verse en las fotos. El alambre cuelga de un tornillo.

La conexión de los LEDs con la fuente de corriente se tiene que realizar en serie, para ello me he ayudado de unas clemas.

Conexión en serie de los LEDs
Vista exterior

4. Control desde Android

Para poder controlar desde Android el sistema de luces he usado una app llamada BlueSPP. La gracia de esta app  es que permite configurar botones con las cadenas de texto que se enviaran por Bluetooth.

No voy a extenderme mucho en como configurar esta app. Recordar que es necesario emparejar los dispositivos Bluetooth antes de poder usarlos, para ello hemos de tener en cuenta que nuestro dispositivo se presentará con el nombre de linvor.

Los botones se configuran manteniendo la pulsación. Para encender la luz la cadena debe ser "0 1#" (¡las comillas no hay que ponerlas!), mientras que para apagar la cadena es "0 0#".

Funcionando

El montaje final, encima del mueble, queda así:


He usado una caja de bombones para proteger del polvo.

En el siguiente vídeo se puede ver todo el sistema funcionado:



Con un medidor he comprobado el consumo. En stand-by indica 0W y encendido 8W.  La diferencia entre el consumo de 6W de los LEDs y los 8W medidos es debido a que las fuentes de alimentación nunca son 100% eficientes, en este caso la eficiencia sería del 75%, lo cual es bastante aceptable.

0W en stand-by
8W al encender











El coste de tener esta luz encendida 4 horas al día durante todo el año supondría un coste anual de alrededor de 1,5€. El que, por encontrarlo barato, piense tenerlo encendida las 24 horas del día decirle que los LEDs pierden eficiencia a medida que acumulan horas de funcionamiento, con el resultado de que cada vez brillaran con menos intensidad. Es por ello que el principal motivo de apagarlos, cuando no se necesiten, es el de no acumular demasiadas hora de funcionamiento.

Para cualquier duda sobre este proyecto no dudéis en preguntar.

7 comentarios:

  1. que funcion cumple el relé? y porque no utilizaste solamente el driver led para alimentar el arduino y la red led? saludos. buen proyecto.

    ResponderEliminar
    Respuestas
    1. Hola Manuel,

      El relé permite controlar la tensión domestica (230V en mi caso) con el Arduino que trabaja a 5V.

      El "driver led" es una fuente de corriente y Arduino necesita de una fuente de tensión.

      Eliminar
    2. gracias por responder a mi duda.
      sabes quiero iniciar un proyecto de iluminación. Hasta ahora hice una fuente de iluminacion que me entrega 5V a 30A, con eso planeo alimentar los leds y, por supuesto, un arduino uno r3.
      no se nada sobre electronica o electricidad por ende quisiera saber si me puedes orientar, te lo agradeceria muchisimo. saludos. manchesterunited153@hotmail.cl

      Eliminar
    3. Primero define que funcionalidad pretendes, luego busca proyectos que tengan una funcionalidad parecida. Entonces puedes concretar que cambios necesitas para tus necesidades.

      Eliminar
  2. Buenas, tengo una duda. si tuviera que hacer esto para 100 luminarias, ¿qué cambios serían necesario?, me imagino que necesitaría una fuente de energía más grande, mayor cantidad de materiales pero no me ubico bien, ¿me podrías ayudar?

    ResponderEliminar
    Respuestas
    1. Fíjate en como justifico la elección de la fuente de corriente. La clave es que la fuente soporte la caída de tensión provocada por uno o varios LEDs. Se puede usar una grande o varias pequeñas.

      Eliminar