3dPrinted NightLamp – Sensorial Lamp

Cierto día me propusieron un proyecto nuevo: Se trataba de hacer que una lámpara RGB comprada en una conocida tienda de decoración que contenía burbujas y peces y cuyos leds variaban de color secuencialmente, brillasen de acorde al sonido ambiente. Como un ecualizador, si el sonido ambiente es muy fuerte, los leds deben brillar en rojo, y si no, variar el tono hasta el azul (ambiente calmado). Este tipo de lámparas sensoriales se usan en clínicas para tratamiento de chicos con trastornos del espectro autista (TEA) y cuestan una pasta… pero realmente el funcionamiento es muy sencillo. Precisamente me propusieron adaptar la lámpara para añadirla a la sala sensorial de una clínica especializada en TEA.

Una vez terminada la lámpara acorde a las specs de las expertas (y que, sirva de paso, les está ayudando mucho a los chicos, con lo que me alegro doblemente), pensé que podía fabricar otra con la impresora 3d y que sirviese para uso doméstico y cotidiano, por ejemplo, para luz nocturna para niños, y como lámpara sensorial para estimular a los pequeños.

Además, hace poco aprendí a hacer litofanías para otro proyecto y me pareció una buena idea para aplicar en este.

Y de eso trata el post, de fabricar una lámpara de noche con funcionalidad sensorial y personalizada a los gustos de los padres o los niños. Y está teniendo éxito, ya van dos hechas, una para un amigo y su peque y otra para el peque de la casa!

 

Descripción de funcionamiento

Como he expuesto antes, las características generales de esta lámpara son:

  • Impresa en 3D, con lo cual puede ser personalizada.
  • Dado que va a estar toda la noche encendida, debe tener conector de red eléctrica (6-12v).
  • Varios modos de funcionamiento:
    • Luz blanca fija de intensidad variable
    • Modo degradado de colores
    • Modo sensorial, que cambia de color con el sonido ambiental

Diseño 3d

Ahora hay muchas lámparas nocturnas que se pueden comprar por internet, de hecho, unas tienen textura de latex muy jugosa para los niños… No tengo capacidad de fabricar en latex, pero tengo la impresora 3D, y con ella se pueden hacer modelos personalizados.

La forma de la lámpara que se me ha ocurrido es la de una estrella hueca con una tira de leds RGB en el fondo. Si imprimimos la pieza en PLA blanco, dará un efecto muy colorido y bonito en la pieza. Además, podemos añadir a la parte frontal el efecto de litofanía: una superficie plana y blanca, al ser iluminada por una fuente de luz en la parte posterior, deja ver una foto, un nombre o lo que queráis. Si no tiene iluminación trasera, sólo se verá una lámina blanca. Es un efecto muy bonito que puede quedar chulo en una lámpara.

Por tanto, el primer paso es diseñar nuestra litofanía, es decir, el dibujo que se va a ver en la lámpara. Podéis usar el programa

Dibujos litofanía Alan

que queráis. Por ejemplo, yo usé PowerPoint para mezclar y juntar todos los dibujos. Lo ideal para este tipo de lámparas es que sean dibujos en blanco y negro, pero podéis usar incluso una foto. La estrella la he diseñado de un tamaño 15.5 cm x 16.5 cm, así que con el powerPoint podéis configurar una estrella de ese tamaño, para que luego sea más fácil pasárselo al siguiente paso, la construcción de la litofanía.

Una vez terminado el dibujo, tenemos que contruir la litofanía. Para ello, yo usé la url: https://3dp.rocks/lithophane/ que es gratuita. Le subís la imagen que habéis exportado con el tamaño correcto desde el PowerPoint o vuestro programa de diseño, y podéis usar la siguiente configuración que a mi me ha funcionado bastante bien:

Model settings

  • Maximum size: 125mm
  • Thickness: 2.7mm. Este es grosor máximo de PLA. Es un poco delgado pero deja pasar mucha luz, que es lo que buscamos.
  • Border: 0mm; no queremos borde.
  • Thinnest Layer: 0.6mm. Queda un tanto endeble, pero como he dicho antes, así pasa mucha luz, y los bordes os van a dar la integridad física de la lámpara.
  • Vectors per pixel: 2

Image settings:

  • Positive image: queremos que la imagen sea positiva, no negativa.
  • Mirror image on: esto es importante, para que físicamente no se vea nada en la lámpara, el relieve irá por el interior de la misma.
  • Flip image off.

Descargáis entonces el fichero STL que os hará de tapadera.

Una vez tenemos la litofanía, queda construir el resto de la lámpara y mezclarla con la litofanía. Yo he utilizado Tinkercad para esto. Importé el STL de la litofanía y lo añadí al resto de piezas de la lámpara.

El modelo en 3d podéis bajarlo y modificarlo de aquí:

  • https://www.thingiverse.com/thing:5023488
    https://www.tinkercad.com/things/a6CJ3mtZxsq-3dprintednightlamp

