Wiring Pi

I – Que sont la Raspberry Pi et le GPIO ?

Qu’est-ce que le Raspberry ? Le Raspberry Pi est un micro ordinateur de la taille d’une carte de crédit, vendu à bas prix, nu (sans boitier ni écran, alimentation, clavier ou souris…). Il a été créé par la fondation caritative Raspberry Pi, dont le but était d’encourager l’apprentissage de l’informatique. Différents OS peuvent être installés sur ce micro-ordinateur, principalement des distributions Linux, comme Debian ou Rasbian, mais aussi Windows 10 IoT Core, ou Android Pi.

Son prix d’achat peu élevé a pour but de stimuler l’utilisation de matériel de récupération, mais aussi de s’en servir pour des projets ou l’achat de composants d’ordinateur classiques n’est pas possible ou logique, comme par exemple dans la réalisation de projets de domotique, de média center, d’électronique embarqué…

Le micro ordinateur peut être alimenté en micro USB, sous réserve d’une puissance suffisante, par un transformateur, une batterie, ou d’autres solutions, cequi permet de ne pas limiter les usages qui peuvent en être fait. Doté de plusieurs ports USB, un port RJ45, un port HDMI, ainsi qu’un port DSI (pour un écran LCD) et un port CSI (pour une caméra), ainsi, les configurations peuvent être multiples.

Mais le port le plus « important », surtout dans le contexte de cette contribution, c’est le port GPIO.

Qu’est-ce que le GPIO ? Ce port, appelé General Purpose Input/Output permet de brancher bon nombre de composants électroniques divers et variés, comme des capteurs, des LEDs, des interrupteurs, ou bien d’autres choses encore. Le GPIO est composé de 40 pins, répartis entre les alimentations en 5v, en 3,3v, une interface SPI, une interface I2C, ainsi que 17 pins d’usage libre.

 

II – Qu’est ce que la bibliothèque WiringPi ?

A – Introduction à WiringPi

WiringPi est une bibliothèque écrite en langage C, dont le but est d’améliorer l’accès et l’utilisation du port GPIO de la Raspberry Pi. Elle n’est pas limitée au C et au C++, mais il faut alors utiliser différents wrapper pour les langages Python, Ruby, et Perl.

Comme dit plus haut, le port GPIO et composé de 40 pins qui peuvent transporter des signaux et des bus, et certaines broches peuvent être programmées en entrée digitale ou en sortie digitale. Les interfaces SPI, I2C, UART peuvent elles aussi être programmées comme des entrées ou sorties digitales lorsqu’elles ne servent pas comme bus de données.

La bibliothèque WiringPi inclus un utilitaire GPIO en ligne de commande, qui peut être utilisé pour programmer et configurer les broches GPIO comme décrit précédemment. La bibliothèque peut aussi être utilisée avec des cartes d’extension du port GPIO, qui permet de gérer des entrées analogiques bien que le Raspberry Pi ne soit pas équipé pour une telle utilisation au départ. Il rend donc possible et facilite l’utilisation de la carte Gertboard, ainsi que d’autres cartes du même genre…

B – Les avantages de l’utilisation de WiringPi

La bibliothèque offre de nombreux avantages, dont ceux cités dans l’introduction, comme la gestion d’entrée analogiques sans avoir à faire appel à un convertisseur analogique/numérique, mais simplement à une carte d’extension, qui sera gérée simplement à l’aide de la bibliothèque WiringPi.

Un autre des avantages de WiringPi est la gestion des pins du GPIO. En effet, WiringPi « renomme » et redéfini les noms de chaque pin, afin de ne plus avoir à appeler chaque pin par son nom originel. Ainsi, l’utilisation du GPIO est rendu bien plus simple, et grâce aux différentes fonctions de WiringPi, il est possible de régler le pin comme un pin d’entrée, ou de sortie, mais aussi de simuler, à l’aide des résistances de pull up ou pull down de la Raspberry pi, la valeur du pin.

Cette façon de renommer les pins du GPIO, en plus de rendre leur utilisation plus simple, permet, en cas de changement de modèle de Raspberry Pi, de garder un programme fonctionnel, et d’éviter ainsi les erreurs. En effet, entre les modèles A, B et 3, le nombre de pins a augmenté, mais aussi les emplacements sont différents…. Ainsi, par exemple, sur le premier modèle, à un pin donné sera affecté une fonction, comme l’interface SPI, tandis que sur le second modèle, il pourra être affecté a une autre fonction. Car sans le WiringPi, lorsque l’on cherche à utiliser un pin, on l’ « appelle » par son nom physique, par le nom de sa position dans le GPIO. Avec WiringPi, on renomme donc chaque pin avec sa fonction, ainsi, lors d’un changement de modèle de Raspberry Pi, c’est WiringPi qui redirigera correctement les informations reçus ou émises par les pins du GPIO.

C – Exemples de code :

Il est donc possible, à l’aide du WiringPi, d’exécuter simplement bon nombre de programmes utilisant le GPIO, comme les trois exemples disponibles dès l’installation de la bibliothèque de WiringPi.

Le code permettant le clignotement est très simple :

#include <wiringPi.h>

main ()

{

wiringPiSetup () ;

pinMode (0, OUTPUT) ;

for (;;)

{

digitalWrite (0, HIGH) ; delay (500) ;

digitalWrite (0,  LOW) ; delay (500) ;

}

}

On peut noter dans ce code, la façon de définir l’entrée ou la sortie d’un pin avec « pinMode (0, OUTPUT) ;». On remarque aussi de quelle façon on allume ou on éteint la LED, en réglant la valeur du pin à 1 (HIGH) ou à 0 (LOW).

 

II – Cas pratique : deux interrupteurs et deux LEDs :

 

Pour ce cas, on va donc réutiliser une partie du code vu en exemple, mais aussi l’adapter pour y intégrer les deux interrupteurs, et différencier les deux leds.

 

 

 

 

 

Dans ce cas, avec un branchement approprié, le contrôle des deux LEDs devient alors possible.

Laisser un commentaire

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