Impressum | Kontakt
 Startseite | Kurse | Projekte Haskell | Linux | Suche | Blog

OLED-Screen am Raspberry Pi

Ein 1,3'' monochromatischer Screen mit 128 x 64 Pixel soll an Raspberry Pi angeschlossen werden. Diese Bauteile können über Ebay für unter 10 € beschafft werden.

 

Technische Daten des verwendeten Panels:

resolution:            128*64
viewing angle:         >160
inside driver chip:    SH1106
low power consumption: 0.08 W
voltage:               3v-5vdc
work temperature:     -30c-70c
Connection:            I2C-interface need only 2 IO

 

Hardwareanschluss

Das Panel wird mit dem Pasberry Pi über folgende Anschlüsse verbunden:

OLED       RASPBERRY PI
------------------------
GND  ----  Pin 6
VCC  ----  Pin 1
SCL  ----  GPIO1 (Pin 5)
SDA  ----  GPIO0 (Pin 3)

Installation

Ein ähnliches Panel vertreibt Adafruit mit einer zugehörigen Python-Bibliothek. Leider wird der hier verwendete Chipsatz nicht unterstützt. Richard Hull hat eine Pythonlösung über github bereitgestellt, die auch diesen Chipsatz unterstützt. Auf dieser Seite wird eine genaue Installation beschrieben: Opens external link in new windowhttps://github.com/rm-hull/ssd1306

Hier in Kurzform die Software-Installation:

i2c muss über rasp-config aktiviert sein
> i2cdetect -y 1 muss den Port 3c anzeigen

Paket herunterladen, auspacken und installieren:
> wget github.com/rm-hull/ssd1306/archive/master.zip
> unzip master.zip
> cd ssd1306-master
> python setup.py install
Die Daten werden im Verzeichnis /usr/local/lib/oled gespeichert.

Software

Für Testzwecke soll auf dem Panel "Hello World" in einem umrandeten Feld ausgegeben werden.

Grundsätzlich stellt die Bibliothek ein ImageDraw-Objekt zur Verfügung, auf dem grafische Grundobjekte sowie Text plaziert werden können.

1. Schritt: Erzeugung des ImageDraw-Objekts "canvas":

from oled.device import sh1106   # oder ssd1306
from oled.render import canvas
from PIL import ImageFont, ImageDraw

device = ssd1306(port=1, address=0x3C) 

2. Schritt: Textausgabe mit Umrandung

with canvas(device) as draw:
    font = ImageFont.load_default()
    draw.rectangle((0, 0, device.width, device.height), outline=0, fill=0)
    draw.text(30, 40, "Hello World", font=font, fill=255)

Die Bibliothek enthält zwei Testprogramme sowie Schriftarten, die einen guten Ansatz für weitere Vertiefungen bieten.