Le GPIO du Raspberry Pi
Description de l’interface GPIO
Le chapitre Description technique présente le GPIO (General Purpose Input/Output = entrée/sortie pour usage général) ainsi que ses révisions. Il est important de se référer à ce chapitre avant de connecter le Raspberry Pi à des éléments extérieurs.
Le GPIO a considérablement évolué depuis sa première version. Certaines broches ont changé de fonction au fil des versions et le nombre de broches est passé de 26 à 40. Les 26 premières broches du GPIO des Raspberry Pi Zero et Raspberry Pi 3 sont strictement identiques à celles du Raspberry Pi modèle B Rev.2. Ceci assure la compatibilité entre ces modèles et permet d’utiliser des cartes additionnelles de la génération précédente.
Reportez-vous au tableau présentant le brochage du GPIO dans le chapitre Description technique.
1. Fonctions disponibles
Les broches GPIO du Raspberry Pi sont reliées à un connecteur 40 points J8, situé sur un bord de la carte. Les broches du connecteur sont réparties sur deux rangées de 20 broches. 26 broches GPIO sont accessibles (GPIO 2 à GPIO 27).
Ce sont des entrées/sorties numériques capables de fournir et de recevoir des signaux numériques 1 et 0 sous la forme de tensions 0 volt et 3,3 volts.
Certaines broches peuvent être utilisées différemment pour fournir un bus I2C, un bus SPI ou une E/S UART. Dans ce cas les broches concernées ne peuvent plus être utilisées comme entrées-sorties numériques.
Le brochage du connecteur GPIO est rappelé dans le schéma suivant. Le numéro du GPIO sur les SoC BCM2835 et BCM2837 figure sur les broches aux extrémités du connecteur. Les broches impaires sont à gauche, les paires sont à droite.
Le GPIO est identique sur les BCM2835 et BCM2837. Dans la suite de ce chapitre le SoC sera désigné par BCM283x.
![images/15RI10N.png](https://www.eni-training.com/download/3f2408db-3bcb-48d6-9da1-95d77f47e84c/images/15RI10N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
2. Valeurs limites (V et I)
Comme tout circuit électronique, les ports du GPIO ont des limitations en tension...
Utilisation du GPIO
Sur le Raspberry Pi, l’accès au GPIO peut se faire directement en ligne de commande ou en utilisant des bibliothèques ou des interfaces développées dans ce but. Pour visualiser l’état d’une sortie GPIO, la diode LED (Light Emitting Diode = diode électroluminescente) est un moyen simple et facile à mettre en œuvre.
1. Configuration utilisée
Les tests sont réalisés avec un Raspberry Pi 3 tournant sous Raspbian. Le Raspberry Pi est relié à une carte d’essais par un câble Pi Cobbler.
![images/15RI01N.png](https://www.eni-training.com/download/3f2408db-3bcb-48d6-9da1-95d77f47e84c/images/15RI01N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
2. Allumer une diode LED
Les programmeurs ont une coutume : le premier programme qu’ils réalisent dans un langage de programmation affiche "Hello world" ou "Bonjour monde". Cette coutume a été transposée dans le monde des systèmes embarqués : le premier programme consiste à faire clignoter une LED.
![images/15RI12N.png](https://www.eni-training.com/download/3f2408db-3bcb-48d6-9da1-95d77f47e84c/images/15RI12N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
La LED utilisée est une diode à lumière blanche qui émet de la lumière lorsqu’elle est parcourue par un courant dans le sens direct. Le repérage des pattes d’une LED est représenté sur le schéma ci-dessus. La cathode est la patte la plus courte du composant. Elle correspond également au méplat situé sur la collerette de la LED.
![images/15RI15N.png](https://www.eni-training.com/download/3f2408db-3bcb-48d6-9da1-95d77f47e84c/images/15RI15N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
La diode LED blanche peut être reliée à la broche GPIO 24 de deux manières.
-
La première méthode (à gauche sur le schéma ci-dessus) allume la LED lorsque le niveau de sortie de la broche GPIO 24 est haut (3,3 volts). L’anode est reliée à la broche GPIO 24 et la cathode rejoint la masse via une résistance destinée à limiter le courant.
-
La seconde méthode (à droite sur le schéma ci-dessus) allume la LED lorsque le niveau de sortie de la broche GPIO 24 est bas (0 volt). La cathode est reliée à la broche GPIO 24. L’anode reçoit les 3,3 volts au travers d’une résistance.
Dans les deux cas, la tension présente aux bornes de l’ensemble diode-résistance se répartit entre les deux composants. La courbe caractéristique de la LED impose une tension de 2,7 volts à ses bornes. Le reste de la tension disponible 3,3 volts - 2,7 volts = 0,6 volt apparaît...