🛠 OLED Qwiic sur le bus I2C 5 (mcu_i2c0)
Objectifs
Mettre en service un écran OLED I2C (contrôleur SSD1306, adresse 0x3C) sur le connecteur Qwiic du BeaglePlay. Le connecteur Qwiic est câblé sur le contrôleur mcu_i2c0, exposé côté Linux comme le bus I2C numéro 5. On apprend à scanner le bus avec i2cdetect, puis à écrire dessus depuis Python avec smbus2.
Matériel
- Une carte BeaglePlay
- Un écran OLED Qwiic SSD1306 0,91" ou 0,96" (adresse 0x3C)
- Un câble Qwiic 4 fils (ou dupont vers le connecteur : 3V3, GND, SDA, SCL)
Code complet
# 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
Vérification attendue
sudo i2cdetect -y -r 5 affiche 3c dans la grille (le -- de la ligne 0x00 est normal). Après envoi de la séquence d'initialisation, l'OLED affiche une barre blanche pleine. Si l'écran est invisible, vérifier d'abord le 3V3 et l'inversion SDA/SCL.
Erreurs fréquentes
- Scanner le mauvais bus : le Qwiic est bien le bus 5 (
mcu_i2c0), pas le bus des Grove ;i2cdetect -lconfirme l'étiquette du contrôleur. - Alimenter l'OLED sur une broche non alimentée : le bus reste correct mais l'écran ne s'initialise pas.
- Oublier le préfixe d'écriture 0x00 (commande) / 0x40 (données) : l'initialisation passe inaperçue.
- Deux périphériques Qwiic en 0x3C : le second n'apparaît pas dans
i2cdetect, il faut un écran adressable (0x3D). - Rester root partout : ajouter l'utilisateur au groupe
i2cpouri2cdetectsans sudo.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash