Une caractéristique puissante du Raspberry Pi est la rangée de broches GPIO (entrée/sortie à usage général) le long du bord supérieur de la carte. Une tête GPIO à 40 broches se trouve sur toutes les cartes Raspberry Pi actuelles (non remplie sur Pi Zero et Pi Zero W). Avant le Pi 1 Model B+ (2014), les cartes comprenaient un en-tête plus court de 26 broches.
Toutes les broches GPIO peuvent être désignées (dans le logiciel) comme broche d’entrée ou de sortie et utilisées à des fins très diverses.
Note : la numérotation des broches GPIO n’est pas dans l’ordre numérique ; les broches GPIO 0 et 1 sont présentes sur la carte (broches physiques 27 et 28) mais sont réservées à une utilisation avancée (voir ci-dessous).
Voltages
Deux broches 5V et deux broches 3V3 sont présentes sur la carte, ainsi qu’un certain nombre de broches de masse (0V), qui ne sont pas configurables. Les broches restantes sont toutes des broches 3V3 à usage général, ce qui signifie que les sorties sont réglées sur 3V3 et que les entrées sont tolérantes au 3V3.
Sorties
Une broche GPIO désignée comme broche de sortie peut être réglée sur haut (3V3) ou bas (0V).
Entrées
Une broche GPIO désignée comme broche d’entrée peut être lue comme haut (3V3) ou bas (0V). Ceci est facilité par l’utilisation de résistances internes pull-up ou pull-down. Les broches GPIO2 et GPIO3 ont des résistances pull-up fixes, mais pour les autres broches, cela peut être configuré dans le logiciel.
Plus
En plus d’être de simples dispositifs d’entrée et de sortie, les broches GPIO peuvent être utilisées avec une variété de fonctions alternatives, certaines sont disponibles sur toutes les broches, d’autres sur des broches spécifiques.
- MWM (modulation de largeur d’impulsion)
- MWM logicielle disponible sur toutes les broches
- MWM matérielle disponible sur GPIO12, GPIO13, GPIO18, GPIO19
- SPI
- SPI0 : MOSI (GPIO10) ; MISO (GPIO9) ; SCLK (GPIO11) ; CE0 (GPIO8), CE1 (GPIO7)
- SPI1 : MOSI (GPIO20) ; MISO (GPIO19) ; SCLK (GPIO21) ; CE0 (GPIO18) ; CE1 (GPIO17) ; CE2 (GPIO16)
- I2C
- Données : (GPIO2) ; Horloge (GPIO3)
- Données EEPROM : (GPIO0) ; Horloge EEPROM (GPIO1)
- Série
- TX (GPIO14) ; RX (GPIO15)
GPIO pinout
Il est important de savoir quelle broche est quelle broche. Certaines personnes utilisent des étiquettes de broches (comme le circuit imprimé RasPiO Portsplus, ou la feuille Raspberry imprimable).
Une référence pratique est accessible sur le Raspberry Pi en ouvrant une fenêtre de terminal et en exécutant la commande pinout
. Cet outil est fourni par la bibliothèque Python GPIO Zero, qui est installée par défaut sur l’image de bureau Raspberry Pi OS, mais pas sur Raspberry Pi OS Lite.
Pour plus de détails sur les capacités avancées des broches GPIO, voir le diagramme de brochage interactif de gadgetoid.
Programmer avec GPIO
Il est possible de contrôler les broches GPIO en utilisant un certain nombre de langages et d’outils de programmation. Consultez les guides suivants pour commencer :
- GPIO avec Scratch 1.4
- GPIO avec Scratch 2
- GPIO avec Python
- GPIO avec C/C++ en utilisant l’interface standard du noyau via libgpiod
- GPIO avec C/C++ en utilisant la bibliothèque tierce pigpio
- GPIO avec Processing3
Avertissement : bien que la connexion de composants simples aux broches GPIO soit parfaitement sûre, il est important de faire attention à la façon dont vous connectez les choses. Les LED doivent avoir des résistances pour limiter le courant qui les traverse. N’utilisez pas de 5V pour les composants 3V3. Ne connectez pas les moteurs directement aux broches GPIO, utilisez plutôt un circuit de pont en H ou une carte contrôleur de moteur.
Permissions
Pour utiliser les ports GPIO, votre utilisateur doit être membre du groupe gpio
. L’utilisateur pi
en est membre par défaut, les autres utilisateurs doivent être ajoutés manuellement.
sudo usermod -a -G gpio <username>