0% ont trouvé ce document utile (0 vote)
87 vues18 pages

TP 1.sys .Emb Raspberry

Ce document présente une introduction au Raspberry Pi ainsi qu'un TP pour prendre en main ce système embarqué. Le TP montre comment installer la librairie WiringPi, connecter des LEDs aux ports GPIO et programmer leur clignotement en C.

Transféré par

arij.ajili
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
87 vues18 pages

TP 1.sys .Emb Raspberry

Ce document présente une introduction au Raspberry Pi ainsi qu'un TP pour prendre en main ce système embarqué. Le TP montre comment installer la librairie WiringPi, connecter des LEDs aux ports GPIO et programmer leur clignotement en C.

Transféré par

arij.ajili
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L2 STIC

TP1 : Découverte de Raspberry Pi

I- Qu’est-ce que le Raspberry PI ?

Raspberry PI est un micro-ordinateur fonctionnant avec Raspbian. Raspbian est un système


d’exploitation libre basé sur la distribution GNU/Linux Debian, et optimisé pour le plus petit
ordinateur Raspberry Pi.

Ce système embarqué constitue un support d’apprentissage performant, très bon marché et


disposant d’une forte communauté sur le net. Il possède un processeur graphique, une carte
réseau (Ethernet), des liaisons USB, HDMI, audio/vidéo, ainsi que des entrées/sorties GPIO
permettant une connexion avec le monde physique.

L’objectif de ce TP est de réaliser une rapide prise en main d’un système embarqué au
travers d’un ordinateur Raspberry PI, de gérer les entrées sorties de la carte et de voir les
différents modes de connexion.

II- Caractéristiques de la carte Raspberry PI 3


1. La carte Raspberry PI 3 contient :
▪ Un processeur 64 bit à quatre cœurs ARM Cortex-A53, 1.2GHz, 64-bits

1/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

▪ 4 ports USB
▪ 40 pins GPIO : permettent de faire communiquer le Raspberry Pi avec le monde extérieur.
(on peut y connecter des leds, des capteurs …)
▪ Un port HDMI
▪ Un port Ethernet
▪ Audio/ video jack
▪ port CSI : permet de connecter un webcam
▪ port DSI : permet de connecter un écran
▪ un contrôleur des ports USB et du port Ethernet.

2/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

2. La valise met à disposition :

Capteurs :
▪ Capteur de lumière
▪ Capteur à ultrasons
▪ Capteur d’inclinaison
▪ Capteur de température et d’humidité
▪ Module RFID

Affichage :
▪ LEDs
▪ Matrice à LED 8 x 8
▪ Afficheur LCD 16 x 2 caractères
▪ Afficheur 4 digits à 7 segments

Modules divers :
▪ Buzzer actif
▪ Buzzer passif
▪ Boutons poussoirs

3. Ports GPIO
Il y’a 40 pins GPIO (Global Purpose Input Output). Ils permettent de faire communiquer le
Raspberry Pi avec le monde extérieur. (On peut y connecter des leds, des capteurs …)

