Iluminación ambiental barata para PC con Arduino


El Ambilight propuesto por  VladI4 es completamente casero y utiliza algunos LED RGB económicos con controladores integrados y una placa compatible Arduino. En cuanto al software, tenemos el famoso programa Ambibox ejecutándose en el PC (solo para Windows) y la biblioteca FastLED en Arduino, disponible esta ultima en Github.

El Ambilight es totalmente DIY y tiene la suficiente potencia como para que no se necesite otra luz. La pantalla se monta en la pared y queda al ras de la mesa (por lo que no hay Ambilight en la parte inferior).

Este proyecto de emulación de un Ambilight utiliza lo siguiente:

  • Software Ambibox para PC (gratis, pero sólo para Windows).
  • Arduino con un script simple que utiliza la biblioteca FastLed (más abajo) .
  • 50 LED RGB WS2811 tipo luces «árbol de Navidad».
  • Fuente de alimentación opcional 5v 3Amp (según el numero de leds).

¡Algunas precauciones!

Esta configuración es muy económica, pero solo funciona en un PC . No puedes usarla en tu reproductor de Blu-ray ni en tu televisor independiente ( para ello existen soluciones muy interesantes como vimos en este blog, como por ejemplo en esta entrada:configurar ambilight goove). Solo se necesita un software que se ejecute en segundo plano en tu PC.

No se admiten Linux ni MAC. El software Ambibox solo está disponible en Windows, pero para aplicaciones independientes existe una variante RPI, bastante cara.

Los LED funcionan bastante bien y sin retrasos notables en el escritorio y mientras se ven películas. Los juegos son otra historia. Si el juego se ejecuta en modo de pantalla completa, la mayoría de las veces el software no podrá capturar la imagen. ¡Pero el modo sin bordes funciona! (Ten en cuenta que se necesita una potencia de CPU adicional de aproximadamente el 5 %).

Los LED necesarios para este proyecto

Los LED necesarios para este proyecto

La parte más importante de este proyecto son los LED RGB con controladores individuales.

En realidad, no importa qué controlador LED RGB adquieras, siempre que estos sean compatibles con la biblioteca FastLed. Aquí tienes un enlace a los chips LED compatibles: https://github.com/FastLED/FastLED/wiki/Overview

Los LED más comunes son los WS2811 o WS2812, ya que son baratos y fáciles de usar. También se utilizan en este proyecto. Se venden en al menos dos tipos diferentes:

  • Como bombillas individuales (12 mm) tipo «arbol de Navidad» con un espaciado variable de alrededor de 10 cm como máximo. Generalmente se obtienen pares de 50, pero puede agregar o quitar LED como desee.
  • Como tiras de LED (con adhesivo en la parte posterior). Estas se compran por metro con un espaciado fijo. (30/60/o más LED por metro).También se pueden cortar para obtener las formas y tamaño que deseemos ( lógicamente conectando con cables todas en el sentido de la tira).

Con los LED de una sola bombilla, obtienes la ventaja de una colocación y un espaciado completamente libres, pero, por otro lado, tienes que encontrar una manera de agregarlos a tu monitor.

¿Cuantos leds necesito?

Basaremos esta decisión en el tamaño del monitor que estés usando. Por ejemplo se pueden usar 50 LEDs en un monitor de 27″ con una configuración de 4 lados. También se pueden usar los mismos LED en un monitor de 40″ con una configuración de 3 lados pero el espacio entre los LED sera de alrededor de 3 cm aproximadamente. Por lo tanto, si sabes que necesitas alrededor de 1 LED cada 3 cm, puedes calcular fácilmente cuántos LED necesitas para toda tu configuración.

Las tiras LED tienen una gran ventaja sobre la versión con una sola bombilla, ya que puedes pegarlas fácilmente en la parte posterior de tu monitor y listo. El problema con esto es que no puedes variar el espaciado o la posición de los LED. Además, el brillo de la versión con una sola bombilla en algunos casos parece mayor.

Si eliges la tira no necesitas construir un marco como se ve en la siguiente imagen por lo que con esta opción de usar tiras es mucho mas fácil y limpio el montaje como ya hemos visto en este blog.

El marco (para bombillas LED tipo árbol de navidad)

El marco (para bombillas LED)

