Mostrando entradas con la etiqueta Proyectos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Proyectos. Mostrar todas las entradas
TOP

¿QUÉ ES UN LED WS2812B?


Definición

Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea).

Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB.

La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”.

Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad.

El WS2812B es el más moderno de esta familia de LED, que tambien se le denomina NeoPixel. 


PRECIO

Podemos encontrar conjuntos de WS2812B en una gran variedad de formaciones, incluidas tiras, paneles, y anillos.

Encontramos tiras de distintas longitudes, que van desde 1 a 5m. En cuanto a densidad, podemos encontrar tiras de 30, 60, y 144 LED por metro. Además, existen tiras no impermeables (IP30), y tiras impermeables (IP67), que envuelven un plástico protector el PCB. Los precios varían enormemente entre estos factores, desde unos 5€ por una tira LED de 1m IP30 de 30 LED/m, a 30€ por una tira de 5M IP67 de 60 LED/metro.

En cuanto a disposición en anillo, podemos encontrar anillos de 16 LED por 3€ y de 24 LED por 4€.

En paneles, encontraremos tanto paneles flexibles como no flexibles. Podemos encontrar paneles flexibles de 8x8 por 15€, 16x16 por 35€, de 8x32 por 50€.

¿CÓMO FUNCIONA UN WS2812B?

El funcionamiento de un WS2812b es realmente ingenioso. Cada LED dispone de un integrado que almacena 3 bytes (24 bits), que corresponden con los 3 colores del RGB. Cada pixel puede tener 256 niveles en 3 colores, lo que supone un total de 16.777.216 posibles colores.

Cuando un LED recibe un flujo de bytes, almacena los últimos bytes recibidos y trasmite los que contenía al siguiente LED. Finalmente, con una señal de “resetcode” cada LED muestra el último valor almacenado.

Esta genial idea permite hacer configuraciones de múltiples LED, en los que únicamente tenemos que comunicarnos con el primero de ellos y cada LED se actúa de transmisor de la secuencia a los LED posteriores. Además permite que podamos encadenar o dividir tiras de LED y cualquier fragmento seguirá funcionando porque todos los LED tienen exactamente el mismo comportamiento.

Cada vez que un punto trasmite al siguiente una señal, realiza una reconstrucción de forma que la distorsión y el ruido no se acumulan. Esto permite alimentar tiras de más de 5m sin necesidad de dispositivos adicionales.

