Gestion GPIO et RPi5 Python

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

:one: Absence de /sys/class/gpio sur le RPi 5

:point_right: 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.

:white_check_mark: Solution :

  • L’accès classique via /sys/class/gpio/ n’étant plus disponible, le script ultra.py a été modifié pour utiliser gpiod.
  • Remplacement des anciennes fonctions (setwarnings(), setup(), etc.) par des appels à gpiod.

:two: Conflit avec GPIO 8 utilisé pour l’ECHO

:point_right: 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.

:white_check_mark: Solutions testées :

  1. Désactivation temporaire du SPI via raspi-config pour tester → Cela permet au capteur de fonctionner correctement.
  2. Réaffectation de l’ECHO à un autre GPIO libreGPIO 25 a été sélectionné pour éviter les conflits.

:three: Adaptation pour utilisation avec un HAT

:point_right: 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.

:white_check_mark: 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.