Even ons geheugen opfrissen voor het geweldige mini OLED-display SSD1306 (i2C) en de zeer handige luma.oled-bibliotheek. Luma.oled neemt je echt een heleboel werk uit handen.
We gaan het mini OLED-scherm SSD1306 (64 × 128 pixels) aansluiten op een Raspberry Pi Zero 2 W, de software installeren en de meegeleverde voorbeelden uitproberen. Het onderstaande is grotendeels overgenomen van raspberrypi-spy.co.uk
Aansluiten van het display
GND van het display gaat naar GND op de Pi (bv fysieke pin 9)
VCC van het display gaat naar +3,3V op de Pi (fysieke pin 1)
SCL van het display gaat naar GPIO 3 op de Pi
SDA van het display gaat naar GPIO 2 op de Pi
Activeer i2C op de Raspberry Pi:
sudo raspi-config / Interface Options / I2C
En controleer of het display herkend wordt:
i2cdetect -y 1
Installeer de benodigde bibliotheken:
Meestal zijn deze standaard al geïnstalleerd, maar controleer dat voor de zekerheid.
Begin zoals gewoonlijk met een update:
sudo apt update && sudo apt upgrade -y
Daarna:
sudo apt install -y python3-dev
sudo apt install -y python3-smbus i2c-tools
sudo apt install -y python3-pil
sudo apt install -y python3-pip
sudo apt install -y python3-setuptools
sudo apt install -y python3-rpi.gpio
sudo apt install -y python3-venv
Maak een projectdirectory:
cd ~
mkdir oled-screen
cd oled-screen
Maak een Python Virtual Environment (PVE):
python3 -m venv venv
[of bijvoorbeeld:
python3 -m venv luma-env]
Activeer het self-contained Python 3-systeem:
source venv/bin/activate
De naam van de virtuele omgeving moet nu vooraan in de command-prompt verschijnen!(venv) pi@pizero2w:~/oled-screen $
Zolang het PVE actief is zullen Python-bibliotheken in deze virtuele omgeving worden geïnstalleerd en geen invloed hebben op de standaard Python-installatie.
We hebben een Python 3-omgeving gemaakt, dus nu zal ‘Python’ automatisch verwijzen naar Python 3.
Installeer de Luma OLED Python-bibliotheek:
python -m pip install luma.oled
Controleer of git is geïnstalleerd:
sudo apt install -y git
Installeer de examples-repository:
git clone https://github.com/rm-hull/luma.examples.git
Installeer extra afhankelijkheden die nodig zijn voor sommige voorbeelden
(voor het statusscherm zoals op de foto hierboven, is psutil vereist):
sudo apt install -y python3-pil libjpeg-dev zlib1g-dev python3-av
sudo apt install -y libfreetype6-dev liblcms2-dev libopenjp2-7 libtiff5 -y
pip install psutil
Nu is alles gereed om de voorbeelden te proberen:
cd luma.examples/examples
ls
python sys_info_extended.py
Python Virtual Environment verwijderen
Het voordeel van een PVE is dat je de directory kunt verwijderen en daarmee alle met ‘apt’ of ‘pip’ geïnstalleerde bibliotheken:
rm -rf ~/oled-screen/venv
Maak een startbestand:
nano /home/pi/start_oled.sh
Zet er de volgende regels in:
#!/bin/bash
cd ~/oled-screen
source venv/bin/activate
cd luma.examples/examples
python sys_info_extended.py &
En maak het bestand executable:
sudo chmod +x start_oled.sh
Typ de onderstaande regel in in crontab om het bestand bij het booten automatisch te starten:
crontab -e
@reboot /home/pi/start_oled.sh
Raspberry Pi I2C-bussnelheid verhogen
Voor toepassingen die een snellere refreshrate nodig hebben (zoals animaties, video’s en diashows) kun je de bussnelheid van de i2C-bus verhogen, van de standaard 100000 baud naar 400000 baud:
Open het bestand config.txt en zoek de regel ‘dtparam=i2c_arm=on’. Verander deze in:dtparam=i2c_arm=on,i2c_arm_baudrate=400000
Daarna herstarten:
sudo reboot
[Dit werkte allemaal perfect op een Pi Zero 2 W met legacy Pi OS (Debian-Linux 11 Bullseye)
en op een Pi 5B met Pi OS 64bit (Debian-Linux 12 Bookworm]