wersja mobilna | kontakt z nami

Budowa projektora DLP z użyciem Raspberry Pi 3 oraz modułu TI LightCrafter Display 2000

Numer: Wrzesień/2018

Już od dobrych kilkunastu lat na rynku komponentów elektronicznych mamy do czynienia z rewolucją w obszarze układów mikroelektromechanicznych (MEMS). Układy te, jeszcze kilka lat temu znane wyłącznie z zastosowań w mikrofonach i czujnikach ciśnienia, dziś są niemal nieodłącznym elementem większości urządzeń mobilnych. Badania prowadzone nad układami MEMS (pod kątem ich miniaturyzacji, nowych obszarów zastosowań i obniżenia kosztów produkcji) wymusiły również rewolucję w obszarze układów MOEMS, czyli układów łączących zagadnienia mikrooptyki i MEMS. Jednym z najbardziej reprezentatywnych przykładów MOEMS-ów są projektory DLP oraz zastosowana w nich technologia sterowanej matrycy milionów mikroluster. To co do niedawna wydawało się tematyką rodem z filmów science fiction, dziś trafia pod strzechy i umożliwia zbudowanie własnego miniprojektora w domowym zaciszu.

Pobierz PDFMateriały dodatkowe

W artykule omówiono podłączenie i obsługę modułu projektora DLP LightCrafter Display 2000 produkcji Texas Instruments, do komputera jednopłytkowego Raspberry Pi 3. Moduł ten został pierwotnie zaprojektowany do łatwej współpracy z komputerami jednopłytkowymi BeagleBone. Niestety, pod kątem wydajności, zwłaszcza w aplikacjach multimedialnych, BeagleBone znacznie ustępuje konkurencyjnemu rozwiązaniu, jakim jest Raspberry Pi 3. Jak jednak zostanie to przedstawione w artykule, konfiguracja Raspberry Pi do pracy z modułem LightCrafter Display 2000 jest stosunkowo prosta a radość z samodzielnej budowy bezgłośnego i energooszczędnego projektora multimedialnego – bezcenna.

rys1Projektory DLP. Moduł DLP LightCrafter Display 2000

W świecie elektroniki użytkowej od lat obserwujemy toczące się wojny standardów i rozwiązań technologicznych, jak np. rozstrzygnięte już starcia formatów Blue-ray i HD-DVD czy technologii plazmowej i LCD. W segmencie projektorów multimedialnych klienci wciąż zadają pytanie – wybrać projektor LCD bazujący na panelach ciekłokrystalicznych, czy jednak zdecydować się na technologię mikroluster zastosowaną w projektorach DLP? Nie podejmując się tutaj żadnych prób rozstrzygnięcia tego sporu, warto podkreślić jedno – w świecie projektorów DLP niepodzielny prym wiedzie firma Texas Instruments, która jest autorem i właścicielem patentów z zakresu technologii DLP. Choć przywykło się mówić, że wszystkie wojny technologiczne wygrywa końcowy klient – otrzymujący tańsze i lepsze rozwiązanie – nie mniejsze zwycięstwo odnoszą również… konstruktorzy i programiści.

Firma Texas Instruments swoją przewagę rynkową próbuje wypracować nie tylko na poziomie czysto technicznym (projektory DLP to wyższy kontrast obrazu, głębokie czernie i niższy pobór mocy), ale również w wykorzystywanym modelu biznesowym – dostarczając konstruktorom i producentom urządzeń końcowych kompleksowy zestaw układów, zestawów deweloperskich i narzędzi do szybkiego i łatwego zaadaptowania technologi DLP w konstruowanych projektorach. Przykładem takich działań jest zestaw DLP LightCrafter Display 2000 (DLPDLCR2000EVM) – rysunek 1.

