🛠 Interroger un capteur I2C sur le connecteur 40 broches
Objectifs
Brancher un capteur ou périphérique I2C (OLED SSD1306, BME280, capteur CO2…) sur le connecteur 40 broches de la ROCK 3B et le détecter avec i2c-tools. La doc officielle recense 3 contrôleurs I2C sur le connecteur (table des fonctions du header) ; les broches exactes dépendent du muxing de votre révision matérielle — le nombre de fonctions varie entre la fiche de lancement CNX et la doc actuelle, donc on vérifie sur la carte.
Matériel
- Radxa ROCK 3B sous Radxa OS (ou mainline ≥ 6.11 avec overlays activés)
- Capteur I2C en 3,3 V (SSD1306 en 0x3c, BME280 en 0x76/0x77)
- 4 Dupont : 3,3 V, GND, SDA, SCL (repérées sur le code couleur du connecteur, plan officiel docs.radxa.com)
Code complet
sudo apt install i2c-tools
# Activer le contrôleur I2C du connecteur (Radxa OS : outil rsetup)
sudo rsetup # Interface/Overlay settings -> activer l'I2C du header, reboot
sudo modprobe i2c-dev
i2cdetect -l # lister les contrôleurs i2c-0, i2c-1...
# Identifier le bus du connecteur via le device tree :
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 = bus du connecteur repéré ci-dessus
sudo i2cget -y N 0x76 0xd0 # exemple : ID du BME280 -> 0x60
Vérification attendue
i2cdetect -y N affiche une grille où l'adresse du capteur apparaît (3c, 76, 77…) ; i2cget renvoie une valeur cohérente (0x60 pour le BME280). Aucun UU si aucun pilote noyau ne revendique déjà le module.
Erreurs fréquentes
- Scanner le mauvais bus : le PMIC RK809 (audio/alimentation) siège sur un bus interne, pas sur le connecteur — s'aider de
of_node/fullnamepour trouver le bus câblé au header. - I2C désactivé par défaut : sans overlay activé (rsetup sous Radxa OS,
&i2c2 status="okay"en mainline),i2cdetect -lne montre rien qui corresponde au connecteur. - Se fier à un plan de brochage hérité du ROCK Pi 4 ou d'un vieux wiki : la doc Radxa elle-même a évolué entre révisions (page Revision Details) — vérifier le schéma V1.51 de sa carte.
- Alimenter un module 5 V dont les broches logiques ne sont pas 5V-tolérantes : rester en 3,3 V sur cette carte.
- Deux modules à la même adresse : prévoir un multiplexeur TCA9548A ou décaler l'adresse (ADR).
Autres tutoriels pour cette carte
- Faire clignoter une LED via le GPIO avec libgpiod
- Lire un bouton poussoir en Python avec python3-libgpiod
- Premier réseau : Ethernet double gigabit, Wi-Fi optionnel et SSH
- Installer et booter le système sur un SSD NVMe (M.2 M-Key)
- Surveiller température et fréquence CPU, piloter le ventilateur PWM
- Routeur / passerelle réseau double Gigabit avec OpenWrt et PoE
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash