Wyświetlacz OLED SSD1306 - tekst

Wyświetlacz 0,96″ OLED typu SSD1306 i Raspberry Pi

[Aktualizacja: 2019-03-30] Czytelnik, Paweł Kopacz, zauważył, że aktualnie trzeba jeszcze zainstalować pip i setuptools oraz wheel
Podobnie jak poprzednio – mamy dziś bardzo prostą instrukcję dla tym razem wyświetlacza. Śledząc dyskusje na grupie Malinowe Pi, Hubert Wu podzielił się linkiem do wyświetlacza 128×64. Jest to wyświetlacz monochromatyczny o całkiem słusznej rozdzielczości 128×64 wykonany w technologii OLED. Pomyśleć, że mój pierwszy komputer miał także rozdzielczość 640×400 i monochrom. Wyświetlacz kosztuje około 20-25 PLN i występuje najczęściej pod nazwą: ”0.96″ I2C IIC Serial 128X64” w popularnych serwisach aukcyjnych i wygląda podobnie do oryginalnego wyświetlacza Adafruit SSD1306 – którego właśnie użyłbym.

Wyświetlacz OLED SSD1306 - grafika
Wyświetlacz OLED SSD1306 – grafika

Czego będziemy potrzebować?

Software:

  • git, python-devel, python-pip (programy do zainstalowania w dystrybucji Raspbian na RPi)
  • Bibliotekę z przykładami od Adafruit: Adafruit_Python_SSD1306

Hardware:

Zastosowanie

Podłączony do RPi wyświetlacz (który jest zupełnie niezależny od wyjść HDMI czy Composite), przydaje się oczywiście do niezliczonych projektów, ale gdy zapytać konkretnie – to jednym z podstawowych jest wyświetlenie adresu IP 🙂

Podłączamy

Najpierw podłączamy zasilanie i masę – VCC i GND do 3,3 i GND RPi, a następnie SDA i SCL do GPIO0 (GPIO 2 w RPi B+, 2 i 3) i GPIO1 (GPIO 3 w RPi B+, 2 i 3):

Wyświetlacz OLED SSD1306 - podłączenie do RPi
Wyświetlacz OLED SSD1306 – podłączenie do RPi

Podłączenie jest bardzo proste a wszystkie PINy obok siebie (no prawie, omijamy GPIO4!). Podczas podłączania – pomyliłem VCC z GND! Objawem było delikatne świecenie zielonej LED na RPi… Na szczęście po poprawieniu – okazało się, że zarówno RPi jak i wyświetlacz są w porządku. Od strony wyświetlacza podłączenie wygląda to tak:

Wyświetlacz OLED SSD1306 - podłączenie do wyświetlacza
Wyświetlacz OLED SSD1306 – podłączenie do wyświetlacza

Instalujemy

Pierwszy krokiem będzie włączenie szyny I2C (GPIOO lub GPIO2 i GPIO1 lub GPIO3) na naszym RPi, włączamy ją używając raspi-config (Interfacing Options–>I2C->Enable).
Uruchamiamy ponownie RPi i zabieramy się za instalację odpowiednich programów:
Tradycyjne, aktualizujemy system:

sudo apt-get update && sudo apt-get upgrade

Następnie instalujemy odpowiednie programy:

sudo apt-get install build-essential python-dev python-pip python-imaging python-smbus git

Następnie RPi.GPIO:

sudo pip install RPi.GPIO

Gdy wszystko zostanie pobrane i zainstalowane – pobieramy używając git odpowiednią bibliotekę z przykładami od Adafruit:

sudo python -m pip install --upgrade pip setuptools wheel
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install

Test!

Przekonajmy się czy nasz wyświetlacz jest prawidłowo podłączony!

cd Adafruit_Python_SSD1306/examples/
nano shapes.py

Edytujemy plik shapes.py i lokalizujemy linię, która konfiguruje nasz wyświetlacz do pracy przez I2C, jest to:

disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_bus=1)

Inne linie zaczynające się od disp – „haszujemy” czyli stawiamy na początku znak #.
Teraz uruchamiamy:

sudo python shapes.py

Wreszcie wyświetlacz ożył! W katalogu znajdują się jeszcze pliki w Pythonie z przykładami – animate.py oraz image.py, należy je także przygotować – wybrać właściwą konfigurację zmiennej disp.
Możemy stosować własne czcionki (foramat TTF) – np: o wysokości 16pix:

Wyświetlacz OLED SSD1306 - tekst
Wyświetlacz OLED SSD1306 – tekst

image.py pozwala z kolei wyświetlić obraz w formacie PPM – do przygotowanie można użyć GIMP oraz konwersji na monochrom z ditheringiem:

Wyświetlacz OLED SSD1306 - grafika
Wyświetlacz OLED SSD1306 – grafika

Efekt zależy od wejściowego obrazu – powiedzmy, że logo można rozpoznać!

Pozostaje nam zagłębić się w Python’a i użyć wyświetlacza do podania adresu IP.

Wyświetlacz OLED SSD1306 - tekst
Wyświetlacz OLED SSD1306 – tekst