Introduction au GPIO sur le Raspberry-Pi (1/2)

gpio01

L’un des points les plus intéressants sur le Raspberry-Pi (et malgré tout encore délaissé sur le site..) est la partie GPIO !

Ainsi, je vais donc faire dans ce billet une petite introduction sur le sujet. Cela dans le but de déjà savoir de quoi ça parle et à quoi cela va bien pouvoir nous servir par la suite.

Définition du GPIO :  Les ports GPIO (General Purpose Input/Output) soit entrée/sortie sont des ports qui sont très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l’électronique embarquée. Selon la configuration, ces ports peuvent fonctionner aussi bien en entrée qu’en sortie.

Les périphériques GPIO comportent un ensemble de ports d’entrée/sortie qui peuvent être configurés pour jouer soit le rôle d’une entrée, soit le rôle d’une sortie.

Le GPIO : A quoi ça sert ?

L’interface GPIO permet une extension des fonctionnalités du Raspberry-Pi. Les broches permettent ainsi au Raspberry-Pi d’avoir un accès au « monde extérieur ». Notamment en agissant en sortie depuis des LED, des afficheurs LCD, des capteurs, ou encore lire l’état d’un interrupteur (on/off).

Description du connecteur

Le connecteur GPIO (schéma ci-dessous) est composé de 26 broches dont 17 sont dédiées au GPIO (permets des changements d’état on/off). Les autres broches ont le rôle d’alimentation (3.3v, 5v) et de terre (ground).

Description des broches GPIO

Description des broches GPIO

Le connecteur dispose ainsi de différents types de connexion :

  • Broches pour une interface I2C. (permet de se connecter sur du matériel avec seulement 2 broches.)
  • Broches utilisables en entrée ou sortie numérique. Également dite « tout ou rien ».
  • Broches Rx et Tx. (Communication avec des périphériques séries.)
  • Broches pouvant être utilisé en PWM (« Pulse Width Modulation »)ou PPM (« Pulse Position Modulation »).
  • Une interface SPI.

Le numéro de GPIO n’est pas sa position sur le connecteur, mais son numéro dans les registres de la puce ARM BCM2835.

Exemple de fonctionnement

Afin de mieux assimiler les notions de GPIO, nous allons développer avec  l’allumage d’une LED.

Schéma électrique

Schéma électrique

Pour commencer, voici ci-dessus le schéma d’un circuit électrique simple correspondant à se que l’on peut réaliser avec notre Raspberry-Pi.

Nous avons donc, une batterie (3.3v – RPI) qui émet un courant vers un commutateur (Switch on/off)  qui le dirige vers une source lumineuse (LED). (La résistance étant présente pour protéger la LED).

Après le schéma électrique, repassons maintenant au Raspberry-Pi avec le schéma « physique » comme ci-dessous.

Allumage d'une LED depuis le GPIO

Schéma « Physique » du GPIO

Nous allons donc redéfinir les éléments vu précédemment.

Lors de l’utilisation du GPIO le Raspberry va effectuer en même temps le rôle de batterie (3.3v) et de commutateur (Switch).

Les broches spécifiques GPIO peuvent passer à l’état On/Off (High/Low en terme « machine »). Soit :

  • Quand la broche est On (High) > le courant de 3.3v passe dans le circuit.
  • Quand la broche est Off (Low) > aucun courant ne circule.

Explication du schéma « physique » : 

La LED et connecté à une broche GPIO (qui peut transmettre un courant de 3.3v) et à une broche de « terre » (qui est à 0v. Représente la partie négative de la batterie).

Une fois le branchement effectué, il ne reste qu’a écrire un programme pour pouvoir modifier l’état de broche On/Off (High/Low).

Comment modifier l’état des broches ? (lecture/modification)

Pour modifier l’état des broches (On/Off) est ainsi pour voir éteindre ou allumer la source lumineuse vu précédemment (LED), il nous faut passer à la partie logiciel.

Il existe plusieurs méthodes pour changer l’état des broches GPIO. Voici ci-dessous 3 méthodes avec un exemple d’utilisation pour chacune.

Depuis WiringPi :

WiringPi est une librairie écrite en C permettant l’accès au GPIO du BCM2835 utilisé par le Raspberry Pi. (Partagés par Gordon).

Exemple pour passer l’état de la broche 16 (GPIO 23) à 1 :

pi@rpi:~ # gpio -g write 23 1

Depuis WebioPi :

