mercredi 6 mars 2019

Écran OLED SH1106 I2C et Raspberry Pi


Cet article a été mis à jour le 30 décembre 2020 (compatibilité Python 3).

Dans ce billet, nous allons brancher à un Raspberry Pi un petit écran OLED monochrome de 128 X 64 pixels, puis y afficher du texte et des formes géométriques grâce à un script en Python.

Technologie OLED

OLED signifie "organic light emitting diode", donc "diode électroluminescente organique".

Les écrans OLED offrent des caractéristiques similaires aux écrans LCD (à cristaux liquides), sauf qu'ils ne nécessitent pas de rétroéclairage et produisent des images plus contrastés.

Mon écran OLED

J'ai utilisé un écran OLED de 128 X 64 pixels, dont les dimensions sont approximativement 3,5 cm X 1,8 cm. Il est basé sur le contrôleur SH1106 et utilise le protocole de communication I2C. Il y a quelques semaines, j'ai décrit la façon de le contrôler au moyen d'un Arduino.


Connexion de l'écran au Raspberry Pi

Puisque j'ai la version I2C de l'écran, je l'ai branché au Raspberry Pi de la façon suivante:

Écran OLED  ----  Raspberry Pi
Broche GND  ---- Broche 1 (3,3 V)
Broche VCC  ---- Broche 6 (GND)
Broche SCL   ---- Broche 5 (GPIO 3)
Broche SDA  ----  Broche 3 (GPIO 2)


Activation de l'I2C sur le Rasbperry Pi

Si vous n'avez encore jamais branché de périphérique I2C à votre Raspberry Pi, il est important d'activer le protocole I2C, en ouvrant "Configuration du Raspberry Pi" dans le menu Préférences.


Assurez-vous que l'option I2C est activée dans l'onglet "Interfaces" (un redémarrage du Raspberry Pi est nécessaire pour que les modifications prennent effet).


Si votre écran est correctement branché et que l'I2C est activé, la commande "i2cdetect -y 1" tapée dans le terminal vous permettra de détecter l'écran à l'adresse 3c.


Installation de la bibliothèque luma.oled

La bibliothèque luma.oled est conçue pour le contrôle de nombreux écrans OLED (contrôleurs SSD1306, SSD1309, SSD1322, SSD1325, SSD1327, SSD1331, SSD1351 et SH1106). Vous pouvez consulter en ligne son manuel d'utilisation détaillé.

Pour installer ce module Python dans mon Raspberry Pi, il s'agit d'écrire cette commande dans le terminal:

sudo -H pip3 install --upgrade luma.oled

Exemple de script

À titre d'exemple, voici un script qui affiche sur l'écran la date et l'heure, l'adresse IP utilisée par le Rasbperry Pi et quelques formes géométriques (rectangle, ovale, polygone, lignes droites). Comme d'habitude pour ce genre d'écrans, chaque position sur l'écran est définie au moyen d'une abscisse et d'une ordonnée, le premier pixel en haut à gauche ayant les coordonnées x = 0 et y = 0.


Les concepteurs de luma.oled mettent également à notre disposition une grande quantité d'exemples (affichage d'images sauvegardées en fichier, animations, etc.).

À lire également

J'ai aussi eu l'occasion de contrôler cet écran OLED avec un Arduino Uno, avec une carte STM32 (Nucleo et Blue Pill), avec un ESP8266 et avec un ESP32.

D'autres afficheurs peuvent être contrôlés grâce à un script en python sur le Raspberry Pi: écran couleur SPI ST7735, écran Nokia 5110, afficheur LCD 16 X 2 ...

Yves Pelletier   (TwitterFacebook)

1 commentaire: