Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wyświetlacz reklamowy w oparciu o WS2812B

n0name10 17 Lip 2019 17:12 3006 7
  • 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.

    Wyświetlacz reklamowy w oparciu o WS2812B Wyświetlacz reklamowy w oparciu o WS2812B Wyświetlacz reklamowy w oparciu o WS2812B Wyświetlacz reklamowy w oparciu o WS2812B Wyświetlacz reklamowy w oparciu o WS2812B Wyświetlacz reklamowy w oparciu o WS2812B
    Wyświetlacz reklamowy w oparciu o WS2812B

    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:
    Wyświetlacz reklamowy w oparciu o WS2812B

    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.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    n0name10
    Poziom 17  
    Offline 
    n0name10 napisał 163 postów o ocenie 35, pomógł 28 razy. Mieszka w mieście Białystok. Jest z nami od 2010 roku.
  • PCBway
  • #2
    SylwekK
    Poziom 30  
    n0name10 napisał:
    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.

    Możesz coś więcej o "autorskim rozwiązaniu"?
  • PCBway
  • #3
    n0name10
    Poziom 17  
    Celem było stworzenie uniwersalnego narzędzia umożliwiającego wymianę danych pomiędzy mikro kontrolerem a komputerem. Ramka wzorowana na Modbus ASCII przesył danych zabezpieczony jest sumą kontrolną CRC. Program odczytuje tablicę dostępnych parametrów ( tablica odkreślana jest odgórnie programowo ). Dla każdego z parametrów przypisany jest programowo wskaźnik na konkretną zmienną. W ten sposób możliwy jest odczyt jak i zapis wybranej zmiennej. Proces zapisu poprzedzony jest autoryzacją. Dostęp do parametrów realizowany jest w przerwaniach, a więc nie blokuje to pracy programu głównego... to tak w skrócie.
  • #5
    Hydralisk
    Poziom 14  
    Jakich narzędzi użyłeś do stworzenia programu obsługi wyświetlacza na PC?
  • #6
    n0name10
    Poziom 17  
    Program napisany w C#, visual studio w wersji podstawowej.

    Dodano po 8 [minuty]:

    szeryf3 napisał:
    Fajny i ciekawy projekt. Pochwal się nim jak go zakończysz w 100%.
    dzięki, pewnie że się pochwalę ;)
  • #7
    andrzejlisek
    Poziom 28  
    Czy ten wyświetlacz zrobiłeś dla własnej satysfakcji, bo chciałeś zrobić coś samemu, czy dla konkretnego zapotrzebowania i ma on jakąś konkretną przewagę nad gotowymi rozwiązaniami (monitor LCD z AVR/Arduino/RasperryPi lub szyld LED)? Jeżeli to pierwsze, to nie mam więcej pytań (w takim przypadku rozważanie sensowności i opłacalności projektu jest nie na miejscu). Jeżeli to drugie, to jaką przewagę ma ten projekt nad gotowymi rozwiązaniami? Wyświetlacz wydaje się być wielkości monitora/telewizora LCD 17-21 cali, więc w tej roli mógłby być monitor LCD z komputerem lub Raspberry PI bądź jakiś AVR/ARM/Arduino, bądź też baner LED spotykany jako szyld.
  • #8
    n0name10
    Poziom 17  
    Projekt powstał dla własnej satysfakcji, dodatkowo pozwolił mi na zapoznanie się z STM. Docelowo wyświetlacz ma być użyty jako reklama w budynku firmy. Przewaga to przede wszystkim intensywność oraz barwa wyświetlanej informacji ( film niestety nie oddaje rzeczywistego efektu ). Pozdrawiam.