🛠 OLED Qwiic sur le bus I2C 5 (mcu_i2c0)
Objetivos
Poner en servicio una pantalla OLED I2C (controlador SSD1306, dirección 0x3C) en el conector Qwiic del BeaglePlay. El conector Qwiic está cableado al controlador mcu_i2c0, expuesto en Linux como el bus I2C número 5. Se aprende a escanear el bus con i2cdetect y a escribir en él desde Python con smbus2.
Material
- Una placa BeaglePlay
- Una pantalla OLED Qwiic SSD1306 de 0,91" o 0,96" (dirección 0x3C)
- Un cable Qwiic de 4 hilos (o cables dupont hacia el conector: 3V3, GND, SDA, SCL)
Código completo
# Le bus Qwiic est le bus 5 (mcu_i2c0) ; le lien symbolique est fourni
ls -l /dev/play/qwiic
sudo i2cdetect -y -r 5 # la case 3c doit apparaître
# pip install smbus2
import smbus2
bus = smbus2.SMBus(5)
def cmd(c):
bus.write_byte_data(0x3C, 0x00, c)
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)
bus.write_i2c_block_data(0x3C, 0x40, [0xFF]*128) # ligne allumée
Verificación esperada
sudo i2cdetect -y -r 5 muestra 3c en la cuadrícula (el -- de la línea 0x00 es normal). Tras enviar la secuencia de inicialización, el OLED muestra una barra blanca completa. Si la pantalla no se ve, verificar primero el 3V3 y la inversión de SDA/SCL.
Errores frecuentes
- Escanear el bus equivocado: el Qwiic es efectivamente el bus 5 (
mcu_i2c0), no el bus de los Grove;i2cdetect -lconfirma la etiqueta del controlador. - Alimentar el OLED en un pin no alimentado: el bus sigue siendo correcto, pero la pantalla no se inicializa.
- Olvidar el prefijo de escritura 0x00 (comando) / 0x40 (datos): la inicialización pasa desapercibida.
- Dos periféricos Qwiic en la dirección 0x3C: el segundo no aparece en
i2cdetect; se necesita una pantalla direccionable (0x3D). - Mantenerse como root en todas partes: añadir el usuario al grupo
i2cpara usari2cdetectsin sudo.
Otros tutoriales para esta placa
- Flasher l'image Debian sur la microSD puis l'eMMC 16 Go
- LED et bouton USER : triggers kernel et gpio-keys
- Capteurs Grove sur le bus I2C 1 et inventaire du bus
- Double Ethernet : GbE RTL8211F et 10BASE-T1L sur RJ11
- Caméra CSI OV5640 via fdtoverlays dans extlinux.conf
- Reflasher le CC1352P7 en BSL depuis le processeur hôte
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash