Energooszczędne wyświetlacze dla mikrokontrolerów

Wyświetlacze pozwalają mikrokontrolerom na wystawienie interfejsu użytkownika. Mini komputery jak Raspberry Pi mogą użyć większe kolorowe wyświetlacze ze złączem HDMI kosztem większego zapotrzebowania na prąd.

W tym artykule przyjrzę się wyświetlaczom OLED dostępnych dla mikrokontrolerów.

Wyświetlacze OLED

Technologia OLED wykorzystuje organiczne diody elektroluminescencyjne. W odróżnieniu od wyświetlaczy LCD spotykanych na co dzień w ekranach komputerów i laptopów ekrany OLED nie wymagają podświetlenia przez co mogą zaoferować lepszy kontrast (lepsza czerń), czy znacznie mniejsze zapotrzebowanie na prąd. Dostępne w sklepach z elektroniką gotowe moduły z wyświetlaczami OLED wykorzystują zazwyczaj tanią technologię PMOLED, która pozwala na produkcję tylko bardzo małych wyświetlaczy (do 3 cali). Na rynku konsumenckim stosuje się bardziej zaawansowane technologie jak AMOLED pozwalające na tworzenie znacznie większych wyświetlaczy ze znacznie większą ilością pikseli. Wyświetlacze AMOLED można spotkać w niektórych smartphonach, czy telewizorach.

Wyświetlacze OLED zużywają mniej prądu niż wyświetlacze LCD - tym mniej im mniej pikseli jest używanych. Mały wyświetlacz 4" HDMI LCD dla Raspberry Pi pobiera około 0,2A na samo podświetlenie (około 0,25A przy wyświetlaniu obrazu; 5V). 2,7" OLED przeważnie zmieści się poniżej 0,1A (5V).

W sklepach z elektroniką popularne są płytki uOLED (microOLED) z pinoutem I2C lub SPI i rozdzielczości 0,96 lub 1,3" (128x64px, monochromatyczny lub kolor) za kilkadziesiąt złotych. Adafruit oferuje także monochromatyczne białe OLEDy o przekątnej 2,4" i 2,7" i tej samej rozdzielczości 128x64px. Za te wyświetlacze zapłacimy już ponad sto złotych.

Wyświetlacz OLED Adafruit 2,7 cala

Wyświetlacze OLED i Arduino

Powszechnie dostępne wyświetlacze OLED z interfejsem SPI lub I2C posiadają kontroler SH1106 i są obsługiwane przez biblioteki udostępnione na rhydolabz.com. Na githubie można też znaleźć inne biblioteki dla tego kontrolera. Niektórych chińskie wyświetlacze OLED mogą mieć inny kontroler i będą wymagały innej biblioteki. Wyświetlacze Adafruit jak i niektóre inne wykorzystują kontroler SSD1325 i są obsługiwane przez biblioteki Adafruit GFX/SSD1325.

Wyświetlacze z kontrolerem SH1106 działają na 3.3V, ale można użyć ich z płytkami Arduino pracującymi na 5V (choć zaleca się jednak konwersję do 3.3V lub użycie płytki pracującej na tym napięciu). Wyświetlacze z interfejsem SPI wykorzystują 3 piny tego interfejsu - MOSI, CLK oraz CS (MISO nie jest potrzebne). Dodatkowo potrzebne są dwa piny GPIO - DC oraz RESET. Biblioteki mogą wymagać podania numeru tych dodatkowych pinów. Sposób połączenie i przykład użycia dla Arduino dostępny jest na rhydolabz.com i nie będę go tu już powtarzał.

Małe wyświetlacze OLED z kontrolerem SH1106

Wyświetlacze 2,4" i 2,7" Adafruit pracują na 3.3V i do pracy z 5V wymagają konwertera stanów logicznych (dołączonego do zestawu). Całość opisana jest w przewodniku. Ja po prostu przestawiłem Arduino Uno Waveshera na 3.3V (poręczna opcja dodana przez tego producenta) i pominąłem konwerter. Demo ssd1325test z biblioteki Adafruit SSD1325 może posłużyć do szybkiego sprawdzenia wyświetlacza. Domyślnie demo to używa softwarowego SPI i jeżeli planujemy używać inne urządzenia SPI to trzeba użyć oddzielnego konstruktora wykorzystującego sprzętowy SPI do obsługi tego wyświetlacza (próby użycia sprzętowego i softwarowego SPI mogą wywołać konflikty).

