Witam, chciałbym przedstawić konstrukcje wyświetlacza 32x48 realizowanego w wolnych chwilach. Na samym początku co nieco o urządzeniu od strony konstrukcyjnej. Wyświetlacz zbudowany jest z 6 matryc o wymiarach 16x16 złożonych z diód adresowanych WS2812B. Matryce nabyte zostały na znanym portalu aukcyjnym i przywędrowały do mnie z chin. Matryce połączone są szeregowo po dwie i tworzą kolumny o wymiarach 16x32. Jako podstawe konstrukcji wykorzystano dosyć lekki materiał w postaci spienionego PCV o grubości 5mm. Wszystkie z matryc przytwierdzone zostały do podstawy o wymiarach 500x360 mm za pomocą kleju do plastiku odpornego na wysoką temperaturę. Ramka wyświetlacza zbudowana została z ozdobnych ceowników aluminiowych nabytych w okolicznym sklepie z materiałami budowlanymi. Do zespolenia ramki z podstawą użyto nitów zrywalnych. Osłonę frontową wykonano z przyciemnianej pleksy o grubości 3mm ( pleksa umieszczona została w ramce na odpowiednio wykonanych wspornikach i jest w pełni rozbieralna ). Na tylnej ściance wyświetlacza umieszczono wydajne zasilacze około 50W/5V ( po jednym na każdą z kolumn ). Wszelkie panele, narożniki, kątowniki, osłony wydrukowane zostały za pomocą drukarki 3D. Gniazdo USB typu B do komunikacji z wyświetlaczem wyprowadzone zostało na zewnątrz. Głównym problemem było nadmierne grzanie się wyświetlacza przy maksymalnym wysterowaniu poszczególnych pikseli - rozwiązano to poprzez zastosowanie wymuszonego obiegu powietrza oraz redukcje maksymalnego wysterowania wyświetlacza.
Teraz co nieco od strony elektronicznej i programowej. Jako serce układu wykorzystano nucleo-64 STM32F446 ( akurat takie miałem pod ręką ), aby odciążyć procesor i uzyskać dosyć krótki czas odświeżania wyświetlacza wykorzystano peryferium DMA ( 3 kanały ). Cały wyświetlacz działa jak ogromny rejestr przesuwny do którego ładowane są informacje o kolorach poszczególnych pikseli RGB ( 0-255) za pomocą protokołu WS2812B ( nie będe tutaj przytaczał szczegółów zainteresowanych odsyłam do noty katalogowej ). Program wygenerowany został w oparciu o program CUBE MX i bibliotekę HAL. Wyświetlacz posiada główny bufor ramki o rozmiarze równym liczbie pikseli wyświetlacza. Bufor ramki dzielony jest na 3 segmenty ( po jednym na każdą z kolumn ) i adaptowany do sposobu połączeń każdej z kolumn ( operacje odbicia lustrzanego, przesunięcia itp. ). Do generacji czcionki wykorzystano gotową darmową bibliotekę uGUI. Głównym sposobem prezentacji informacji jest przewijający się napis od lewej do prawej. Przewijanie zostało zrealizowane poprzez operację przesunięcia każdego z wierszy ( w buforze poza obszarem widzialnym następuję ładowanie następujących po sobie pikseli czcionki). Wszelkie informacje o treści wyświetlanych napisów oraz ich kolorach przechowywane są w pamięci nieulotnej FLASH. Dodatkowo wyświetlacz posiada korekcję gamma w celu polepszenia jakości obrazu. Po więcej szczegółów zapraszam na priv.
Niestety film nie oddaje barwy rzeczywistych kolorów.
Komunikacja pomiędzy użytkownikiem a wyświetlaczem zachodzi poprzez uniwersalny protokół do wymiany danych ( autorskie rozwiązanie ). Wykorzystywany do tego celu jest konwerter USB/UART wbudowany na płytce NUCLEO. Aktualnie program umożliwia użytkownikowi modyfikacje czterech napisów oraz ich podstawowych właściwości ( kolor czcionki, kolor tła oraz rozmiar ). Podkreślam, iż nie jest to wersja finalna i strona programowa wymaga jeszcze dopieszczenia. Poniżej zrzut z programu do obsługi wyświetlacza:
Planowane modyfikacje:
- Obsługa polskich znaków;
- Możliwość wgrywania krótkich animacji oraz obrazów z poziomu uniwersalnego programu do wymiany danych ( aktualnie realizowane to jest poprzez wklejanie macierzy obrazu do składni programu );
- Większa ilość efektów wyświetlanych napisów;
- Wykorzystanie ESP8266 do bezprzewodowej komunikacji z wyświetlaczem.
Pozdrawiam.







Teraz co nieco od strony elektronicznej i programowej. Jako serce układu wykorzystano nucleo-64 STM32F446 ( akurat takie miałem pod ręką ), aby odciążyć procesor i uzyskać dosyć krótki czas odświeżania wyświetlacza wykorzystano peryferium DMA ( 3 kanały ). Cały wyświetlacz działa jak ogromny rejestr przesuwny do którego ładowane są informacje o kolorach poszczególnych pikseli RGB ( 0-255) za pomocą protokołu WS2812B ( nie będe tutaj przytaczał szczegółów zainteresowanych odsyłam do noty katalogowej ). Program wygenerowany został w oparciu o program CUBE MX i bibliotekę HAL. Wyświetlacz posiada główny bufor ramki o rozmiarze równym liczbie pikseli wyświetlacza. Bufor ramki dzielony jest na 3 segmenty ( po jednym na każdą z kolumn ) i adaptowany do sposobu połączeń każdej z kolumn ( operacje odbicia lustrzanego, przesunięcia itp. ). Do generacji czcionki wykorzystano gotową darmową bibliotekę uGUI. Głównym sposobem prezentacji informacji jest przewijający się napis od lewej do prawej. Przewijanie zostało zrealizowane poprzez operację przesunięcia każdego z wierszy ( w buforze poza obszarem widzialnym następuję ładowanie następujących po sobie pikseli czcionki). Wszelkie informacje o treści wyświetlanych napisów oraz ich kolorach przechowywane są w pamięci nieulotnej FLASH. Dodatkowo wyświetlacz posiada korekcję gamma w celu polepszenia jakości obrazu. Po więcej szczegółów zapraszam na priv.
Niestety film nie oddaje barwy rzeczywistych kolorów.
Komunikacja pomiędzy użytkownikiem a wyświetlaczem zachodzi poprzez uniwersalny protokół do wymiany danych ( autorskie rozwiązanie ). Wykorzystywany do tego celu jest konwerter USB/UART wbudowany na płytce NUCLEO. Aktualnie program umożliwia użytkownikowi modyfikacje czterech napisów oraz ich podstawowych właściwości ( kolor czcionki, kolor tła oraz rozmiar ). Podkreślam, iż nie jest to wersja finalna i strona programowa wymaga jeszcze dopieszczenia. Poniżej zrzut z programu do obsługi wyświetlacza:

Planowane modyfikacje:
- Obsługa polskich znaków;
- Możliwość wgrywania krótkich animacji oraz obrazów z poziomu uniwersalnego programu do wymiany danych ( aktualnie realizowane to jest poprzez wklejanie macierzy obrazu do składni programu );
- Większa ilość efektów wyświetlanych napisów;
- Wykorzystanie ESP8266 do bezprzewodowej komunikacji z wyświetlaczem.
Pozdrawiam.
Cool? Ranking DIY