La transmisión de 0 y 1 y resetcode se realiza mediante señales pulsadas temporizadas.

  • Un 0 se realiza por un pulso HIGH de 0,35 us, seguido de un periodo LOW de 0,9.
  • Un 1 se realiza por un pulso HIGH de 0,9us y LOW 0,35us.
  • El “resetcode” se manda como una señal LOW de 50us.
  • arduino-ws2812b-funcionamiento

    La frecuencia de funcionamiento es superior a 400Hz/s. Esto permite que se puedan animar más de 1024 puntos a una tasa refresco de 30fps.

    Para más información y detalles sobre su funcionamiento, os aconsejamos consultar el Datasheet del WS2182B.

    ESQUEMA MONTAJE

    El esquema eléctrico para conectar LED WS2812b es sencillo. Cada LED alimenta al siguiente, por lo cual solo tendremos que conectar con el primer elemento de la formación.

    Disponemos de 3 pines, 2 de alimentación (5V y GND) y entrada de datos (Din) para recibir los datos desde Arduino.

    arduino-ws2812b-esquema

    La alimentación de la tira LED tiene que realizarse desde una fuente de alimentación externa de 5V, dado que Arduino no dispone de potencia suficiente. La referencia GND será común.

    Cada LED WS2182b consume unos 60mA (0,3W), dando color blanco intenso (20mA por cada componente de color) Esto supone un consumo de 9W para 30 LED, y 18W para 60 LED, lo que es mucha potencia en una fuente de 5V.

    Afortundamante, no siempre vamos a iluminar todos los LED de forma simultánea con blanco a máxima intensidad. Dependiendo del programa y efectos que hagamos la potencia requerida será mucho menor.

    En casos de mucho consumo y gran número de LED también puede ser necesario alimentar por más de un punto a la vez (por ejemplo, cabeza y cola de la tira). De lo contrario, la caida de tensión hará que los últimos LED viren a rojo.

    Podéis emplear la fuente de 5V para alimentar el propio Arduino. Lo que no podéis es alimentar la tira desde la salida de 5V de Arduino.
    Recordar, la referencia GND siempre debe ser común. Podéis dañar un componente de no hacerlo.

    En cuanto al pin de señal, podemos emplear cualquiera de las salidas digitales de Arduino. Es necesario emplear una resistencia de 470 ohmios entre el pin digital y el pin de señal del WS2818b, o podéis dañar los primeros LED.

    También se aconseja instalar un condensador de al menos 1000 uF entre GND y 5V (aunque en los montajes que yo he probado nunca la he puesto y ha funcionado correctamente).

     

      EJEMPLOS DE CÓDIGO

      Podemos mandar la señal directamente controlando adecuadamente los timings necesarios. Sin embargo, lo normal es que empleemos una librería existente que se encargue de esta tarea por nosotros. Tenemos varias librerías disponibles para manejar WS2812b desde Arduino.

      Por un lado tenemos la librería NeoPixel de Adafruit que es sencilla de usar pero relativamente lenta, lo que la hace inadecuada para efectos complejos.

      Por otro lado, tenemos la librería FastLED, algo más difícil pero a cambio permite patrones mucho más complejos.

      Bajaros ambas bibliotecas y probar los ejemplos que vienen incluidas, para que decidáis que tipos de efectos necesitáis y con librería estáis más agusto.

      A partir de aquí, depende de vuestra imaginación y del efecto que queráis conseguir. No hay límites, y la cantidad de combinaciones es infinita. Animaros a programar vuestros propios efectos y animaciones.

      RESULTADO

      Aquí tenéis un vídeo mostrando el resultado de ejecutar alguno de los ejemplos.


 

-- Fin --

TOP

Audio (Mod. SOMO 14D)

Hoy empezamos una serie de tutoriales sobre audio y reconocimiento de voz con Arduino.
Realmente impresionante pero muy sencillo gracias a Arduino y los dos módulos que veremos.
Hoy os enseñaré como gracias al primero, el SOMO 14D podéis fácilmente añadir audio a vuestros proyectos.
Y así poder crear robots parlanchines, proyectos musicales, avisos acústicos e infinidad de posibilidades.

 

Hablemos primero del módulo con el que jugaremos hoy. Se trata de un circuito de la marca 4D Systems (famosa por sus pantallas) que nos permitirá reproducir archivos de audio con solo conectar un pequeño altavoz de 8 Ohmios. De hecho, es capaz de funcionar sin nada más. Lo alimentamos con un par de pilas de 1.5V y colocándole tres pulsadores y ya tenemos control total sobre la reproducción del audio. Incluso posee una salida de línea de audio que podemos utilizar en un amplificador externo u otro equipo.






También podemos controlarlo con 4 pines digitales desde nuestro Arduino, aunque si andamos escasos de pines podemos seguir controlándolo con solo dos pines.
Posee un zócalo para tarjetas MicroSD que es donde introduciremos nuestros archivos de audio para poder reproducirlos.

Veamos los pasos para poder controlar el modulo desde Arduino:

Montaje

Primero conectaremos el módulo a nuestro Arduino.



El módulo trabaja con alimentación de 3V por lo que es muy importante tener cuidado al montarlo ya que si lo alimentamos con los 5 voltios, lo dañaremos. Además como las entradas y salidas del SOMO14D son de 3V debemos colocar resistencias de 470 Ohmnios para adaptar los niveles a las salidas del Arduino que son como sabéis de 5v.
Podemos colocar lo cuatro pines que conectamos al Arduino en cualquiera de los pines digitales, siempre que cambiemos en el código la definición de los mismos.
El led nos permitira saber visualmente cuando si encuentra reproduciendo o no, estado que podemos consultar desde Arduino por el pin BUSY, que para eso está.