rys2Sercem każdego projektora DLP jest układ DMD (z ang. Digital Micromirror Device),  oparty na technologii MOEMS i będący sterowaną cyfrową tablicą tysięcy mikroluster (każde o powierzchni kilkunastu mikrometrów kwadratowych) odbijających lub rozpraszających padający na nie strumień świetlny. W zależności od konstrukcji projektora możemy wyróżnić urządzenia z pojedynczym układem DMD (wówczas światło odbite przepuszczane jest przez wirujący trójkolorowy dysk umożliwiający uzyskanie wielobarwnego obrazu) lub z wieloma matrycami mikroluster (każdy z trzech składowych kolorów RGB jest wyświetlany przez oddzielny układ DMD). Wadą pierwszego z rozwiązań jest efekt tęczy, natomiast drugiego wysoka cena. Układ DMD, filtry, soczewki oraz źródło światła stanowią część optyczną w blokowej budowie typowego projektora DLP. Uzupełnieniem toru optycznego jest część elektroniczna, w skład której zaliczamy układ kontrolera matrycy DMD, układ PMIC do zarządzania zasilaniem i sterowaniem diodami LED, pamięci EEPROM/Flash oraz w zależności od typu pracy projektora – wbudowany mikroprocesor lub układ interfejsowy (do konwersji sygnałów HDMI, VGA, …). Blokowy schemat typowego projektora DLP został przedstawiony na rysunku 2.

tab1W zależności od docelowego przeznaczenia produktu (rynek IoT, projektory mobilne do automatyki domowej, kino domowe, ...) firma Texas Instruments przygotowała szereg układów DMD różniących się m.in. rozmiarem matrycy a tym samym rozdzielczością wyświetlanego obrazu – od standardu nHD (układ DLP2000) poprzez WVGA (DLP2010 i DLP3000), 720p (DLP3010), WXGA (DLP4500) aż do rozdzielczości 1080p (DLP4710) i 4K. Dla każdej z matryc DMD przygotowano również kontroler matrycy oraz układ PMIC. Tak dobrane zestawy tworzą gotowe platformy do budowy własnych projektorów DLP. Co więcej, dla każdego z zestawów przygotowano również platformy referencyjne, ułatwiające pracę na wczesnym etapie prototypowania. Zbiorcze informacje o wybranych układach DMD oraz zalecanych dla nich kontrolerach i układach PMIC przedstawiono w tabeli 1.

rys3Jak pokazano to w tabeli 1, zestaw DLP LightCrafter Display 2000 (DLPDLCR2000EVM) został wyposażony w układ DLP2000 o rozdzielczości nHD (640×480), który jest rekomendowany do budowy najtańszych i najbardziej energooszczędnych projektorów mobilnych. Zestaw ten nie ma wbudowanych kontrolerów interfejsów HDMI, VGA czy MHL – na złącza szpilkowe w rozstawie kompatybilnym z komputerami BeagleBone wyprowadzony został komplet sygnałów interfejsu równoległego RGB (24-bitowy RGB wraz z sygnałami HSYNC, VSYNC, CLK oraz DE), linie I2C do komunikacji z kontrolerem DLPC2607 oraz linie sterujące pracą modułu – rysunek 3.

Raspberry Pi – interfejs DPI oraz schemat przyłączenia projektora

Wszystkie komputery Raspberry Pi zostały wyposażone w kontroler DPI (z ang. Display Parallel Interface) umożliwiający bezpośrednie podłączenie wyświetlaczy LCD/projektorów z interfejsem równoległym RGB, do wyprowadzeń GPIO. W zależności od wybranej konfiguracji, kontroler DPI umożliwia wysterowanie wyświetlaczy pracujących w formacie RGB888/RGB24 (po 8 bitów na kolor), RGB666 (po 6 bitów na kolor) oraz RGB565 (5 linii dla koloru czerwonego i niebieskiego oraz 6 linii dla koloru zielonego). Wszystkie sygnały kontrolera (sygnały R, G, B, HSYNC, VSYNC, CLK oraz DE) zostały wyprowadzone na 40-pinowe złącze rozszerzeń, po uprzedniej konfiguracji wyprowadzeń GPIO do pełnienia alternatywnej funkcji ALT2. Przypisanie poszczególnych linii interfejsu DPI do wyprowadzeń GPIO zostało przedstawione w tabeli 2.