He puesto comentarios y una pieza especial para recortar la litofanía al tamaño de la tapadera. 

Una vez terminado, toca utilizar un slicer. Yo he usado el slic3r. La única cosa que tenéis que tener presente es utilizar un infill del 99% en lugar del 100% (referencia: https://itslitho.com/itslitho-blog/slicer-settings-for-lithophanes-tweaking-to-perfection/).

Una vez terminado, pasamos al diseño de la electrónica. Tened en cuenta que este modelo hay que mecanizarlo para pasar los cables e instalar el conector de alimentación, por ejemplo. De modo que un minitaladro o dremel viene de perlas para este paso.

 

Electrónica

En el mercado he visto lámparas con baterías. Lo cierto es que he diseñado la lámpara para estar conectado a la red eléctrica (6-12v) en lugar de tener baterías, porque en mi caso va a estar ubicada siempre en el mismo sitio (en la cuna, o en una cómoda).

Así que la lista de componentes que necesitaréis es la siguiente:

  • Arduino Nano
  • Resistencias varias (512 / 1kohm)
  • Regulador de voltaje 7805
  • Diodo rectificador (para protección contra polaridad invertida)
  • Interruptor (encender y apagar la lámpara: https://es.aliexpress.com/item/4001207529493.html)
  • Push switch (para cambiar de modo: https://es.aliexpress.com/item/32976458846.html)
  • 3 x Trim pots de 1k (para configurar el módulo) (https://www.ebay.es/itm/321743009406?hash=item4ae960b67e:g:rRkAAOSw~05ZvBkW)
  • 3 x 2N3904 que actuará de driver de los leds.
  • Módulo de micrófono (https://www.ebay.es/itm/113692249757?hash=item1a78960e9d:g:ayMAAOSwQXpckZKM)
  • Tira de leds RGB. Solo usaremos seis, pero yo había ya comprado una tira enorme para otros proyectos, de modo que la tenía en el taller. Por supuesto podéis comprar los leds por separado, yo opté por la tira por comodidad (https://es.aliexpress.com/item/1005002388285362.html)
  • Conector de alimentación hembra (https://es.aliexpress.com/item/32845114277.html)

El conexionado de los componentes es el siguiente:

Una cosa a tener en cuenta es que el módulo de audio tiene salida digital, es decir, uno de los componentes es un comparador analógico que compara la señal de salida del micro con la señal ajustable con un potenciómetro, de tal modo que cuando la señal de entrada supere cierto umbral configurable en el potenciómetro del módulo, se activará la salida. Nosotros no queremos eso, necesitamos la salida analógica, por lo que tenemos que extraer esa señal del módulo, y eso lo podéis hacer soldado un hilo de wrapping a la entrada al comparador (ver imagen de la izquierda). Ese hilo es el que irá conectado a la entrada analógica del micro (pin A0).

Nota: en el esquemático, he utilizado el pin de salida, recordad que eso no es cierto, hay que hacer la modificación al módulo.

Para hacer el montaje final, he utilizado una perfboard, dado que son elementos relativamente pequeños, y cable de wrapping AWG32 para hacer el interconexionado de los componentes. El resultado es el que sigue:

Un poco de teoría del sonido

Una señal de audio es una señal compleja, pero la podemos reducir a una suma de pulsos sencillos. De hecho, un tono simple nos puede servir de ejemplo. Podemos utilizar un generador de tonos online para generar un tono y hacer una captura con el osciloscopio de la señal y ver cómo es la salida del módulo.

Por tanto, usando esta web para generar el tono: https://www.szynalski.com/tone-generator/, genero un tono de 440Hz. Entonces, conecto el oscilo al canal 0, y tengo lo siguiente:

Como veis, la señal de salida tiene un offset de 2.5v positivos.

El cambio de color de la lámpara va a ser proporcional al valor pico a pico de la señal capturada por el micro. Para obtener dicho valor, lo que vamos a hacer es enventanar un cierto tiempo la señal, es decir, cada 10ms, buscar el mayor y menor valor de la señal y restar al valor máximo, el valor mínimo de la señal. Con esto, tenemos calculado el valor pico-pico de la señal de audio, y dependiendo de ese valor, modificaremos el valor del matiz, empezando por el color azul.

Nota: enventanar con una ventana de 10ms significa que la señal pura más baja que podemos capturar es: 1/0.010 = 100Hz…. Es prácticamente inaudible para el ser humano.

Un poco de teoría del color

Tanto el modo degradado como el sensorial juega con los colores de los leds. Los leds que vamos a usar son los básicos RGB y el modelo de color RGB (https://es.wikipedia.org/wiki/RGB). Excitando los leds adecuadamente, podemos construir cualquier color. Esto lo veis perfectamente en el siguiente gráfico:

Fijaos que los colores primarios corresponden con los leds, de esta forma:

  • Encendiendo el led rojo, tenemos el color rojo
  • Encendiendo el led verde, tenemos el color verde
  • Encendiendo el led azul, tenemos el color azul

Si encendemos dos leds a la vez tenemos los colores secundarios:

  • Amarillo: Encendemos rojo y verde
  • Cyan: encendiendo verde y azul
  • Magenta: encendiendo azul y rojo

Por tanto, para el modelo de color RGB, tenemos las tres coordenadas, una por color, y, con ellas, combinándolas, podemos conseguir cualquier color.

El problema de este modelo es que hacer un barrido de colores no es trivial: Cómo hacer un color rojo y luego pasar a algo un poco menos rojo y más verde? Recordad que el ojo humano no percibe los colores de forma lineal, hay colores más sensibles al ojo humano que otros.

Existen otros modelos de color. Muchos los podéis ver en aplicaciones de windows. A continuación tenéis un pantallazo del PowerPoint, fijaos que nos deja escoger el modelo: RGB o HSV:

En este caso, nos interesa mucho el modelo HSV (https://es.wikipedia.org/wiki/Modelo_de_color_HSV). Fijaos que el modelo HSV representa los colores en un círculo y ahora los parámetros son distintos, en lugar de RGB, son:

  • Valor (Value): Representa la distancia al negro.
  • Matiz (Hue): Representa el color en si, y se codifica como un ángulo (entre 0 y 360)
  • Saturación (Saturation): es la pureza del color

Fijaos entonces que variando el matiz, podemos variar cíclicamente el color.

Entonces, nos interesa mucho este modelo de color, pero nuestros leds funcionan con el modelo de color RGB… Cómo hacemos? Afortunadamente, existen fórmulas para pasar de HSV a RGB, si os interesan, las podéis ver en el enlace de arriba. Y existen librerías en C para transformar de una a otras (ojo, que he visto algunas con errores!!!).

Como conclusión: Utilizaremos el modelo de color HSV. Vamos a variar H para hacer las transformaciones de color.

Modo degradado

El modo degradado variará el color lentamente y de forma continua. No debería de haber saltos bruscos de color. Con lo cual, lo único que tenemos que hacer es tener una variable que codifique el Matiz, e irla incrementando y haciendo el módulo de 360.

Modo sensorial

El modo sensorial hará un degradado de colores en función de lo calmado que está el ambiente. Si el ambiente está tranquilo, el color estará en azul, y, a medida que se detecte más ruido, irá pasando por el degradado de abajo.

Como veis, hay dos parámetros que podemos ajustar:

  • Zero offset: representa el nivel de ruido de fondo. Para que lo entendáis: si hay algo de ruido de fondo, la lámpara no empezará en el azul puro. Entonces, he puesto un potenciómetro para poder subir ese umbral para eliminar ese ruido de fondo. Es como ajustar el cero.
  • MAX SPL: Representa el máximo valor de audio, es decir, con qué nivel de ruido está el rojo. También lo ajustaremos con otro potenciómetro.

A mayores, he puesto un tercer potenciómetro para ajustar el tiempo de respuesta, es decir, en el que se va a «recordar» el máximo valor, me explico: si estando en reposo, damos una palmada:

  • Si el tiempo de respuesta es rápido, cambiará a rojo y rápidamente volverá al azul.
  • Si el tiempo de respuesta es lento, cambiará a rojo, se mantendrá cierto tiempo y volverá al azul.

Creo que este parámetro es interesante dejarlo como parametrizable y ajustarlo a través de un potenciómetro.

Más características

He puesto un botón para cambiar de modo y para codificar funciones extra en función de la duración de la pulsación:

Como resumen:

  • En el modo white, si pulsamos entre medio y dos segundos, variaremos la intensidad del blanco. Esto es útil para bajarle intensidad y que no brille demasiado.
  • En modo sweep, si pulsamos entre medio y dos segundos, pararemos el modo en el color actual, o lo continuaremos desde el color actual.
  • Resto de modos, pulsación corta sirve para cambiar de modo al siguiente.

Código

He subido el código a un repo limpio de gitlab. Dicho código tiene licencia MIT.

Para acceder: https://gitlab.com/mcarpacho/moodlamp_public

 

Integración de la electrónica

Como he comentado arriba, necesitaréis de un minitaladro o una dremel para hacer los agujeros para pasar los cables y empotrar el conector de alimentación.

Para la sujección de la tapadera y la electrónica he utilizado la dremel para hacer el agujero, y tornillos para fijar la tapa. Como veis, el agujero de la alimentación lo he puesto en la parte de atrás.

Conclusión

El resultado lo podéis ver en este vídeo.

Como véis, es un proyecto chulo para regalar o para tener uno mismo. Nos es muy útil para tener una luz en la habitación y no tener que encender la del techo.

NightLamp Alan

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *