1135300-4

[Raspberry] Découverte et utilisation du GPIO Header et des Pins Headers

Cet article a été rédigé il y a 4 années ! Il commence à dater, mais n'est pas forcément obsolète.. Lisez-le en gardant cela en tête !
Bonsoir, Je crois qu’il est l’heure de passer à la vitesse supérieur, niveau Raspberry ! Aujourd’hui on va faire du concret et découvrir ce que sont les GPIO Header et les Pins. Nous allons faire ensemble un pas en avant de pouvoir s’attaquer à de vrais projets avec le Raspberry et rentrer dans le monde réel !

I) Qu’est-ce que c’est et à quoi sert le GPIO Header ?

Soyons clair, voici les GPIO en image ! gpio   En effet ce sont de petites tiges métalliques.. Mais elles sont bien plus que ça puisque c’est le premier pas vers le monde réel ! Ces pins sont le moyen de communiquer avec le monde extérieur 🙂 Avec cela vous pouvez récupérer tout un tas d’informations ! Tout dépend de ce que vous en faites ! Voici quelques projets employant les GPIO :
  • Contrôle domotique, controlez une vraie lampe avec votre Raspberry !
  • PiFM, émettre une musique sur une fréquence lisible par votre radio!
  • Etc…
Des projets il y en a 1000 ! Vous comprendez qu’avec des GPIO on peut tout faire ! 🙂  

II) Comment se servir des GPIO ?

1.Installation des prérequis

Pour faire simple, en ce qui concerne les GPIO, le moyen le plus simple de les configurer, lire et écrire est d’utiliser le projet wiringPi. Il s’agit d’une bibliothèque très pratique qui fait l’unanimité sur les forums et cela est tout a fait justifié ! Biensur on pourrait s’en passer, mais cette bibliothèque vous fera gagner énormément de temps 🙂 Pour l’installer voici la démarche :
sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y install git-core git clone git://git.drogon.net/wiringPi cd wiringPi && ./build
  Une fois ces commandes lancées et l’installation terminée, il vous suffira de tester si tout c’est bien passé en lançant la commande suivante :
gpio -v
Si vous obtenez une réponse positive avec le numéro de la version, c’est gagné ! Passons à la pratique 🙂  

2. Le matériel pratique

a. Les Jumpers

Pour vous servir des GPIO je vous conseille fortement de vous acheter des jumpers female/female ou male/female ça peut toujours être pratique ! (pour quelques € sur eBay par exemple !)

jumper_malefemalejumper_femalefemale

De cette façon vous pourrez brancher vos jumpers à des circuit que vous aurez fait et vous amuser avec une plaquette de prototypage ! 🙂  

b. La Nappe IDE

nappe_gpio

Une nappe IDE dans ce genre par exemple (quelques € aussi) peut être assez pratique !

Toutefois, vous ne pouvez pas vous servir d’une nappe comme ça sur une plaque de prototypage, l’espacement des tiges est trop court pour y être inséré. En effet pour l’utiliser il vous faudra un adaptateur comme celui là par exemple.

914iso_MED

Vous pouvez carrément acheter un kit GPIO Cobbler Breakout avec la nappe IDE incluse. Toutefois, n’ayant pas envie de payer 10€. J’ai préféré le souder moi même pour 5€. C’est moins propre, mais c’est exactement le même résultat.. Note : Vous me direz, on peut toujours utiliser un jumper aussi, mais bon là ça devient vraiment pas beau.. ^^"   

3. Vos premiers pas

C’est bien beau d’avoir acheté pleins de cables et d’avoir installer wiringPi.. Mais maintenant qu’est-ce qu’on fait ? On va d’abord apprendre à connaitre chaque port à l’aide de ce mémo (révision 2) très pratique : p1header Quelques explications à propos des ports physiques, retourner votre Raspberry et observer les soudures du GPIO. Vous y verrez des soudures rondes, sauf une qui est carré. Le carré est le pin #1. C’est une norme. Il faut ensuite compter latéralement de un en un. On manipule généralement des pins avec des tensions de l’ordre de 3,3V Notes :
  • Autrement, il y a des pins rouge et noir, respectivement des pins 5V et des pins à la masse.
  • Enfin les pins 3,3V, en orange. (sauf TxD et RxD)
  • Les pins VERT sont ceux dont vous pourrez vous servir pour communiquer. Les autres sont réservés ! 🙂 Je vous le dis car j’ai mis un moment à comprendre ^^"
Attention : Je ne vous le dirai jamais assez.. Il ne faut JAMAIS relier un GPIO à 5V, car ce dernier le tolère.. Assez MAL ! Retenez simplement que un GPIO ça se relie à du 3.3V ! Malgré qu’il y ait une diode et une résistance pull-up, ces derniers ne protégeront pas votre précieux indéfiniment..

a. La première commande à connaitre est la suivante :

