Vous êtes sur la page 1sur 6

Faculté des Sciences de Bizerte

Département Informatique

Classe : MP1 eSRV/DATA SC A-U : 2022/2023


Matière : TP IoT Durée : 1h30
Enseignante : SOUHIR BOUSSELMI

TP N°1
Gestion des GPIO de la carte Raspberry Pi

Objectif :
✓ Exploitation de l’interface GPIO de la carte Raspberry Pi
✓ Installer la librairie wiringPi en vue de gérer les entrées sorties.
1. Description de l’interface GPIO du Raspberry Pi
Les broches GPIO du Raspberry Pi sont reliées à un connecteur 40 points J8, situé sur un bord
de la carte. Ils sont réparties sur deux rangées de 20 broches, dont 26 sont accessibles (GPIO 2 à
GPIO 27). Certaines broches peuvent être utilisées différemment pour fournir un bus I2 C, 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. Les broches impaires sont à gauche, les paires sont à droite.
Les entrées/sorties numériques permettent de fournir et de recevoir des signaux numériques « 1 »
et « 0 » sous la forme de tensions 0 volt et 3,3 volts. Le GPIO est identique sur les BCM2835
(Raspberry Pi Zero), BCM2837 (Raspberry Pi 3 A+ et B+) et BCM2711 (Raspberry Pi 4).

1
Faculté des Sciences de Bizerte
Département Informatique

Douze pins concernent l’alimentation. Les tensions d’alimentation 3,3 V et 5 V ainsi que la masse
sont accessibles sur les broches du GPIO pour alimenter des circuits extérieurs. Inversement, il
est possible d’alimenter le Raspberry Pi en 5 V à partir des broches du GPIO. Le GPIO fournit
deux broches 3,3 V, deux broches 5 V et huit broches de masse. Le tableau ci-dessous détaille
l’utilisation des broches du GPIO

Broches Utilisation Descriptif

6-9-14-20-25- Alimentation Masse


30-34-39

2-4 Alimentation +5V

1-17 Alimentation + 3,3 V

8-10 UART Ces deux broches donnent accès à un UART (Universal


Asynchronous Receiver Transmitter = émetteur-récepteur asynchrone
universel) qui pourra dialoguer avec un terminal ou tout autre
appareil possédant un port série. Ces broches sont la 8 : TXD
(Transmitted Data = données émises) et la 10 : RXD (Received
Data = données reçues).

19-21-23-24- Bus SPI Ces cinq broches fournissent un bus SPI (Serial Peripheral
26 Interface = interface de périphérique série). C’est un bus de
transmission de données série synchrone. Il est utilisé pour faire
communiquer des circuits intégrés. Les signaux sont SCLK (23)
(Serial Clock = horloge série), MOSI (19) (Master Out-Slave In =
émission du maître-réception de l’esclave), MISO (21) (Master In-
Slave Out = réception du maître-émission de l’esclave) et deux
signaux CE0 (24) (Chip Enable = sélection du circuit) et CE1 (26)
qui vont permettre de sélectionner l’esclave avec lequel le maître
va communiquer. Le Raspberry Pi ne fonctionne qu’en mode
maître et peut gérer nativement deux esclaves. Il est possible de
gérer plus d’esclaves en utilisant d’autres ports GPIO pour
commander les entrées CS des circuits utilisés.

3-5 Bus I2C Ces deux contacts fournissent un bus I2C. Il s’agit de SDA (3)
(Serial Data Line = ligne de données série) et SCL (5) (Serial Data
Clock = horloge de données série). Le bus I2C permet de piloter

2
Faculté des Sciences de Bizerte
Département Informatique

Broches Utilisation Descriptif

les nombreux circuits intégrés compatibles avec ce type de bus.

27-28 I2C EEPROM Ces deux broches ne doivent absolument pas être utilisées. Elles
sont réservées au dialogue avec l’EEPROM présente sur les
cartes d’extension répondant aux spécifications HAT (Hardware
Attached on Top = matériel venant au-dessus du Raspberry Pi).

7-11-12-13-15- GPIO Ces dix-sept broches sont des entrées/sorties numériques.


16-18-22-29-
31-32-33-35-
36-37-38-40

2. Utilisation des entrées/sorties


Les entrées/sorties de l’interface GPIO peuvent être contrôlés à l'aide de nombreux langages de
programmation (C , python, Java etc,….) , pour plus de détails vous pouves consulter le lien
suivant : (https://elinux.org/RPi_GPIO_Code_Samples#bcm2835_library).
Plusieurs bibliothéques/compilateurs en langage C pouvant être utilisés avec le Raspberry Pi
incluent : bcm2835, ArduPi, pigio. On peut aussi utiliser l’accès directe au registre (cette solution
est plus restrictive et compliquée.
Dans ces travaux pratiques on se propose d'utiliser une bibliothèque intégrée wiringPi,
programmée en C, permettant l'exploitation de la plupart des fonctions implémentées sur le
RaspberryPi et dont le développeur a souvent besoin : gestion des I/O, SPI, I2C, interface série,
PWM, timing, interruptions, etc. Le site web du projet réalisé par l'auteur : http://wiringpi.com/

3. Travail demandé
3.1 Installation et utilisation de la bibliothèque wiringPi
- Télécharger la bibliothèque wiringPi à l’aide de la commande ci-dessus, exécuter sur
Raspberry : « ~$ git clone https://github.com/WiringPi/ WiringPi.git »
- Créer le répertoire WiringPi : « cd WiringPi »
- Compiler et installer la bibliothèque : « ./build »
- Vérifier la version de la bibliothèque : « gpio –v »
- Visualiser la configuration de l’interface GPIO selon la bibliothèque : « gpio readall »

3
Faculté des Sciences de Bizerte
Département Informatique

- Saisir le code en C permettant de clignotter une led, réaliser le montage dont le brochage est
donné dans la figure ci-dessous et exécuter le code.

#include <stdio.h>
#include <wiringPi.h>

#define led 8

int main (void)


{
wiringPiSetup() ;
pinMode(led,OUTPUT);

while(1){
digitalWrite(led,LOW); // LED ON
delay(1000); // tempo 1000ms
digitalWrite(led, HIGH); // LED OFF
delay(1000); // tempo 1000ms
}
}

4
Faculté des Sciences de Bizerte
Département Informatique

3.2 Application : Défilement de 4 LED


Réaliser sur plaque a essai le brochage de la figure suivante, permettant d’effectuer un défilement
de 4 leds. Ecrire un programme en C permettant d’effectuer le défilement de 4 leds en utilisant
une boucle for. Transférerez le code en C sur la carte raspberry Pi pour exécution.

Remarques :

- Les broches GPIO 27, 17, 3 et 2 correspondent aux broches 2, 0, 9 et 8 selon la bibliothèque
wiringPI. Au début du programme, un tableau appelée LED est configurée pour stocker les
numéros de port des LED utilisées. Les ports GPIO où les LED sont configurés comme
ports de sortie et les LED sont éteint. Dans le programme principal, une boucle for est
configurée pour allumez et éteignez les LED connectées aux ports GPIO. Les temps ON et
OFF sont choisis comme 500 ms et 100 ms respectivement pour qu'un agréable effet LED
rotatif soit affiché.

5
-

Vous aimerez peut-être aussi