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
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)
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: https://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.
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.