Conversion de archivos

Ahora convertiremos los archivos que queremos reproducir. Podéis saltaros este paso si vais a utilizar los sonidos de ejemplo que encontraréis en la sección de enlaces.
Primero prepararemos nuestros archivos de audio, renombrándolos ya que deben estar con el formato "0.mp3", "1.mp3"... "511.mp3" etc para que el sean reconocidos. Podremos utilizar un maximo de 512 archivos.
Una vez los tengamos listos utilizaremos el programa conversor (enlaces), con el que podemos convertir archivos  wav o mp3.

 


Para realizar la conversion, abrimos nuestra carpeta y seleccionamos el tipo de archivo de audio del que partimos. Seleccionamos la frecuencia de muestreo (la más alta soportada es 32000), y finalmente presionamos "Encode".
Nos creará los archivos para nuestro dispositivo, que tendrán extension ".ad4".

Preparacion de la MicroSD

Preparamos nuestra tarjeta formateándola en FAT16. La MicroSD no debe tener una capacidad superior a 2GB (no sería una MicroSD sino una MicroSDHC) ya que corremos el riesgo de que el módulo no la detecte. Una vez formateada copiamos nuestros archivos ".ad4" a la trajeta sin meterlos en ninguna carpeta, directamente en la raiz de la MicroSD. Por último introducimos la tarjeta en el módulo.

Código Arduino


Programamos nuestro Arduino con el código de ejemplo.
Una vez programado ya tendremos nuestro Arduino reproduciendo la primera (la "0.ad4") pista de audio.
El código contiene el protocolo para comunicarse con el SOMO14D en múltiples funciones. Este código que unicamente reproduce una pista de audio utiliza solo una linea para darle la orden de reproducción: PlaySong(0);





Read more »
TOP

Control con voz a traves del móvil

Después de tener el Arduino accesible a través de internet, se me ocurrió que podía llevar el ejemplo un poco más allá y crear una pequeña aplicación Android de prueba con la que poder actuar sobre el Arduino. Por otro lado, además de “replicar” en Android el control a través de internet se me ocurrió añadirle control por voz a la aplicación al más puro estilo IT crowd (Hello Computer!!).
En el código de la aplicación es bastante sencillo. Sin complicaciones, al ser una aplicación de prueba todo esta directamente incluido en la actividad principal de la aplicación. No voy a pegar el código aquí porque es un poco extenso, pero lo voy a alojar en aquí por si quieres tenerlo de referencia para iniciar tus proyectos o por simple curiosidad (Descarga Proyecto). A continuación puedes ver una captura de pantalla de la aplicación:

 


Read more »
TOP

Construir una pantalla gigante LED Pixel

 Para los amantes de LED por ahí, esta pantalla es una construcción relativamente simple en el sentido de Arduino, pero la construcción física podría ser un poco más de tiempo, y / o frustrante. La exhibición del pixel del LED utiliza hebras de LEDs para crear patrones vibrantes, texto o archivos GIF animados que incluso se puede enmarcar y colgar en tu pared. 
 

Read more »
TOP

Arpa láser

Arpa láser casera


Arpa láser casera

Si lo que quieres es ser el alma de la fiesta, lo que necesitas es una arpa láser como esta creada por Eric Goodchild. Este tipo de arpa se hizo famosa por el compositor francés Jean Michel Jarre a principio de los años noventa, pero el invento ya fué desarrollado y patentado por Bernard Szajner que hizo el primer diseño funcional en 1981. Este tipo de proyectos son muy visuales aunque el riesgo es grande ya que para tener una arpa visualmente potente, se necesita un láser de 500mW o más y se necesita protección tanto para los ojos, como guantes para las manos para no quedar frito con quemaduras de tercer grado...
En cualquier caso, os dejo el vídeo del arpa en pleno funconamiento y también un trozo de un vídeo de Jean Michel Jarre en pleno espectaculo que no tiene desperdicio.


Read more »