🛠 GPIO du CM4 : comprendre les banks 1,8 V / 3,3 V avant de câbler
Objectifs
Allumer une LED avec gpiozero tout en comprenant la particularité GPIO du CM4 : ses 28 signaux GPIO acceptent une signalisation 1,8 V ou 3,3 V par bank, la broche VGPIO_VREF de chaque bank étant reliée au rail choisi — contrairement au Pi 4B figé à 3,3 V. Vous vérifierez la tension réelle du bank avant de câbler un module, et vous apprendrez que la force de conduite par défaut est de 4 mA (configurable 1–8 mA) avec des pull internes d'environ 47 kΩ.
Matériel
- 1 × CM4 (variante au choix) sur IO Board CM4, Raspberry Pi OS 64 bits démarré
- 1 LED + résistance 330 Ω, plaque d'essai, fils
- Le jumper/sélecteur de tension GPIO de l'IO Board (position 3,3 V pour ce tuto)
- Connaître les broches Bank 2 réservées par le module (eMMC, hot-plug HDMI, LED ACT/boot USB) : elles n'apparaissent pas sur le connecteur et ne doivent pas être détournées
Code complet
# Installer les outils et repérer la config des broches
sudo apt update && sudo apt install -y pinctrl gpiod-tools
pinctrl -p | grep -E '^(17|22|27)' # fonction et pull de chaque broche
gpioget gpiochip0 17 # état logique lu sur GPIO17
#!/usr/bin/env python3
# blink_cm4.py — 10 clignotements sur GPIO17 (bank 0 de l'IO Board en 3,3 V)
# AVANT de câbler : vérifier la tension du bank (VGPIO_VREF) sur sa carte porteuse !
from gpiozero import LED
from time import sleep
led = LED(17)
for _ in range(10):
led.on; sleep(0.25)
led.off; sleep(0.25)
print("OK — GPIO17 piloté")
Vérification attendue
La LED clignote 10 fois à 2 Hz. pinctrl -p affiche gpio17 en gpio output pendant l'exécution, et le script se termine sans lever d'exception. Sur une carte porteuse personnalisée, mesurer au multimètre entre la broche VGPIO_VREF du bank et GND doit donner 3,3 V (ou 1,8 V si le rail 1,8 V est sélectionné).
Erreurs fréquentes
- Câbler un module 3,3 V sur un bank configuré en 1,8 V : le niveau haut ne dépasse pas 1,8 V et le module ne réagit pas (ou pire, l'inverse côté 1,8 V tolérant mal un signal 3,3 V).
- Oublier la résistance en série avec la LED : on tire au-delà de la force de conduite par défaut (4 mA).
- Utiliser des broches Bank 2 : elles sont réservées par le module (eMMC, HDMI hot-plug, ACT/boot) et ne sont pas cassables… mais pas disponibles.
- Chercher les broches du connecteur 40 broches d'un Pi standard : sur CM4, tout passe par les deux connecteurs 100 broches ou l'empreinte HAT de l'IO Board.
Autres tutoriels pour cette carte
- Premier démarrage d'un CM4 Lite depuis la microSD de l'IO Board
- Basculer le Wi-Fi du CM4 sur l'antenne externe U.FL (dtparam=ant2)
- Bootloader EEPROM du CM4 : maîtriser BOOT_ORDER via usbboot
- Ajouter une RTC au CM4 (PCF8523 sur I2C1 via dt-blob)
- Son sur CM4 : DAC I2S/PCM (PCM5102) sans prise jack
- Horodatage industriel : PTP IEEE 1588 sur le PHY Ethernet du CM4
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash