¿Cómo crear una pantalla LED RGB para Raspberry Pi?

Soy relativamente nuevo en hardware. Tengo algunos conceptos básicos y solo he hecho algunos circuitos básicos, pero realmente quiero saltar al fondo: así es como aprendo mejor. No estoy seguro de cuán simple es este proyecto, pero me gustan los buenos desafíos.

Básicamente, quiero construir una pantalla LED RGB, quizás 32 columnas de 18 LED (un total de 576 bombillas). Espero controlar la pantalla enviando datos a través de un programa que crearé en mi Raspberry Pi (512 MB, modelo B); en otras palabras, quiero controlar cada LED y no simplemente alimentarlo con una transmisión de video.

Necesito poder controlar cada LED individual y su brillo. Estoy considerando comprar los LED "RL5-RGB-C-2 Clear TriColor", donde cada bombilla tiene tres entradas para rojo, verde y azul, respectivamente.

He encontrado algunos tutoriales básicos sobre la creación de pantallas LED de un solo color, pero ninguno que me muestre cómo crear una pantalla RGB de este tamaño usando el GPIO (o cualquier otro bus, para el caso) en la Raspberry Pi, además de permitirme para controlar el brillo de cada LED.

Me pregunto por dónde debo empezar o si alguien podría indicarme la dirección correcta. También estoy abierto a sugerencias sobre el Arduino.

De hecho, una "transmisión de video" es una forma de controlar el color y el brillo de cada LED, por lo que no entiendo la distinción que intenta hacer.
Lo que quise decir es que no quiero proporcionar un archivo de película y/o usar una salida de video. Quiero encender manualmente cada LED usando un valor HEX que especifico, digamos, en un archivo de texto. La única razón es que no quiero tener que renderizar videos para que mi pantalla funcione.
@Sam Wilson Para mí, parece que en este momento no entiendes cómo funcionan las "capas" de control. Una vez que todo funciona bien en la capa física y puede controlar cada LED, esa capa no está interesada en lo que genera la señal. Ese es el trabajo del software en una capa superior. Por ejemplo, al controlador de la tarjeta de sonido no le importa si reproduce música usando VLC o Winamp o si está reproduciendo música desde un disco duro o una unidad flash.
Son más LED de los que puede PWM con el pi, por lo que necesitará controladores PWM externos que puede actualizar de forma secuencial o direccionable.
@AndrejaKo tal vez yo no. Es la capa física que no sé cómo construir/configurar. Estoy bien con el software y puedo averiguar cómo controlar cada LED una vez que tengo la configuración del hardware, es solo que no sé por dónde empezar con el hardware.
@ChrisStratton fuera de borda? ¿Significa eso esencialmente conectar múltiples sistemas juntos?
Probablemente sí, ya sea chips que pueden manejar una cantidad de LED cada uno, o incluso píxeles RGB individuales que pueden conectarse en cadena y alimentarse con un flujo de datos en serie para actualizarlos uno por uno. El punto clave es que la tasa de comando/actualización será más lenta que la frecuencia de conmutación de PWM, por lo que tiene que haber un inicio de intensidad y un temporizador de PWM controlado por él para cada LED, externo al pi.
@ChrisStratton Gracias por señalarlo. Ni siquiera estoy seguro de qué tipo de fichas tendría que conseguir. Tal vez este proyecto sea demasiado avanzado para un principiante como yo. Obviamente no quiero comprar una docena de Raspberry Pi para que funcione, y estoy seguro de que no tendría que hacerlo. Mi idea original es que tendría que tener varios chips que controlen quizás 16 o 32 LED cada uno, y luego quizás usar un multiplexor para dividir el flujo de bits cada 16/32 bytes (suponiendo que 1 LED requiere un byte de información para encender hacia arriba), si eso tiene sentido.
No necesita un multiplexor con chips realmente diseñados para esto porque obtienen una dirección efectiva de su posición en la cadena lógica. Sin embargo, manejan menos LED por chip porque están diseñados para LED de alta corriente. Podría intentar usar microcontroladores baratos como controladores personalizados, o incluso CPLD, pero este último requeriría más aprendizaje.
electronics.stackexchange.com/questions/18330/… parece relevante aquí. Además, busque en Google "WS2801": puede obtener tiras de LED direccionables preconstruidas con controladores, lo que sería útil si quisiera una matriz en una cuadrícula de ~ 5 cm.

Respuestas (2)

Si realmente desea controlar cada uno de los LED, prácticamente debe usar registros de desplazamiento, ya que hay 576 * 3 = 1728 pines para controlar y los pis no tienen más de 17 pines GPIO.

Supongamos que omitimos la parte del brillo (pero el enfoque es el mismo, necesitaría 1728 salidas PWM más para controlar el brillo), entonces la cantidad de registros de desplazamiento necesarios será 1728/8 = 216. Recomendaría usar los 74hc595 ya que son baratos y han dejado muchos recursos.

Entonces, la idea básica es alimentar el estado de cada color de cada LED de todos los LED como ENCENDIDO o APAGADO a todos los registros de desplazamiento (ya que no estamos tratando con el brillo ahora, solo tres bits para cada LED es suficiente) y luego enganche todos los registros para mostrar la imagen.

¿Alguna vez ha echado un vistazo a los LED WS2812? Esos son LED RGB con fuentes de corriente constante controladas por PWM de 8 bits incorporadas para cada color. Contienen un registro de desplazamiento de 24 bits y se pueden conectar en cadena. Debido a la fuente de corriente constante, se pueden suministrar con 3,5 a 5 V, y debido a los registros de desplazamiento en cadena, solo se necesita una única salida de un microcontrolador o Raspberry pi para registrar los datos RGB para todos los LED. Ah, y puedes ejecutar 1024 LED a 30 fps.

Solo hay que tener en cuenta que los datos RGB para todos los LED deben escribirse con un tiempo ajustado y sin interrupciones. No es un problema para un microcontrolador, pero el pi es una computadora con interrupciones, etc. Pero supongo que hay bibliotecas para esos LED.