Si elegimos la versión de bombillas LED, tenemos que construir algún tipo de marco. Se puede construir con láminas de aluminio o madera ( incluso cartón duro), un taladro y algunas bridas para cables. Cortaremos 3 tiras de la lámina, que sean un poco más pequeñas que las dimensiones del monitor. Luego dividimos toda la longitud por 50 para obtener el espacio correcto y comenzaremos a perforar los agujeros para las bridas para cables. Luego solo tenemos que cerrar bien los LED. Si el monitor está al ras del escritorio, no se necesitan ningún LED en la parte inferior de la pantalla pero si tu pantalla tiene un espacio considerable en la parte inferior, consideraría cubrir todo el contorno.

Otra forma más sencilla de añadir estos LED al monitor es simplemente utilizando clips adhesivos del tamaño adecuado, pero en ese caso tenemos el problema de las esquinas que si cortamos deberemos seguir las continuidad lineal de la tira completa .

El Arduino (nano)

Para controlar los LED, se necesita un controlador central. Para ello, se puede utilizar un clon barato de Arduino de China. No se necesita muchas funciones, así que supongo que cualquier Arduino servirá (or ejemplo es típico usar un Arduino UNO) . En el ejemplo se utiliza un Arduino nano, ya que son muy baratos y muy pequeños. En este caso, solo se necesita el conector USB, un solo pin digital y el pin de tierra.

¡El poder!

Para que los LED funcionen, necesitan algún tipo de alimentación. La mayoría de los chips LED utilizan 5 Voltios DC.

Es muy importante que conozcas las especificaciones de potencia exactas que necesitan tus LEDs. Los LED WS28XX utilizados en este ejemplo necesitan 0,3 W/unidad. Por lo tanto se necesita una fuente de 5 V y por cada led una corriente de 60 mA. Si tienes 50 LED, ¡eso suma 3 amperios!

Hay dos formas de obtener esta energía:

1. Puedes comprar un bloque de alimentación externa que tenga la potencia necesaria. Simplemente debes soldarlo a los LED y enchufarlo a la pared.

2. (NO lo recomiendo) Puedes obtener la alimentación de tu fuente de alimentación en tu ordenador. La mayoría de las fuentes de alimentación tienen una potencia nominal de alrededor de 20 A en la línea de 5 V, que rara vez se usa. Por lo tanto, puedes cortar fácilmente uno de estos adaptadores en Y y soldarlos a tus LED. El efecto positivo es que los LED se apagan automáticamente con la alimentación de la computadora y no necesitas comprar otro bloque.

Las conexiones

Las conexiones

Si está utilizando los LED WS2811/12, solo hay 3 conexiones que debe realizar.

  1. Debes conectar la alimentación de 5 V con la línea de 5 V correspondiente en los LED.
  2. Tienes que conectar la tierra de la fuente de alimentación con la tierra del Arduino y la tierra de los LED.
  3.  Tienes que conectar la línea de datos de los LED con un puerto digital del Arduino. No importa cuál sea, pero tienes que recordar el número. (¡No usé la resistencia que aparece en la imagen!)

El software Arduino

El software Arduino

Después de conectar todo, debes configurar el IDE de Arduino e instalar el controlador correspondiente.

Si no tienes experiencia con el uso de Arduino, debes comenzar aquí: https://www.arduino.cc/en/Guide/HomePage

Después de configurar todo, debes agregar la biblioteca http://fastled.io/ . Este es el script que se puede ejecutar en Arduino:

http://pastebin.com/53xsb97c

Algunas cosas que debería personalizar en dicho script:

  • NUM_LEDS, configure esto en su cantidad de LED
  • DATA_PIN, configúrelo con el PIN de Arduino que se utilize
  • SerialRate, define la velocidad de los LED (el máximo es 500000)

En «FastLED.addLeds» debes cambiar el controlador al que estás usando. ¡Estos controladores necesitan que se defina otro CLOCK_PIN! Consulta la documentación de fastLED para tu chipset.

El software Ambibox en Windows

¡El software Ambibox en Windows!

Obtenga la versión más reciente de Ambibox desde la página de inicio del desarrollador: http://www .ambibox .ru/en/index/php/Main_Page

Durante la instalación, se es posible que pida que elija otros componentes para instalar. No elegir ninguno. Si necesita alguno, puede instalarlo fácilmente más tarde.

Después de instalar Ambibox, debe ingresar al directorio de instalación y cambiar una línea en el siguiente archivo: C:\Program Files (x86)\AmbiBox\SerialPortConfig.ini Debe cambiar la velocidad en Baud del Adalight a 50000, el mismo número que se utilize en el script de Arduino. Guarde el archivo y reinicie Ambibox.

