Bonjour,
Dans le cadre du portage sur Raspberry Pi 5 d’un logiciel écrit en Python pour le robot Adeept AWR 4WD Smart Car, également utilisé sur d’autres modèles, j’ai rencontré un blocage avec le module de gestion du capteur ultrasonique HC-SR04. Pour résoudre cette problématique, j’ai sollicité l’aide de GPT-4o d’OpenAI.
Adaptation du logiciel Adeept au RPi 5 pour le capteur ultrasonique HC-SR04
Introduction
Dans le cadre du portage sur Raspberry Pi 5 d’un logiciel écrit en Python pour le robot Adeept AWR 4WD Smart Car, également utilisé sur d’autres modèles, j’ai rencontré un blocage avec le module de gestion du capteur ultrasonique HC-SR04. Pour résoudre cette problématique, j’ai sollicité l’aide de GPT-4o d’OpenAI.
Problèmes rencontrés et solutions appliquées
Absence de /sys/class/gpio
sur le RPi 5
Contrairement au Raspberry Pi 4B, le RPi 5 utilise
libgpiod
pour la gestion des GPIO, rendant obsolète l’utilisation de bibliothèques comme RPi.GPIO
.
Solution :
- L’accès classique via
/sys/class/gpio/
n’étant plus disponible, le scriptultra.py
a été modifié pour utilisergpiod
. - Remplacement des anciennes fonctions (
setwarnings()
,setup()
, etc.) par des appels àgpiod
.
Conflit avec GPIO 8
utilisé pour l’ECHO
Sur le RPi 5, GPIO 8 est réservé par défaut au SPI0 CS0, empêchant son utilisation pour l’ultrasonique.
A noter que sur un RPI4B utilisant la même clé SSD et donc la même configuration logicielle; GPIO 8 est aussi utilisé pour SPIO CS0 mais cette utilisation lorsque l’interfaçage SPI est activée n’entre pas en conflit avec le signal ECHO du HC-sr04.
Solutions testées :
- Désactivation temporaire du SPI via
raspi-config
pour tester → Cela permet au capteur de fonctionner correctement. - Réaffectation de l’ECHO à un autre GPIO libre → GPIO 25 a été sélectionné pour éviter les conflits.
Adaptation pour utilisation avec un HAT
Le HAT du robot utilise GPIO 8 pour l’ECHO du capteur ultrasonique. Si l’on souhaite conserver l’interfaçage SPI actif, il faut rediriger ce signal.
Solution matérielle :
- Pontage physique entre GPIO 8 et GPIO 25 :
- Couper la piste menant au GPIO 8 juste avant la broche.
- Relier cette piste à GPIO 25 (broche adjacente) à l’aide d’un pont de soudure ou d’un câble Dupont.