🛠 Maîtriser les E/S sur Banana Pi BPI-CM5

Banana Pi BPI-CM5 : Module Compute SoC Amlogic A311D2 compatible Raspberry Pi CM4 · intermediaire · Apprenez à configurer et utiliser les broches GPIO pour interagir avec des capteurs et actionneurs sur le module BPI-CM5.

Objectifs

Ce tutoriel vise à vous initier à la programmation des entrées-sorties numériques (GPIO) sur le Banana Pi BPI-CM5. Contrairement aux microcontrôleurs, le BPI-CM5 est un module SoC puissant (Amlogic A311D2) qui nécessite une approche logicielle spécifique pour accéder aux périphériques physiques. Nous allons configurer une broche en sortie pour piloter une LED et lire l'état d'un bouton-poussoir. Cette compétence est fondamentale pour tout projet IoT ou de domotique utilisant ce module.

Matériel nécessaire

Étapes

  1. Identification des broches : Le BPI-CM5 utilise des connecteurs Board-to-Board compatibles CM4. Consultez la documentation technique de votre carte porteuse pour identifier le header GPIO physique. Les broches GPIO sont généralement numérotées de 1 à 40, mais les numéros logiques (BCM) diffèrent des numéros physiques. Pour ce tutoriel, nous utiliserons la bibliothèque RPi.GPIO ou lgpio adaptée à l'architecture ARM64.
  1. Préparation de l'environnement : Connectez-vous en SSH ou via un écran. Mettez à jour le système et installez les bibliothèques nécessaires. Sous Debian/Ubuntu :
sudo apt update
sudo apt install python3-rpi.gpio python3-pip

Si rpi.gpio ne fonctionne pas nativement sur Amlogic, utilisez lgpio :

sudo apt install python3-lgpio
  1. Câblage matériel :
  1. Programmation : Créez un fichier test_gpio.py :
import lgpio
import time

# Initialisation
handle = lgpio.gpiochip_open(0)

# Configuration GPIO 17 en sortie
lgpio.gpio_claim_output(handle, 17)
# Configuration GPIO 22 en entrée avec pull-up
lgpio.gpio_claim_input(handle, 22, lgpio.SET_PULL_UP)

try:
    while True:
        # Allumer la LED
        lgpio.gpio_write(handle, 17, 1)
        time.sleep(0.5)
        # Éteindre la LED
        lgpio.gpio_write(handle, 17, 0)
        time.sleep(0.5)
        
        # Lire l'état du bouton (0 si pressé grâce au pull-up)
        etat = lgpio.gpio_read(handle, 22)
        if etat == 0:
            print("Bouton pressé !")
except KeyboardInterrupt:
    pass
finally:
    lgpio.gpiochip_close(handle)
  1. Exécution : Lancez le script avec les droits root si nécessaire :
sudo python3 test_gpio.py

Vérification

Vous devez observer la LED clignoter à intervalle régulier. Lorsque vous appuyez sur le bouton, le message « Bouton pressé ! » doit s'afficher dans le terminal. Si la LED ne s'allume pas, vérifiez la polarité (anode/cathode) et la valeur de la résistance. Si le bouton est toujours considéré comme pressé, vérifiez le câblage vers la masse.

Pour aller plus loin

Explorez les interfaces avancées du BPI-CM5. Utilisez le bus I2C pour connecter un capteur de température (comme le DS18B20 ou un BME680) ou le bus SPI pour un affichage OLED. Le module dispose également de deux interfaces caméra MIPI-CSI ; essayez de capturer une image via OpenCV pour exploiter l'ISP 16 MP intégré, offrant des possibilités bien supérieures à un simple GPIO.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels