oled_i2c.py

Raspberry Pi 5 (model-5) · Archivo : oled_i2c.py · Lenguaje : Python · Uso : Afficher une information locale (capteurs, état) sur un petit écran OLED I2C 0,96"

La OLED SSD1306 128x64 se conecta al bus I2C (GPIO2/GPIO3, pines 3 y 5) y se inicializa con una secuencia de comandos. El script activa el bus, borra el framebuffer y cede el control. En la model-5, active I2C en raspi-config o config.txt antes.

Hardware

Una Raspberry Pi 5 (BCM2712 quad-core a 2,4 GHz, chip de E/S RP1, GPIO de 40 pines, alimentación USB-C de 5 V/5 A recomendada, dos puertos CSI de cámara). Un modulo OLED SSD1306 I2C de 4 pines, cables dupont.

Cableado

VCC a 3,3 V, GND a GND, SDA a GPIO2 (pin 3), SCL a GPIO3 (pin 5). El conector J8 de 40 pines agrupa estos pines en la esquina.

Funcionamiento

smbus escribe el byte de control 0x00 (comando) o 0x40 (datos) y luego los bytes a la direccion 0x3C; la secuencia ajusta bomba, contraste y barrido.

Ejecución

Copia el script en la placa (scp) y ejecútalo con python3. En Bookworm, gpiozero 2.x controla los pines mediante el chip RP1; mantén gpiozero y python3-rpi.gpio actualizados (sudo apt full-upgrade). Se recomienda fuente de 5 V/5 A.

Variantes

La libreria luma.oled da texto y fuentes; dos pantallas con un multiplexor TCA9548A. Se recomienda una fuente de 27 W (5 V/5 A); sin ella, USB se limita a 600 mA en total.

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")

← Volver a la ficha