3/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Le tableau suivant montre le nom de chaque pin GPIO, son numéro physique sur la carte (Pin#),
ainsi que son numéro dans la librairie WiringPi qui va être expliquée dans la suite du TP.

III- Démarrage de Raspberry PI

Tout d’abord, connectez le clavier et la souris aux ports USB de votre carte Raspberry.
Ensuite, branchez l’écran sur le secteur (port USB de votre pc). Vous brancherez
l’alimentation en dernier lieu (port USB de votre pc). Attention : il s’agit d’un matériel
fragile, manipulez-le avec précaution.
Le Raspberry et l'écran s'allument, au bout de quelques secondes. Vous êtes « sur le bureau » de
votre tout nouvel ordinateur.

4/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Conseil : Pensez dès à présent à connecter le Raspberry Pi à internet, il dispose de WiFi. Il suffit
de cliquer sur l'icône du WiFi en haut à droite de l'écran, de choisir votre réseau puis de saisir la
clé de sécurité. Sinon, le connecter directement à la box avec un câble Ethernet.

5/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Par défaut, le nom de la machine (le « hostname ») est « raspberrypi », le nom de l'utilisateur est
« pi » et son mot de passe est « raspberry ». D'où l'invite de commande qu'on peut voir quand on
ouvre le terminal : pi@raspberrypi (comprendre : c'est l'utilisateur « pi » qui a ouvert une session
sur la machine « raspberrypi »).

6/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

IV- Installation de la librairie WiringPi

WiringPi est une bibliothèque logicielle écrite en langage C permettant le contrôle des
ports GPIO du Raspberry Pi. WiringPi permet aux développeurs C/C++ d’accéder aux entrées-
sorties (ou GPIO) afin de piloter ou communiquer avec des composants matériels.
Etape1 : Récupérer la dernière version de WiringPi
$ git clone [Link]

Etape2 : Compiler et installer


$ cd wiringPi (on se place dans le bon répertoie)
$ git pull origin
$ sudo ./build

Appuyer sur Enter et le script build va automatiquement compiler le code source wiringPi et
l’installer ensuite sur Raspberry Pi.
Pour vérifier que l’installation est bien achevée, on tape les commandes suivantes :
$ sudo gpio -v

$ sudo gpio readall

Cette commande affiche le tableau et l’état de tous les GPIO.

Si vous trouvez le tableau suivant, cela indique que wiringPi a été bien installée.

7/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

V- Partie pratique

V.1- Manipulation1 : Clignotement d’une LED


Dans cette manipulation, nous voulons faire clignoter une LED, et nous allons utiliser le langage
de programmation C.

Il y’a 2 façons pour connecter une LED à la carte Raspberry PI, comme le montre les 2 figures
suivantes.

Dans la première figure, l’anode de la LED est connectée à VCC (+3.3V), et la cathode est
connectée à un port GPIO de la carte Raspberry. Lorsque vous mettez un niveau bas sur le GPIO,
la LED s’allume, et si le niveau est haut, la LED s’éteint.

8/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Dans la deuxième figure, l’anode de la LED est connectée à la masse, et la cathode est connectée
à un port GPIO de la carte Raspberry. Lorsque vous mettez un niveau haut sur le GPIO, la LED
s’allume, et si le niveau est bas, la LED s’éteint.

Etape 1 : Nous allons choisir la LED bleue en haut et nous allons la connecter à la carte comme
le montre la figure suivante (l’anode est connectée au port GPIO 1 = 3.3V, et la cathode est
connectée au port GPIO 11):

Etape 2 : Ensuite, vous allez créer un fichier que vous nommerez led.c
$ sudo touch led.c

Vous pouvez ensuite ouvrir le fichier soit graphiquement, soit avec la commande linux vim, si
vous avez l’habitude de travailler avec vim :
$ sudo vim led.c

9/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Ecrivez ensuite le code suivant :

#include <wiringPi.h>
#include <stdio.h>
#define Led 0

int main(void)
{
if(wiringPiSetup() == -1 ){
printf ( ‘’setup wiringPi failed ! \n ‘’ ) ;
return -1;
}
pinMode (Led ,OUTPUT); //on indique que le GPIO.0 est en mode sortie
while(1) {
digitalWrite (Led ,LOW); //Led On
printf (‘’ led on …. \n‘’ ) ;
delay(500); //on attend 500ms
digitalWrite (Led ,HIGH); //Led Off
printf (‘’ led off …. \n‘’ ) ;
delay(500); //on attend 500ms
}
return 0;
}

Etape 3 : Il ne reste plus qu’à compiler le code en utilisant GCC, avec l’argument -lwiringPi :
$ ls (pour voir les fichiers contenus dans l’emplacement en cours)

$ sudo gcc led.c -o led -lwiringPi

Le paramètre -o sert à précider le nom de l’exécutable. Après que cette commande a été exécutée,
vous allez trouver un fichier nommé led . Il s’agit d’un exécutable.
$ ls (vous trouverez led.c et led)

Etape 4 : Pour exécuter le programme, tapez la commande suivante :


$ sudo ./led

10/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Le sudo permet d’exécuter comme si on était root, car il faut des droits root pour accéder aux
GPIO. A l’exécution du programme, votre LED devrait se mettre à clignoter. Vous pouvez en
ajouter d’autres, en définissant les GPIO selon la table des GPIO du Raspberry Pi, et vous pouvez
aussi changer la vitesse de clignotement.
Afin d’arrêter l’exécution, tapez Ctrl+C.

Voici l’explication des différentes fonctions utilisées :

• wiringPiSetup(void)
This initialises the wiringPi system and assumes that the calling program is going to be using the
wiringPi pin numbering scheme.

• void pinMode (int pin, int mode)


This sets the mode of a pin to either INPUT, OUTPUT, or PWM_OUTPUT. The pin number is
the number obtained from the pins table.

• void digitalWrite (int pin, int value)


Writes the value HIGH or LOW (1 or 0) to the given pin which must have been previously set as
an output.

• void delay (unsigned int howLong)


This causes program execution to pause for at least howLong milliseconds. Due to the multi-
tasking nature of Linux it could be longer. Note that the maximum delay is an unsigned 32-bit
integer or approximately 49 days.

11/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

V.2- Manipulation2 : Buzzer actif

Dans cette manipulation, on va apprendre à programmer le raspberry Pi afin d’émettre un bip du


buzzer actif.
Le buzzer est un composant électromagnétique ou piezzo électrique qui transforme l'énergie
électrique en vibration, donc en son.
Il existe 2 types de Buzzer : buzzer actif et buzzer passif. Dans cette manipulation, on s’intéresse
au buzzer actif. Ce buzzer produit du son tant qu’il est alimenté.
Nous allons programmer le Raspberry Pi de façon à alterner entre une sortie High et Low afin
que le buzzer émette des bips.
Cependant, le courant émis par raspberry Pi est un peu faible. Nous aurons donc besoin de
l’amplifier grâce à une résistance.

Etape1 : Branchement
On va connecter le buzzer à notre Raspberry selon le schéma suivant :

12/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Nous avons utilisé ici un transistor 8550 qui est un transistor PNP. Pour que le buzzer émette un
son, il faudra mettre le pin GPIO au niveau bas (LOW). Pour arrêter le son, il faut le mettre au
niveau haut (HIGH).

Etape2 : Programme
Créez un nouveau dossier nommé « Buzzer », dans lequel vous créez un fichier nommé buzzer.c,
et écrivez le code suivant, et complétez le code.

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

#define BeepPin 1

int main(void)
{
if(wiringPiSetup() == -1){ //when initialize wiringPi failed, print message to screen

13/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

printf("setup wiringPi failed !");


return -1;
}

pinMode(BeepPin, OUTPUT); //set GPIO0 output

while(1){
…………..
…………..
…………..
……………
}

return 0;
}

Etape3 : Compilation et exécution


Pour compilez, tapez la commande :
$ gcc buzzer.c -o buzzer -lwiringPi

Pour exécuter, tapez la commande :


$ sudo ./buzzer

Vous pouvez maintenant entendre le buzzer bipper.

14/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

V.3- Manipulation3 : Mesurer une distance

Dans cette manipulation, on va apprendre à mesurer une distance grâce au capteur de distance
ultrasons.
Ce capteur est équipé de deux modules : un module d'émission et un module de réception. Ces
modules sont reliés respectivement aux pins Trigger et Echo. Le module dispose aussi de deux
pins d'alimentation (+5V et GND).
En fonctionnement, le module envoie une onde devant lui via le module d'émission lorsqu'il
reçoit une commande sur son pin Trigger. L'onde va alors se déplacer dans l'air jusqu'à rebondir
sur un obstacle. C'est le retour de cette onde qui est ensuite captée par le module de réception et
va déclencher un signal sur le pin echo.
La différence de temps entre l'envoi de l'onde, et sa réception nous donne la distance parcourue
par celle-ci. Il suffit de diviser cette distance par deux pour avoir la distance jusqu'à l'obstacle
(car l'onde a parcouru deux fois cette distance : aller puis retour).
Pour rentrer un peu plus dans les détails techniques, une impulsion haute sur le pin Trigger
pendant 10us fait passer le Pin Echo en état HAUT. Ce pin restera dans cet état jusqu'à ce que
l'onde soit captée.
Voici quelques formules pour calculer la distance :

Le temps est en µS
Vitesse du son en m/s (340 m/s)

Formules utiles :
Distance en m = temps (en s) × vitesse du son / 2

Etape1 : Branchement
On va connecter les 4 pins du capteur à notre Raspberry Pi comme le montre la figure suivante :

15/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Etape2 : Programme
Créez un nouveau fichier nommé distance.c, et écrivez le code suivant et complétez le:

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>

#define Trig 4
#define Echo 5

void ultraInit(void)
{
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}

float disMeasure(void)
{

16/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

struct timeval tv1;


struct timeval tv2;
long start, stop;
float dis;

digitalWrite(Trig, LOW);
delayMicroseconds(2);

digitalWrite(Trig, HIGH); //produce a pluse


delayMicroseconds(10);
digitalWrite(Trig, LOW);

while(!(digitalRead(Echo) == 1));
gettimeofday(&tv1, NULL); //current time

while(!(digitalRead(Echo) == 0));
gettimeofday(&tv2, NULL); //current time

start = tv1.tv_sec * 1000000 + tv1.tv_usec;


stop = tv2.tv_sec * 1000000 + tv2.tv_usec;

dis = …………………………………. ; //count the distance

return dis;
}

int main(void)
{
float dis;

……………………….

……………………….

while(1){
dis = disMeasure();
printf("Distance = %f cm\n",dis);
delay(1000);
}

return 0;
}

17/18
Mme Emna Amouri TP Systèmes embarqués
L2 STIC

Voici l’explication des fonctions utilisées dans le code :

• void delayMicroseconds (unsigned int howLong)


This causes program execution to pause for at least howLong microseconds. Due to the multi-
tasking nature of Linux it could be longer. Note that the maximum delay is an unsigned 32-bit
integer microseconds or approximately 71 minutes.

• int digitalRead (int pin)


This function returns the value read at the given pin. It will be HIGH or LOW (1 or 0) depending
on the logic level at the pin.

• int gettimeofday(struct timeval *tv, struct timezone *tz);


This function can get the time. The tv argument is a struct timeval (as specified in <sys/time.h>),
and gives the number of seconds and microseconds.

struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};

The use of the timezone structure is obsolete; the tz argument should normally be specified as
NULL.
gettimeofday() return 0 for success, or -1 for failure.

Etape3 : Compilation et exécution


Pour compilez, tapez la commande :
$ gcc distance.c -o distance -lwiringPi

Pour exécuter, tapez la commande :


$ sudo ./distance

18/18
Mme Emna Amouri TP Systèmes embarqués

Vous aimerez peut-être aussi