[Adalight] Tasa de Baud = 500000

Panel de configuración principal

Panel de configuración principal

¡Primero, debes presionar el botón «Más configuraciones» en la parte inferior derecha!

Los ajustes más importantes se encuentran en la parte inferior. El dispositivo para esta configuración debe ser «Adalight«. Puedes intentar encontrar el puerto COM correcto revisándolos y mirando el estado del dispositivo o simplemente abrir el administrador de dispositivos y buscarlo. El orden estándar de colores es RGB. Si tienes problemas con colores cambiados, puedes cambiarlo aquí. En el último campo, puedes seleccionar la cantidad de LED. Esta debe coincidir con la cantidad de LED que indicaste en el script. Otros ajustes:-

  • F7 es una tecla de acceso rápido para encender y apagar los LED
  • No es necesario usar perfiles diferentes, por eso es solo el predeterminado.
  • Con «Modo» puedes elegir lo que deberían hacer tus LED. Te recomiendo comenzar con un color estático para verificar que todos funcionen correctamente y muestren los colores correctos. Después de eso, puedes configurarlo para que haga capturas de pantalla y elegir «Windows 8» como método de captura. Esto funciona bastante bien en Windows 7 a 10.
  • Establezca el retraso al mínimo y los FPS al máximo para minimizar el retraso.

Áreas de captura

Áreas de captura

Si hace clic en el botón «Mostrar áreas de captura», aparecerán muchos cuadros con números en ellos. Probablemente estarán por toda la pantalla. Para que estas áreas de captura queden en la posición correcta, debes usar el botón «Zonas de captura del asistente«. En este menú, puedes configurar muchos parámetros diferentes. ¡Prueba un poco para que queden bien! La mayoría de las veces, necesitas más de un intento. Pero después de eso, deberías obtener algo que se parezca al de la iamgen (o completamente si estás usando los 4 lados). Después de eso, guardar la configuración y ocultar las áreas de captura.

Corrección de color

Corrección de color

Estas puedes son un ejemplo de configuraciones para corrección de color, brillo, etc. ¡Solo tienes que copiarlos o probar los tuyos propios! En youtube hay por cierto bastantes videos para ajustar nuestra configuración ( por ejemplo probar buscando «test ambilight» o frases similares).

¡Visualiza cualquier video o una película y prueba a jugar moviendo los controles deslizantes!

¡Eso es todo!

¡Felicitaciones, ahora puedes ver películas y jugar juegos con clase!

Créditos: https://www.instructables.com/Cheap-Ambilight-Tutorial-for-PC-Using-Arduino/

Sensores de incendio


Hay diferentes forma de detectar un posible incendio. Normalmente se suele utilizar una combinación de componentes diseñados para detectar condiciones asociadas con un incendio, como humo, calor, llamas o gases específicos. Los componentes principales suelen incluir:

  • Sensores de Gas :pueden ser sensores electroquímicos que detectan gases específicos, como monóxido de carbono (CO), que son comunes durante un incendio o sensores de semiconductores que detecta cambios en la conductividad eléctrica cuando está expuesto a gases inflamables o tóxicos.
  • Sensores de Humo: pueden ser en forma de cámara óptica o fotoeléctrica utilizando un haz de luz y un fotodetector para identificar partículas de humo en el aire o bien con sensores de ionización detectando partículas de humo a nivel molecular mediante la ionización del aire.
  • Sensores de Calor: se implementan mediante termistores o termopares (detectan cambios en la temperatura), sensores de temperatura fija (se activan cuando la temperatura alcanza un umbral predefinido) o sensores de velocidad de cambio de temperatura detectanod aumentos rápidos en la temperatura (detección por tasa de subida).
  • Sensores de Llama: pueden ser sensores de infrarrojo (IR): Detecta la radiación infrarroja emitida por las llamas, sensores ultravioleta (UV): Detectan la radiación ultravioleta emitida por llamas, especialmente en la etapa inicial del incendio y sensores duales UV/IR: Combina detección UV e IR para minimizar falsas alarmas.

Ejemplo práctico de sensor fotoeléctrico

