Diferència entre revisions de la pàgina «Com connectar-hi pantalles OLED SSD1306 (128x64)»

De Wiki d'en Jordi Binefa
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb « Activeu l'I2C i la comunicació SSH fent servir ''raspi-config'': pi@raspberrypi:~ $ sudo raspi-config Opció ''Interfacing Options'': ''5'' Interfacing Options '...».)
 
(Execució des de l'arrencada)
 
(Hi ha 5 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 +
== Preparació prèvia a la instal·lació ==
  
 
Activeu l'I2C i la comunicació SSH fent servir ''raspi-config'':
 
Activeu l'I2C i la comunicació SSH fent servir ''raspi-config'':
Línia 42: Línia 43:
  
 
Per a que corri amb sudo cal:
 
Per a que corri amb sudo cal:
$ sudo pip3 install pillow
+
$ sudo pip3 install pillow
$ sudo pip3 install RPi.GPIO
+
$ sudo pip3 install RPi.GPIO
  
  
Línia 50: Línia 51:
  
  
 +
== Instal·lació ==
  
Explicació basada en aquesta pàgina: [https://www.raspberrypi-spy.co.uk/2018/04/i2c-oled-display-module-with-raspberry-pi/ Using an I2C OLED Display Module with the Raspberry Pi]
+
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
 +
$ cd 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:
 +
 
 +
[[File:OledRPi.jpg|center|1024px|caption]]
 +
 
 +
== Bibliografia i fonts ==
 +
 
 +
Explicació parcialment basada en aquesta pàgina: [https://www.raspberrypi-spy.co.uk/2018/04/i2c-oled-display-module-with-raspberry-pi/ Using an I2C OLED Display Module with the Raspberry Pi]
  
 
Alternativa d'explicació: [https://learn.adafruit.com/ssd1306-oled-displays-with-raspberry-pi-and-beaglebone-black/overview SSD1306 OLED Displays with Raspberry Pi and BeagleBone Black]
 
Alternativa d'explicació: [https://learn.adafruit.com/ssd1306-oled-displays-with-raspberry-pi-and-beaglebone-black/overview SSD1306 OLED Displays with Raspberry Pi and BeagleBone Black]

Revisió de 17:42, 11 maig 2018

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
$ cd 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:

caption

Bibliografia i fonts

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