gpio readall
Cette commande donne le numéro WiringPi, GPIO et Physique de chaque pins ! Pour vous y retrouver avec tous ces pins. De plus vous pouvez y trouver le nom du gpio à ne pas confondre avec le numéro GPIO, le mode actuel de chaque pin et sa valeur ! Voici un exemple de ce que vous pouvez trouver si wiringPi ne subit pas trop de mises à jour ! readall Attention : Le schéma coloré P1 Header emploi le terme GPIO. A ne pas confondre avec la colonne GPIO du tableau ci-dessus. Il s’agit des NOMS des pins et non du numéro GPIO ! Tachez de bien faire la différence avant de continuer 🙂   

b. Le mode IN

Ce mode permet d’introduire des informations au Raspberry, des 0 ou des 1 fonction de la tension à ses bornes ! Pour configurer un pin en mode IN, lancez la commande suivante :
gpio mode in
<n> est à remplacer par le port WiringPi   Pour lire la valeur du pin lancez la commande suivante :
gpio read
  Note sur les tensions de seuils : On peut se demander dans certaines applications pratiques quand exactement un pin passe de l’état 0 à 1 et 1 à 0. Pour déterminer cela, j’ai mis en place sur une plaque de prototypage, le circuit suivant :

seuilIMG_1112

 J’ai relevé différentes tensions et j’ai pu observer la courbe suivante, en effet les pins suivent la courbe d’un Trigger de Schmitt ! seuil_gpio_result Je pense qu’il peut dans certains cas s’agir d’une information intéressante ! 🙂  

c. Le mode OUT

Ce mode permet d’envoyer des informations vers le monde extérieur ! En effet, c’est vous qui mettez à 1 ou à 0 un pin ici. Pour mettre le port en mode OUT, lancez la commande suivante :
gpio mode out
Où <n> est à remplacer par le port WiringPi   Pour écrire sur le pin en question (resp. mise à 0 ou mise à 1), il suffit enfin de lancer la commande suivante :
gpio write 0 gpio write 1
  Toutefois, il existe plusieurs autres modes très intéressant pour configurer les GPIO. Je n’ai jamais eu l’occasion de m’en servir, mais je pense que cela peut-etre très intéressant de se renseigner ! 🙂 Voilà à présent c’est à vous de faire des circuits !! 🙂  

III) On peut pas faire plus ?

Par soucis d’organisation de l’espace de travail sur le raspberry. Il est possible de souder des headers sur d’autres emplacements prévus à cet effet ! De cette façon, vous pouvez rajouter jusqu’à 4 headers sur votre plaque ! IMG_0988   Pour rentrer dans la généralité, on appelle en réalité les pins headers : Px. Ici, en rouge les emplacements sont P2,P3,P5,P6. En notant que P1 c’est les GPIO et P4 n’existe pas.

J’ai personnellement apporté quelques modifications sur ma carte.. À savoir, j’ai pris mon fer à soudé et j’ai soudé un rail de 8 pins sur P5 et une paire de pins sur P6. (P2,P3 ne m’ont jamais servi et servent surtout à alimenter plus qu’à communiquer il me semble..)

Attention : Si vous souhaitez en faire de même, faites bien attention de travailler hors tension. Il s’agit malgré tout d’une manipulation qui peut ruiner l’intégrité de votre carte si vous vous y prenez mal.. C’est donc une action que je ne recommande pas, si vous n’avez jamais soudé un composant ! ^^

IMG_0991IMG_0990

  Une fois soudé, voici le résultat.. encore en photo !

IMG_0994IMG_0993

Après la soudure, j’ai dû encore découper au cutter ma protection PiBow, car j’ai remarqué que P6 était isolé vis à vis de P5. J’ai donc aussi découper au cutter la dernière couche de mon Raspberry.

IMG_0983IMG_1001

  De plus pour fermer correctement la boite car les soudures P5 génaient, j’ai dû couper la première couche de ma PiBow.. La pauvvre petite !!! :’-( IMG_1008     De plus, j’ai remarqué que les jumpers que j’ai acheté (mais je crois que c’est standard) était trop haut pour que je puisse fermer le boitier et les laisser sur les pins headers ! J’ai donc récuperé un support d’angle femelle-male concernant P5 IMG_1116

À chaque problème sa solution ! AMAZZING !! 🙂

  Mais finalement quel était l’intérêt de ces 2 nouveaux headers ?
  • P5 permet de rajouter des ports pour communiquer avec le Raspberry, ainsi qu’une alim 5V, 3.3V et une masse, dont voici la description sur le papier, encore une fois, un mémo très utile..
p5header  
  • P6 permet d’éteindre son Raspberry. En effet cela laisse entrevoir la possibilité de couper l’alimentation de son raspberry autrement qu’en utilisant la commande "shutdown -h now" !!
 

Conclusion,

Vous voilà paré pour faire communiquer le Raspberry avec le monde réel ! Vous pouvez peut-etre déjà vous rendre compte un peu mieux des capacités de cette petite bête ! Alors laissez place à votre imagination ! 🙂 Et n’oubliez pas.. derrière un GPIO c’est du 3,3V sinon ça fume !! Lien pratique : http://elinux.org/RPi_Low-level_peripherals  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *