🛠 Interroger un capteur I2C sur les broches 3/5 du connecteur
Objectifs
Brancher un capteur ou périphérique I2C (OLED SSD1306, BME280, etc.) sur l'Orange Pi 3B et le détecter avec i2c-tools. Attention : sur le connecteur 40 broches, le seul I2C sans conflit est I2C2_M1, broches 3 (SDA) et 5 (SCL) ; il n'est activé dans le device tree mainline que depuis le commit du 2025-11-21 — noyau récent requis, sinon image constructeur ou overlay perso (noyaux 6.11 à 6.17).
Matériel
- Orange Pi 3B sous Armbian récent (ou image Orange Pi) — vérifier
uname -ret la présence de&i2c2activé - Capteur I2C 3,3 V (ex. SSD1306 en 0x3c, BME280 en 0x76/0x77)
- 4 Dupont : 3,3 V, GND, broche 3 (SDA), broche 5 (SCL)
Code complet
sudo apt install i2c-tools
sudo modprobe i2c-dev
i2cdetect -l # lister les contrôleurs
# Trouver le bus du connecteur : le nom du device tree contient i2c2
for d in /sys/bus/i2c/devices/i2c-*; do echo "$d : $(cat $d/of_node/fullname 2>/dev/null)"; done
sudo i2cdetect -y N # N = numéro du bus i2c2 repéré ci-dessus
# Exemple de sortie attendue : un périphérique répond 3c (OLED SSD1306)
# Lecture rapide d'un registre :
sudo i2cget -y N 0x3c 0x00
Vérification attendue
i2cdetect -y N affiche une grille ; l'adresse du capteur apparaît (3c, 76, 77…). Aucun UU ne doit apparaître si aucun pilote noyau ne revendique déjà le périphérique.
Erreurs fréquentes
- Scanner le mauvais bus i2c-N : le PMIC RK809-5 est sur i2c0 en adresse 0x20, pas sur le connecteur.
- Noyau 6.11–6.17 sans overlay : le contrôleur du connecteur n'existe pas,
i2cdetect -lne montre rien de correspondant — mettre à jour ou écrire un overlay&i2c2 status="okay". - Alimenter le module en 5 V alors que les broches sont en 3,3 V : risque sur les modules sans convertisseur de niveau.
- Adresses 0x00–0x06 affichées « UC » : ce sont des adresses réservées, pas des périphériques.
- Deux modules avec la même adresse : prévoir un multiplexeur I2C (TCA9548A).
Autres tutoriels pour cette carte
- Faire clignoter une LED via le GPIO avec libgpiod
- Lire un bouton poussoir et afficher l'état dans la console
- Premier script Python : bouton + LED avec python3-libgpiod
- Variation d'intensité d'une LED avec un signal PWM
- Configurer Ethernet gigabit et Wi-Fi puis se connecter en SSH
- Booter sur un SSD NVMe et récupérer une carte bloquée (MaskROM)
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash