Com connectar-hi pantalles OLED SSD1306 (128x64)

De Wiki d'en Jordi Binefa
Dreceres ràpides: navegació, cerca

Preparació prèvia a la instal·lació

Activeu l'I2C i la comunicació SSH fent servir raspi-config:

pi@raspberrypi:~ $ sudo raspi-config

Opció Interfacing Options:

5 Interfacing Options  Configure connections to peripherals
 P2 SSH         Enable/Disable remote command line access to your Pi using SSH
 P5 I2C         Enable/Disable automatic loading of I2C kernel module

Instal·leu els paquets python-smbus i i2c-tools:

pi@raspberrypi:~ $ sudo apt-get install -y python-smbus i2c-tools

Reinicieu la Raspberry Pi. Un cop reiniciada, feu servir l'eina i2cdetect per a detectar els dispositius connectats al bus I2C (1) de la Raspberry Pi:

pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

Instal·leu els paquets python3, python3-pip i python-libtiff:

pi@raspberrypi:~ $ sudo apt install python3 python3-pip python-libtiff

Instal·leu les dependències libopenjp2-7-dev i libtiff5

pi@raspberrypi:~ $ sudo apt install libopenjp2-7-dev libtiff5

Instal·leu les biblioteques de Python3 pillow i RPi.GPIO

pi@raspberrypi:~ $ pip3 install pillow
pi@raspberrypi:~ $ pip3 install RPi.GPIO

Per a que ho pugui executar l'usuari primari (root):

pi@raspberrypi:~ $ sudo pip3 install pillow
pi@raspberrypi:~ $ sudo pip3 install RPi.GPIO

Instal·leu el paquet git:

pi@raspberrypi:~ $ sudo apt install git


Per a que corri amb sudo cal:

$ sudo pip3 install pillow
$ sudo pip3 install RPi.GPIO


És convenient fer la instal·lació del paquet screen:

pi@raspberrypi:~ $ sudo apt install screen


Instal·lació

Feu dos directoris:

$ cd ~
$ mkdir code
$ mkdir logs

Cloneu i instal·leu la biblioteca de Python d'Adafruit per a la pantalla OLED SSD1306:

$ cd code
$ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
$ cd Adafruit_Python_SSD1306
$ sudo python3 setup.py install

Editeu l'exemple per a seleccionar la pantalla 128x64 en comptes de la 128x32:

$ nano /home/pi/code/Adafruit_Python_SSD1306/examples/stats.py
# 128x32 display with hardware I2C:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)
# 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

Proveu el funcionament:

$ python3 /home/pi/code/Adafruit_Python_SSD1306/examples/stats.py


Execució des de l'arrencada

Cal que feu un arxiu de guió (script) que faci de llançadora del programa que volem executar quan s'iniciï la Raspberry Pi

$ cd ~
$ cd code
$ mkdir bbt
$ nano launcher.sh

Una proposta de codi de l'arxiu de guió per la llançadora:

#!/bin/sh
# launcher.sh
cd /
python3 /home/pi/code/Adafruit_Python_SSD1306/examples/stats.py &
cd /

El símbol et (&) assegura l'execució en segon pla. Altrament l'arrencada es quedaria clavada fins que no finalitzés l'execució del programa.

Doneu permisos d'execució al guió que fa de llançadora:

$ chmod +x launcher.sh

Editeu amb el nano el crontab de l'usuari primari (root):

$ sudo EDITOR=nano crontab -e

I afegiu la llançadora a l'inici:

@reboot sh /home/pi/code/bbt/launcher.sh >/home/pi/logs/cronlog 2>&1


Quan reinicieu la Raspberry, i després de tot el procés d'arrencada, us sortirà la informació per la pantalla OLED:



Explicació parcialment basada en aquesta pàgina: Using an I2C OLED Display Module with the Raspberry Pi

Alternativa d'explicació: SSD1306 OLED Displays with Raspberry Pi and BeagleBone Black