Table des matières

Sommaire Raspberry Pi sous Linux

Raspberry Pi - Le port GPIO

[Mise à jour le 7/7/2019]

Ces opérations sont décrites ci-dessous.


1. Aspect matériel

1.1 Le connecteur GPIO du raspberry Pi 3

Les broches GPIO1) du Raspberry Pi 3 sont reliées à un connecteur 40 points. 26 broches GPIO sont accessibles (GPIO2 à GPIO27). Ce sont des entrées/sorties2) logiques capables de fournir ou de recevoir des signaux sous la forme de tensions (0 ou 3,3V). Certaines broches permettent de constituer un bus (I2C, SPI, UART).

2. Aspect logiciel

2.1 Mise à jour du module RPi.GPIO

Le module RPi.GPIO facilite l'accès aux GPIO en Python. Il est installé par défaut dans Raspbian. Pour effectuer une mise à jour, consulter ce lien.

Ce module n'est pas prévu pour des applications temps réel.

2.2 Numérotation des broches dans le programme

Dans RPi.GPIO, il existe deux façons de numéroter les broches d'entrée / sortie dans un programme Python.

*.py
GPIO.setmode(GPIO.BOARD)

Exemple 1 : une LED est connectée à la broche 37 du connecteur

*.py
LED = 37
GPIO.setmode(GPIO.BOARD) # On précise que 37 est le numéro de la broche du connecteur
GPIO.setup(LED,GPIO.OUT) # Cette broche doit se comporter comme une sortie
*.py
GPIO.setmode(GPIO.BCM)

Exemple 2 : une LED est connectée à la broche 37 du connecteur mais repéré par la fonctionnalité du SOC

*.py
LED = 26
GPIO.setmode(GPIO.BCM) # On précise que 26 est le numéro de canal du SOC
GPIO.setup(LED,GPIO.OUT) # Cette broche doit se comporter comme une sortie

2.3 Exemples de mise en oeuvre du GPIO

*.py
#!/usr/bin/python3
import Rpi.GPIO as GPIO
print("vers : " + GPIO.VERSION)
print(GPIO.RPI_INFO)
blink.py
import RPi.GPIO as GPIO # module de gestion du GPIO
import time #module de gestion du temps
 
# Identification de la broche utilisée
LED = 37 # Une LED est connectée sur la broche 37
GPIO.setmode(GPIO.BOARD)
# Autre solution
#LED = 26
#GPIO.setmode(GPIO.BCM)
 
#Configuration de la broche en sortie
GPIO.setup(LED,GPIO.OUT)
 
while True:
    GPIO.output(LED,GPIO.HIGH) # Activation de la LED
    time.sleep(1) # Attente 1s
    GPIO.output(LED,GPIO.LOW) # Désactivation de la LED
    time.sleep(1)

Pour aller plus loin...

PWM, Interruptions, I2C, SPI : Developper.com

1)
Les ports GPIO (anglais : General Purpose Input/Output, littéralement Entrée-sortie à usage général) sont des ports d'entrées-sorties très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l'électronique embarquée.Wikipédia
2)
Dans un système à base de processeur, de microprocesseur, de microcontrôleur ou d'automate, on appelle entrées-sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output ou encore E/S pour Entrées/Sorties. Wikipédia