há alguns anos, [Frans-Willem] obtiveram alguns painéis de LED RGB. Os painéis de 32 × 16 são muitos leds, e dirigir todos esses painéis requer um hardware suficientemente poderoso. Ele tentou trabalhar com uma placa de desenvolvimento da FPGA, mas isso não tinha memória suficiente para cor de 24 bits. O microcontrolador du jour – A Ti Stellaris – não conseguiu muito mais de 16 bits de cor sem cintilação. Com um monte de LEDs, mas nenhuma maneira de levá-los, [Frans-Willem] colocaram os painéis em uma caixa em algum lugar, esperando o dia em que poderiam ser acostumados com sua capacidade máxima.
Neste dia, quando [Frans-Willem] foi apresentado à série STM32 de chips com o quadro de descoberta F1. Ao tentar encontrar alguns brinquedos eletrônicos para usar com esta placa, ele tropeçou nos painéis LED e deu-lhes um muito mais tentando. Os resultados são espetaculares, com 33 bits de cor, com animações transmitidas por um roteador sobre WiFi.
Os painéis em questão são painéis de Hub75 LED. Nos painéis 32 × 8, existem seis pinos de dados – dois cada para cada cor – quatro linhas selecionam pinos e três pinos de controle. A linha Select Pins selecione qual linha de pixels está ativa a qualquer momento. Ciclo através deles rápido o suficiente, e parece que eles estão todos de uma vez. Os pinos de controle funcionam praticamente como os pinos de controle de um registro de deslocamento, com os pinos de dados que preenchem a função evidente.
O código que realmente impulsiona os LEDs, tudo acontece em um STM32F4 com a ajuda de DMA e FSMC, ou o controlador de memória estática flexível encontrado no chip. Este periférico cuida das linhas de controle encontradas na memória, portanto, quando você alterna o estroboscópio de gravação, o chip irá despejar o que estiver nas linhas de dados para um determinado endereço na memória. É uma ótima maneira de cuidar de gerar um sinal de relógio.
Para enviar pixels para este driver de exibição, [Frans-Willem] está usando o sempre popular TP-Link WR703N. Ele originalmente planejou enviar todos os dados do pixel sobre a porta USB, mas havia muito sobrecarga, um USB 1.1 não é rápido o suficiente. Isso foi fixado usando o UART no roteador com um novo motorista e uma versão recompilada do OpenWRT.
Todo o software para replicar este projeto está disponível no GitHub, e há um ótimo vídeo mostrando o que o projeto concluído pode fazer. Você pode verificar isso abaixo.