W tym odcinku kursu nauczymy się obsługiwać wyświetlacz OLED o przekątnej 2,42 cala i rozdzielczości 128×64 pikseli z wbudowanym sterownikiem SSD1309 firmy Solomon Systech. Takie wyświetlacze produkuje chińska firma Wisevision Optronics. Dostępne są w kolorach: białym, żółtym, zielonym i niebieskim. Istnieją także tańsze wyświetlacze o mniejszych rozmiarach i tej samej rozdzielczości. Na rynku można znaleźć podobne rozwiązania z nieco innymi sterownikami, takimi jak SSD1306 lub SH1106. Wszystkie te sterowniki są bardzo podobne i kod, który napiszemy dla SSD1309, powinien działać bez żadnych modyfikacji także z innymi sterownikami.
SSD1309 jest układem scalonym montowanym w technologii chip-on-glass co oznacza, że jest zintegrowany z szybą wyświetlacza, zza której wyprowadzony jest 24-żyłowy kabel. Należy go włożyć do gniazda FFC/FPC o rastrze 0,5 mm. Do uruchomienia wyświetlacza potrzebujemy dwóch napięć zasilających (3,3 V i 12 V) oraz kilku drobnych elementów pasywnych.
Istnieje kilka niedrogich płytek, które wszystkie niezbędne połączenia mają już gotowe do wykorzystania. Są to chińskie produkty typu „no name” - bez marki wytwórcy ani innych oznaczeń - dostępne w wielu sklepach. Mają one kilka charakterystycznych cech, dzięki którym można je rozróżnić. Są to: kolor soldermaski, liczba pinów konektora i jego położenie oraz typ interfejsu komunikacyjnego.
Na początek zdecydowanie odradzam zakup płytek z czarną soldermaską i 4-pinowym konektorem z interfejsem I²C. Płytki te mają jakiś problem z przetwornicą podwyższającą napięcie - w rezultacie konwerter bardzo nieprzyjemnie piszczy, co jest mocno irytujące, zwłaszcza w nocy.
Polecam natomiast płytki z niebieską soldermaską i 7-pinowym konektorem umieszczonym na górze lub po lewej stronie PCB. Przykład takiego modułu pokazuje fotografia 1. Mogą one pracować z interfejsem SPI lub I²C. Fabrycznie płytki są skonfigurowane tak, by pracowały z interfejsem SPI, ale przeróbka na I²C jest bardzo łatwa. Wystarczy do tego lutownica, cyna i kawałek drutu.
Na dolnej stronie płytki znajdują się wszystkie drobne elementy elektroniczne. Aby przerobić płytkę z interfejsu SPI na I²C, musimy najpierw wyjąć kabel wyświetlacza. W tym celu delikatnie przesuwamy szarą klamrę gniazda w kierunku środka płytki, po czym przewód możemy delikatnie wysunąć ze złącza. W pierwszej kolejności musimy odlutować rezystor R8 (0 Ω) i wlutować go w miejsce R9. Pola lutownicze są na tyle duże, że zamiast rezystora możemy umieścić tam kropelkę cyny. Podobnie robimy w miejscu R11.
Kolejna możliwa modyfikacja jest niepotrzebna, jeżeli chcemy zasilać wyświetlacz ze źródła o napięciu 5 V. Na płytce jest umieszczony stabilizator LDO konwertujący 5 V na 3,3 V. Jeżeli chcemy zasilać płytkę bezpośrednio ze źródła 3,3 V, warto obejść stabilizator, lutując mały drucik zwierający wejście i wyjście regulatora (najlepiej uprzednio wylutowując stabilizator - przyp. red.). Wszystkie modyfikacje zaznaczono czerwonymi strzałkami na fotografii 2.
Możemy podłączyć płytkę z wyświetlaczem do ESP32-S3 w sposób pokazany na rysunku 1. Domyślny pin SDA to GPIO8, a w przypadku SCL - GPIO9, ale w konstruktorze klasy I²C można wskazać dowolne inne piny, jeżeli z jakiegoś powodu linie 8 i 9 chcemy wykorzystać w innym celu. Sterownik SSD1309 może używać dwóch adresów na magistrali I²C. Jeżeli pin DC połączymy z masą, wówczas sterownik będzie występował pod adresem 0x3C, a jeżeli do zasilania - adres zmieni się na 0x3D. Pin RES służy do resetowania kontrolera SSD1309. Na płytce znajduje się układ RC, który zainicjalizuje sterownik zaraz po włączeniu zasilania, więc wspomnianą linię możemy zostawić niepodłączoną.
Po podłączeniu wyświetlacza do ESP32 warto (w celach diagnostycznych) przeskanować wszystkie adresy na magistrali I²C przy pomocy skryptu i2c_scan.py, który opracowaliśmy w 3. odcinku kursu. Jeżeli na konsoli pojawi się komunikat:
Znalezione urządzenia: 3C
…to możemy przejść do kolejnego rozdziału.