Webiopi est une application web qui permet de contrôler les broches GPIO du raspberry depuis une interface web. L’interface permet ainsi de changer l’état d’une broche de « IN » à « OUT » ou inversement comme l’image ci-dessous.

(Je réaliserai bientôt un tutoriel complet pour mettre en place cette solution.)

Page Web de "Webiopi"

Page Web de « Webiopi »

Depuis le Shell :

Voici un exemple pour passer l’état de la broche 16 (GPIO 23) à 1 :

pi@rpi:~ # cd /sys/class/gpio/
pi@rpi:/sys/class/gpio # ls

export     gpiochip0  unexport

pi@rpi:/sys/class/gpio # echo 23 > export
pi@rpi:/sys/class/gpio # ls

export     gpio24     gpiochip0  unexport

pi@rpi:/sys/class/gpio # cd gpio23/
pi@rpi:/sys/devices/virtual/gpio/gpio23 # ls

active_low  direction   edge        subsystem   uevent      value

pi@rpi:/sys/devices/virtual/gpio/gpio23 # echo out > direction
pi@rpi:/sys/devices/virtual/gpio/gpio23 # cat value

0

pi@rpi:/sys/devices/virtual/gpio/gpio23 # echo 1 > value

Câbles d’interface

Il existe de nombreuses façons de relier les différents éléments au Raspberry-Pi. Vous pouvez utiliser notamment une  carte Pi-cobbler. Surement la méthode la plus simple pour commencer vos expérimentations. (Solution que nous développerons dans la deuxième partie de l’article).

Vous avez également la possibilité de fabriquer un câble par vous même ! comme le montre très bien l’excellent tutoriel du site faitmain.org.

Conclusion

Voilà, j’espère que cette première partie sur le GPIO vous à plu et surtout qu’elle vous a éclairé ! 😉

Dans la deuxième partie de cet article, nous mettrons en pratique les éléments définis ci-dessus.

A Bientôt !


Source: wikipedia, raspberry-pi.org, wiring-pi, Faitmain.org.

7 Comments

  • Olivier

    Reply Reply 29 septembre 2014

    Hello,
    Excellente entrée en matière sur le port GPIO 🙂

    Pour ceux que ça intéresse, voici plusieurs exemples d’utilisation du GPIO du Raspberry Pi 🙂

    – Servos moteurs, joypad et WiFi : http://www.magdiblog.fr/gpio/gpio-servos-moteurs-joypad-et-wifi/
    – Capteurs de température : http://www.magdiblog.fr/gpio/gpio-capteurs-de-temperature/
    – Télémètre à ultrason : http://www.magdiblog.fr/gpio/gpio-telemetre-a-ultrason-srf02/
    – Téléinfo EDF : http://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/

    • Régis

      Régis

      Reply Reply 29 septembre 2014

      Salut Olivier,
      et Merci 😉
      Sympa tes tutos sur le GPIO ! Il faut que je prenne le temps de regarder ça en détail 😉
      Bonne continuation dans tes projets 🙂

  • jeanjean

    Reply Reply 7 juillet 2015

    Bonjour,

    Superbe article, merci ! Juste une chose :

    « Quand la broche et On (High) » , devrait être « Quand la broche EST On (High) ».

    • Régis

      Régis

      Reply Reply 7 juillet 2015

      Bonjour,

      Merci, c’est corrigé ! 😉

  • Vincent

    Reply Reply 12 janvier 2017

    Bonjour, je voulais simplement demander une clarification par rapport aux entrées 5 ou 3.3 volt du gpio. Dans votre exemple, vous dite que le courant doit partir d’un 3.3 volts pour finir à un ground. Je le comprend. Cependant, dans votr exemple, le cable part de la borne 12 qui est une borne GPIO et non 3.3 volt. Je suis perdu. Merci de préciser.

  • Thomas

    Reply Reply 12 novembre 2018

    Bonjour,
    Très bon article !
    J’aimerais savoir le logiciel utilisé pour réaliser les schémas de montage électrique svp.
    Merci

    • Régis

      Régis

      Reply Reply 12 novembre 2018

      Bonjour Thomas,

      Merci beaucoup pour ce retour !

      Concernant le logiciel, j’ai utilisé Fritzing pour réaliser les différents schémas de montage. C’est une solution simple à utiliser et complète.

      A savoir qu’il existe également d’autres solutions comme Digikey ou encore Easyeda.

      Bonne continuation !

Leave A Response

* Denotes Required Field