Aparat smartphonu widzi obraz z białego OLEDa w niebieskich odcieniach

Tekst i grafika na wyświetlaczach OLED

Monochromatyczne wyświetlacze mogą wyświetlać tekst lub proste grafiki. Kolorowe wyświetlacze OLED mogą wyświetlać dość proste kolorowe grafiki, lecz i tak nie będzie to jakość jak w przypadku zwykłych kolorowych ekranów LCD. Wyświetlanie tekstu to zazwyczaj nie problem. Grafiki w postaci bitmap są w przykładach dla kontrolerów SH1106 i SSD1325 zapisane jako tablice bitów, np w przykładzie Adafruit znajdziemy:

static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ 
...
};

Dla monochromatycznych wyświetlaczy grafikę zapisujemy jako 1-bitowy plik BMP (dwa kolory: biały i czarny) i następnie konwertujemy za pomocą image2cpp, TheDotFactory czy bmp2hex. Generują one tablicę z bajtami gotową do wklejenia do kodu w Arduino IDE (czasami potrzebna drobna modyfikacja, np. wycięcie wymiarów grafiki z tablicy generowanej przez bmp2hex). Testując wyświetlacz Adafruit na ESP32 zapis liczbowy też działał bez problemu.

Wyświetlacze LCD i AMOLED ze smartphonów

Na rynku jest bardzo dużo wyświetlaczy-zamienników do smarphonów. Większość z nich używa interfejsu MIPI-DSI. Użycie takich wyświetlaczy we własnych projektach nie jest łatwe, ale są dwa możliwe rozwiązania - mikrokontrolery STM lub konwerter do HDMI z wykorzystaniem układu FPGA.

Niektóre mikrokontrolery STM obsługują ten interfejs i są w stanie wykorzystać takie ekrany - choć wymaga to trochę analizy i debuggowania. Kilka przykładów znajdziemy na blogu andybrown.me.uk.

Drugą opcją jest konwerter HDMI pozwalający wykorzystać taki ekran np. z Raspberry Pi. Opisana płytka nie jest jednak dostępna w sprzedaży.

Sharp Memory LCD

Sharp oferuje kilka małych wyświetlaczy Memory LCD, w tym nowy o przekątnej 4,4". Technologia ta coś w rodzaju połączenia ePapieru i LCD. Niskie zapotrzebowanie na prąd i wysoki kontrast wyświetlacza. Rozdzielczość nie jest duża, ale interfejs SPI jest łatwy do wykorzystania. Na tindie.com dostępny jest adapter do tych wyświetlaczy. Jeden z małych wyświetlaczy jest też dostępny jako gotowa płytka w sklepie Adafruit. Efekt podobny do wyświetlaczy OLED.

ePapier - eInk

Wyświetlacze ePapierowe znane z czytników ebooków są też dostępne jako gotowe komponenty do wykorzystania we własnych projektach. Są energooszczędne, mają dobry kontrast, kilka odcieni szarości... jak i relatywnie wysoką cenę i słabszą dostępność. Jako gotowe komponenty dostępne są małe wyświetlacze. Największy to chyba 4,3" Waveshare z własną biblioteką do Arduino. Dodatkowym ograniczeniem tych wyświetlaczy jest zazwyczaj brak zdolności do szybkiego odświeżania obrazu jak i praca tylko w dodatnich temperaturach.

Alfanumeryczne ekrany LCD

Tanie powszechnie dostępne wyświetlacze alfanumeryczne ze sterownikiem HD44780 pozwalają na wyświetlanie tekstu w kilku (zazwyczaj 2-4) wierszach. Połączone z konwerterem do I2C, czy UART są łatwe do wykorzystania we własnych projektach. Kontrast i czytelność tekstu wraz z regulowanym podświetleniem jest bardzo dobra. Niemniej ograniczenie do znaków alfanumerycznych może okazać się czasami zbyt duże i potrzebować będziemy jednego z powyższych wyświetlaczy.

Powiązane artykuły

RkBlog

Elektronika i Python, 7 August 2017

Comment article
Comment article RkBlog main page Search RSS Contact