tab2Ze względu na możliwość konfiguracji kontrolera do pracy w trybach RGB888, RGB666 oraz RGB565, poszczególne wyprowadzenia GPIO są mapowane do funkcji linii R[x], G[x] oraz B[x] zgodnie z informacjami z tabeli 3.

Czas przystąpić do konfigurowania komputera Raspberry Pi, którą rozpoczynamy od pobrania ze strony producenta ostatniej wersji dystrybucji Raspbian [1] (będącej modyfikacją Debiana dla komputerów Raspberry Pi) oraz wgrania obrazu systemu na kartę SD. Następnym krokiem jest konfiguracja wyprowadzeń GPIO do pełnienia alternatywnej funkcji ALT2, a więc funkcji przypisanej do kontrolera DPI. Konfiguracja ta zostanie przeprowadzona z wykorzystaniem pliku konfiguracyjnego config.txt – umieszczonego na partycji /boot w obrazie systemu – oraz predefiniowanych warstw opisu Device Tree (dostępnych również na partycji /boot w katalogu overlays). Warstwy opisu Device Tree ułatwiają organizację wsparcia dla wielu konfiguracji sprzętowych z wykorzystaniem tego samego jądra systemu. Listę przygotowanych przez producenta warstw wraz z ich opisem i listą przyjmowanych argumentów można znaleźć w pliku /boot/overlays/README.

tab3Wśród plików z rozszerzeniem *.dtbo (a więc skompilowanych warstw opisu Device Tree), w katalogu /boot/overlays możemy odszukać również pliki dpi18.dtbo oraz dpi24.dtbo, które zgodnie z zawartym w README opisem, konfigurują wyprowadzenia GPIO do pracy w trybie DPI z magistralą 18- lub 24-bitową. Jak możemy szybko przeliczyć, konfiguracja magistrali w trybie 24-bitowym pochłonie wszystkie 28 wyprowadzeń GPIO (24 linie RGB oraz cztery sygnały VSYNC, HSYNC, CLK i DE) – nie zostawiając tym samym możliwości komunikacji z kontrolerem DLPC2607 po magistrali I2C. W tym miejscu użytkownik może zdecydować się na wykorzystanie konwerterów sygnałów USB 1  I2C i pełnej 24-bitowej konfiguracji lub skonfigurować interfejs DPI do pracy w trybie 18-bitowym. Włączenie wybranej warstwy Device Tree jest realizowane poprzez umieszczenie w pliku /boot/config.txt wpisu:

tab4dtoverlay=<nazwa warstwy DTBO>

Dla omawianej konfiguracji 18-bitowej:

dtoverlay=dpi18

Podczas konfigurowania Device Tree należy upewnić się, że skonfigurowana warstwa nie koliduje z inną, uprzednio wykonaną konfiguracją sprzętu. W przypadku warstw dpi18 oraz dpi24 należy wyłączyć sprzętowe kontrolery magistral I2C oraz SPI (o ile zostały one uprzednio włączone):

dtparam=i2c_arm=off
dtparam=spi=off

lub

#dtparam=i2s=on
#dtparam=spi=on

Wiadomo już zatem, że linie interfejsu DPI kolidują z wyprowadzeniami sprzętowego kontrolera magistrali I2C. Aby jednak zachować możliwość konfiguracji projektora, na niewykorzystanych dotychczas wyprowadzeniach GPIO23 oraz GPIO24 włączymy programowy kontroler interfejsu I2C. Do tego celu wykorzystamy warstwę i2c-gpio, która konfiguruje wskazane wyprowadzenia do pracy w trybie linii SDA oraz SCL, obsługiwanych w sposób czysto programowy. Opcje konfiguracji warstwy i2c-gpio umieszczono w tabeli 4.

Zgodnie z informacjami przedstawionymi w tabeli 4, do pliku /boot/config.txt dopisujemy zatem kolejną linię konfiguracji:

dtoverlay=i2c-gpio,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2

Zanim przystąpimy do wykonania połączeń sprzętowych, niezbędnym etapem jest konfiguracja parametrów pracy kontrolera DPI. Korzystając z dokumentacji interfejsu DPI, udostępnionej pod adresem:

http://bit.ly/2MsgceG 
http://bit.ly/2Lk6qFO

tab5oraz opisującej konfigurację parametrów wideo, w pliku konfiguracyjnym /boot/config.txt umieszczamy wpisy:

enable_dpi_lcd=1
display_default_lcd=1

umożliwiające dołączenie zewnętrznego wyświetlacza do kontrolera DPI oraz wskazujące, że wyświetlacz ten jest domyślny dla systemu (w przeciwnym razie funkcję tę pełni ekran podłączony do interfejsu HDMI). Następnie, do parametrów dpi_group oraz dpi_mode przypisujemy odpowiednio wartości 2 i 87, co pozwoli nam na samodzielną konfigurację parametrów pracy wyświetlacza poprzez pole hdmi_timings (w innych przypadkach pola dpi_group oraz dpi_mode umożliwiają wybór predefiniowanych konfiguracji):

dpi_group=2
dpi_mode=87

Przedostatnim krokiem w edycji pliku
/boot/config.txt jest zatem określenie parametrów pracy wyświetlacza/projektora poprzez umieszczenie wpisu hdmi_timings, którego pełny format został przedstawiony w tabeli 5.

Jednym z najprostszych sposobów ustalenia prawidłowych wartości dla wpisu hdmi_timings – bez potrzeby żmudnego analizowania dokumentacji modułu projektora – jest wykorzystanie gotowego fragmentu opisu Device Tree dla komputera BeagleBone (który w oficjalnych obrazach systemu zawiera wsparcie dla zestawu DLP LightCrafter Display 2000). Fragment opisu Device Tree dotyczący projektora DLP został przedstawiony na listingu 1.

tab6Bazując na danych zawartych na listingu 1, w prosty sposób możemy uzupełnić plik
/boot/config.txt o wpis konfigurację hdmi_timings:

hdmi_timings=640 0 14 4 12 360 0 2 3 9 0 0 0 60 0 32000000 3

Ostatnim krokiem konfiguracji Raspberry Pi jest określenie trybu pracy interfejsu DPI – tryb pracy RGB565/RGB666/RGB888, włączenie/wyłączenie sygnałów polaryzacji pionowej i poziomej, ustalenie polaryzacji sygnałów HSYNC/VSYNC, itd. Konfiguracja ta jest realizowana poprzez zapis do parametru dpi_output_format wartości liczbowej, wyliczonej na podstawie konfiguracji poszczególnych pól bitowych, jak przedstawiono w tabeli 6.

Na podstawie tabeli 6, do pliku /boot/config.txt dopisano konfigurację parametru dpi_output_format, przypisując mu wyliczoną wartość 458773:

dpi_output_format=458773

Finalna postać pliku /boot/config.txt została przedstawiona na listingu 2. Po zakończonej konfiguracji programowej można przystąpić do wykonania połączeń sprzętowych. Na bazie informacji zawartych na rysunku 3 oraz w tabeli 3 (dla trybu pracy RGB666), wykonujemy zestaw połączeń w sposób pokazany na rysunku 4.

Po włączeniu zasilania moduł projektora wyświetli wyłącznie domyślny ekran startowy (obraz ten może zostać nadpisany grafiką zdefiniowaną przez użytkownika). Aby wyświetlić obraz generowany przez komputer Raspberry Pi, należy nawiązać za pomocą magistrali I2C komunikację z układem kontrolera DLPC2601, a następnie do rejestru 0x0B (rejestr Input Source Selection) wpisać wartość 0, która jako źródło sygnału wybiera interfejs równoległy RGB. Dostępność kontrolera DLPC2601 (o adresie sprzętowym 0x1B) na magistrali I2C możemy sprawdzić poprzez wykonanie skanowania za pomocą narzędzia i2cdetect, np.:

rys4~# i2cdetect -y 0

       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- 1b -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Wybór źródła sygnału i ustawienie rozdzielczości wejściowej:

i2cset -y 0 0x1b 0x0b 0x00 0x00 0x00 0x00 i
i2cset -y 0 0x1b 0x0c 0x00 0x00 0x00 0x07 i