Veamos ahora un posible sensor de detección de llama usando una placa Arduino usando un sensor fotoeléctrico compacto . El diseño del sensor usado es típico con un voltaje de funcionamiento de 3,3 V-5 V y con una salida de voltaje analógico para una detección precisa de la llama. Puede detectar llamas o luz dentro de una longitud de onda de 760 ~ 1100 nm, con un ángulo de detección de 60 grados . Este sensor cuenta con un potenciómetro azul para ajustar la sensibilidad. La salida del comparador cuenta con una fuerte capacidad de conducción de más de 15 mA para una detección de llama confiable, lo que garantiza una detección precisa de la llama.

El circuito como vemos es muy simple pues basta conectar la alimentación de 5v y la salida analógica al puerto 6 del Arduino (o compatible). Por simplificar al detectar humo solo conectaremos el led interno, pero obviamente podemos conectar , un buzzer piezoeléctrico, un relé , etc. a otro pin libre del Arduino.

El módulo detector de llama también como vemos incluye un comparador LM393 y un potenciómetro para ajustar la sensibilidad de detección.

Obviamente el componente más importante de este módulo es el sensor receptor de infrarrojos, que detecta una llama dado que el fuego produce energía en forma de calor y luz, cuyo espectro de luz va desde el ultravioleta hasta el infrarrojo. Este último se puede detectar con el sensor.

Conectaremos pues la señal de salida D0 del módulo al pin 6 de nuestro microcontrolador y la alimentación y con el siguiente código podemos probar su funcionamiento:

int flame_sensor = 6;
int  val;

void  setup() {
      pinMode(LED_BUILTIN, OUTPUT);
      pinMode(flame_sensor, INPUT);
      Serial.begin(9600);
}

void  loop() {
      val = digitalRead(flame_sensor);
      if(val==HIGH) {
            digitalWrite(LED_BUILTIN,HIGH);
            Serial.println("Fire not detected");   
      } else {
            digitalWrite(LED_BUILTIN,LOW);
            Serial.println("Fire detected !!!!");
      }
}


Ejemplo práctico de sensor de humo

Otro tipo de sensores , son los sensores de humo como por ejemplo el Sensor MQ-2. Este tipo de sensores sirven para la detección de GLP, i-butano, propano, metano, alcohol, hidrógeno y humo.
De modo similar a otros sensor tiene sensibilidad ajustable , su tensión de funcionamiento es de 5V DC y cuenta tanto con con una salida analógica (valor medido) y una salida digital (valor umbral).

Este sensor se utiliza para detectar humo y gases inflamables. Se pueden medir concentraciones de gas de 300 a 10000 ppm.

Los sensores de gas MQ utilizan un pequeño calentador con un sensor electroquímico que cambia su resistencia en función de la concentración de gas en el aire. El voltaje de alimentación del módulo debe ser de 5 VDC para que el calentador funcione correctamente, motivo por el cual en algunas placas compatibles con Arduino alimentadas con 3.3v usaremos un convertidor cc/cc para elevar la salida del 3.3 a 5V DC ( además se debe utilizar una fuente de alimentación externa para obtener suficiente energía).

En la imagen podemos ver los pines de conexión: alimentación de 5v DC (VCC y GND) y las dos salidas (analógica y digital).

Este sensor se utiliza en interiores a temperatura ambiente y como se ha comentado dispone de una salida digital y otra analógica que es la que utilizamos en el prototipo conectado al pin analógico A2. También en caso de usar algunas variante de Arduino deberemos usar un convertidor dc/dc para obtener los 5v DC para alimentar al sensor. Por simplificar al detectar humo sacamos un mensaje por la consola pero conectar también el led interno, y obviamente podemos conectar , un buzzer piezoeléctrico, un relé , etc. a otro pin libre del Arduino.

int smokeA2 = A2;
int sensorThres = 400;

void setup() {
      pinMode(smokeA2, INPUT);
      Serial.begin(9600);
}

void loop() {
      int analogSensor = analogRead(smokeA2);

      Serial.print("Pin A2: ");
      Serial.println(analogSensor);

      if (analogSensor > sensorThres) {
            Serial.println("Gas detected");
      } else {
            Serial.println("No gas detected");
      }
      delay(100);
}

Este módulo de gas MQ-2 es capaz de detectar GLP, i-butano, propano, metano, alcohol, hidrógeno y humo, lo que puede ser útil en la detección de fugas de gas y humo. Por cierto, si lo conectamos a un Arduino UNO el esquema se simplifica bastante como podemos ver a continuación.