oled_i2c.py
L'écran OLED SSD1306 128x64 se branche sur le bus I2C (GPIO2/GPIO3, broches 3 et 5) et s'initialise par une séquence de commandes. Le script active le bus, efface le framebuffer puis laisse la main. Sur model-3b-plus, activer I2C via raspi-config ou config.txt avant de lancer.
Matériel requis
Une Raspberry Pi 3 Model B+ (BCM2837B0 quad-core 1,4 GHz, Wi-Fi 5 GHz, Bluetooth 4.2, boîtier métallique blindé, GPIO 40 broches). Un module OLED SSD1306 I2C (4 broches), fils dupont.
Câblage
VCC sur 3,3 V, GND sur GND, SDA sur GPIO2 (broche 3), SCL sur GPIO3 (broche 5). Le connecteur J8 de 40 broches groupe ces broches en bout de rangée.
Fonctionnement
smbus écrit l'octet de contrôle 0x00 (commande) ou 0x40 (données) suivi des octets vers l'adresse 0x3C ; la séquence configure charge de pompe, contraste et scan.
Exécution
Copiez le script sur la carte (scp), puis lancez-le avec python3 (ou bash). Raspberry Pi OS inclut gpiozero ; sinon sudo apt install python3-gpiozero. Le brochage 40 broches est documenté sur le site officiel Raspberry Pi.
Variantes
Bibliothèque luma.oled pour texte et polices ; deux écrans via un multiplexeur TCA9548A. Wi-Fi 5 GHz disponible : testez les deux bandes ; le blindage dissipe bien mais surveillez cpuinfo.
oled_i2c.py
# oled_i2c.py — affiche texte et courbe sur OLED SSD1306 en I2C.
# Deps: sudo apt install python3-smbus i2c-tools (activer i2c_arm)
import time
import smbus
ADDR = 0x3C
bus = smbus.SMBus(1)
def cmd(c):
bus.write_byte_data(ADDR, 0x00, c)
def data(buf):
bus.write_i2c_block_data(ADDR, 0x40, buf)
for c in [0xAE, 0xD5, 0x80, 0xA8, 0x3F, 0xD3, 0x00, 0x40, 0x8D, 0x14,
0xA1, 0xC8, 0xDA, 0x12, 0x81, 0xFF, 0xD9, 0xF1, 0xDB, 0x40,
0xA4, 0xA6, 0xAF]:
cmd(c)
data([0xF0] * 1024) # efface le framebuffer 128x64
print("OLED initialise, i2cdetect -y 1 pour verifier")