Powyższe komendy można umieścić np. w pliku /etc/rc.local, tak aby wybór źródła sygnału odbywał się automatycznie po włączeniu Raspberry Pi.

Kompletny zbiór rejestrów i komend umożliwiających m.in. skalowanie i obracanie obrazu, wybór źródła sygnału, wyświetlanie obrazów testowych, został kompleksowo opisany w dokumencie DLPC2601 and DLPC2607 Software Programmer's Guide [2].

Przykład działania modułu DLP LightCrafter Display 2000 podłączonego do komputera jednopłytkowego Raspberry Pi został przedstawiony na filmie: http://bit.ly/2MwuieY.

Łukasz Skalski
contact@lukasz-skalski.com

Pozostałe artykuły

Laserowy, bezprzewodowy sensor smogu dla Raspberry Pi

Numer: Maj/2019

W jednym z poprzednich numerów zaprezentowany został projekt sensora smogu z bezprzewodową technologią Bluetooth Low Energy. Wyposażony w dokładny, laserowy czujnik PMS7003 umożliwia on wykonywanie zdalnych pomiarów zawartości pyłów zawieszonych w powietrzu. Mierzy też temperaturę i wilgotność względną, korzystając z precyzyjnego układu SHT20. Prezentację wyniku pomiaru powierzono aplikacji BBair, która na ekranie smartfonu ...

Rower elektryczny (1)

Numer: Maj/2019

Już od jakiegoś czasu stały się dosyć mocno popularne różne pojazdy z napędem elektrycznym. Na ulicach często możemy zobaczyć hulajnogę lub deskorolkę elektryczną. Tego typu pojazdy są bardzo tanie w eksploatacji oraz umożliwiają łatwe przemieszczanie się po utwardzonych nawierzchniach w większych aglomeracjach. Niestety większość małych pojazdów elektrycznych może poruszać się tylko po utwardzonych drogach, a dodatkowo ...

Strumieniowy odtwarzacz audio na i.MX6ULL

Numer: Kwiecień/2019

W systemach mikroprocesorowych często zachodzi potrzeba porozumienia się z użytkownikiem nie tylko za pomocą obrazu i dotyku, ale również za pomocą dźwięku. Nie zawsze musi to być dźwięk o najwyższej jakości, szerokiej dynamice i pozbawiony zniekształceń. Do zwrócenia uwagi użytkownika na wyświetlany na ekranie komunikat, udźwiękowienia zapisanego w pamięci urządzenia filmiku instruktażowego, odtworzenia mowy lub muzyki z niewielkich, ...

Analizator stanów logicznych z modułu STM32F4DISCOVERY

Numer: Styczeń/2019

W artykule przedstawiono kolejny przykład użycia zestawu uruchomieniowego mikrokontrolera w roli analizatora stanów logicznych. Tym razem projekt analizatora powstał na bazie zestawu STM32F4DISCOVERY. Dzięki niestandardowemu użyciu układu DCMI w mikrokontrolerze STM32F407 uzyskano analizator stanów logicznych o godnych uwagi parametrach, przewyższający swymi osiągami popularny wśród hobbystów i studentów analizator Saleae.

Moduł ESP01 pracujący jako sterownik z 2 wyjściami i 1 wejściem

Numer: Grudzień/2018

ESP01 to miniaturowy moduł Wi-Fi zbudowany w oparciu o układ ESP8266. W tej najprostszej wersji do dyspozycji użytkownika są 2 wyprowadzenia I/O oraz port komunikacyjny UART. Nawet jednak z tak ograniczonymi zasobami sprzętowymi, można wykorzystać moduł do zbudowania mikro-serwera z 2 wyjściami i 1 wejściem, ze sterowaniem za pośrednictwem przeglądarki internetowej. Taki serwer może generować dynamiczne strony HTML wysyłane do wyświetlenia ...

Mobilna
Elektronika
Praktyczna

Ze świata  Kobiety w elektronice    ...

Elektronika Praktyczna

Maj 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym