Académique Documents
Professionnel Documents
Culture Documents
Travaux Pratiques
Semestre 3
2022/2023
1
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
1. Objectifs du TP :
- Configuration du OS.
2
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Avec le Raspberry Pi 4, la Fondation introduit un HUB USB 3 doté d’un bus PCI
Express. Ceci supprime les limitations rencontrées avec l’USB sur les versions
précédentes.
3
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Le Raspberry Pi 4 est équipé d’un circuit doté des fonctions Wi-Fi 802.11ac à
2,4 GHz et 5 GHz, mais aussi de la communication simultanée Bluetooth et
Bluetooth Low Energy (BLE). Le circuit est recouvert par un couvercle
métallique qui protège l’ensemble des perturbations électromagnétiques (EMI).
4
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
- Audio numérique
La sortie audio numérique se fait sur le port HDMI au format 5.1. L’audio est
combiné à la vidéo.
Si votre écran indique qu’il possède des haut-parleurs, le son est transmis par
défaut sur la sortie HDMI ; sinon, il est émis via la prise analogique. Vous pouvez
également forcer manuellement la sortie dans l’utilitaire raspi-config, dans le
fichier config.txt ou en faisant un clic droit sur l’icône en forme de haut-parleur,
en haut à droite de la barre des tâches.
- Audio analogique
La sortie audio analogique se fait sur un jack stéréo de 3,5 mm à quatre pôles.
Cette sortie fournit un signal d’environ 1 volt crête à crête. Ce signal est trop faible
pour être utilisé avec un casque audio ou un haut-parleur. Il faudra impérativement
utiliser un amplificateur.
Sur le Raspberry Pi 4, l’audio numérique est sélectionné par défaut. Il faudra
modifier la configuration pour utiliser la sortie analogique.
5
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Figure 6 : GPIO
2.9. L’alimentation
Elle fait appel à une prise USB-C (Figure ci-dessous). Il n’y a pas d’interrupteur
marche/arrêt et c’est l’insertion ou le retrait de la prise micro USB-C qui joue le
rôle d’interrupteur.
6
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Il est situé sous la carte du Raspberry Pi 4, le connecteur est prévu pour accueillir
une carte micro SD.
La vitesse d’accès à la carte micro SD est passée de 25 Mb/s (Raspberry Pi 3) à
50 Mb/s sur ce modèle. Le connecteur est de type "push-pull". Il n’y a pas de
verrouillage mécanique lors de l’insertion de la carte, et pour ressortir la carte, il
suffit de tirer dessus.
3. Manipulations :
7
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Cela montre votre nom d'utilisateur et le nom d'hôte du Pi. Ici, le nom d'utilisateur
est pi et le nom d'hôte est raspberrypi.
9
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Il suffit ensuite d'installer les outils xrdp et tightvncserver. Pour cela, entrez
simplement ces deux commandes :
sudo apt-get install tightvncserver
sudo apt-get install xrdp
Lorsque l'on vous demande si vous êtes sûr de vouloir installer des paquets
supplémentaires, entrez 'y' (ou 'o') puis validez avec Enter.
10
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
4. Transfert de fichiers :
Exemples:
11
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Sous Windows ou Mac OS, nous n’allons pas transférer les fichiers directement
en lignes de commandes, mais nous allons utiliser une interface graphique à la
place. Nous allons en fait utiliser un outil appelé FileZilla.
5. Programmation en C ++
Pour introduire les programmes et assurer leur exécution, nous allons utiliser IDE
Geany. Geany est un environnement de développement intégré petit et léger. Il a
été développé pour fournir un IDE petit et rapide, qui n'a que quelques
dépendances d'autres packages. Un autre objectif était d'être aussi indépendant
que possible d'un environnement de bureau spécial comme KDE ou GNOME -
Geany ne nécessite que les bibliothèques d'exécution GTK3.
12
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
int main()
{
string prenom;
cout << "Test d'ecriture et de compilation d'un programme C++ sur Raspbery PI " << endl ;
NB: Il existe une autre méthode pour introduire et exécuter les programmes sous
Raspberry Pi Os sans utiliser un IDE. Cela est effectué en se basant uniquement
sur des lignes de commandes.
13
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
5.2.1. Installation :
14
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
if(!bcm2835_init()) return 1;
15
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Bibliothèque wiringPi
1. Objectif du TP :
WiringPi est une bibliothèque C++ pour Raspberry Pi. Avec cette bibliothèque,
nous pouvons utiliser de nombreuses fonctionnalités fournies par les GPIO :
broches numériques, SPI, I2C, UART, etc.
Bien qu'il existe de nombreuses bibliothèques Python pour les GPIO Raspberry
Pi, C++ est assez en retard. Heureusement, il existe WiringPi.
16
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Pour s’assurer que la bibliothèque WiringPi a été installée avec succès. Essayez
d’exécuter la ligne de commande suivante qui permet d’afficher la version:
gpio –v
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
WiringPi comprend un utilitaire de ligne de commande gpio qui peut être utilisé
pour programmer et configurer les broches GPIO. Vous pouvez l'utiliser pour lire
et écrire les broches et même l'utiliser pour les contrôler à partir de scripts shell.
Avec cette commande, nous pouvons obtenir un aperçu complet de toutes les
broches disponibles sur la carte Pi (Figure1).
17
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Le tableau que nous voyons avec « gpio readall » est assez complet, il nous donne
beaucoup d'informations utiles. Le tableau est séparé en 2 parties, qui sont en
miroir, exactement comme le brochage du Raspberry Pi sur Figure 2.
Mode : une broche doit être définie dans un certain « mode » pour effectuer des
opérations. Les modes les plus courants pour les broches numériques sont INPUT
(vous pouvez lire la valeur à partir de la broche) et OUTPUT (vous pouvez écrire
une valeur sur la broche). On peut également remarquer le mode ALT0, qui est
ici utilisé pour le protocole I2C (SDA, SCL) et le protocole SPI (MOSI, MISO,
SCLK).
wPi : les numéros de broche réellement utilisés par la bibliothèque WiringPi. Cette
convention de numérotation a été établie il y a assez longtemps lorsque la
bibliothèque WiringPi a été écrite pour la première fois. Cela garantit que les
numéros de broche restent les mêmes pour toutes les versions de la carte.
Fonction Description
wiringPiSetup(void) Initialise le système wiringPi et suppose que le
programme développé va utiliser le schéma de
numérotation des broches wiringPi.
wiringPiSetupGpio(void) Ceci est identique à ci-dessus, mais cela permet
aux programme d'utiliser les numéros de broche
GPIO Broadcom (BCM)
pinMode (int pin, int mode) ; Définit le mode d'une broche sur INPUT,
OUTPUT ou PWM_OUTPUT.
digitalWrite (int pin, int value) ; Écrit la valeur HIGH ou LOW (1 ou 0) sur la
broche donnée qui doit avoir été préalablement
définie comme sortie.
pwmWrite (int pin, int value) ; Écrit la valeur dans le registre PWM pour la
broche donnée. La valeur doit être comprise
entre 0 et 1024.
19
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
20
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
2. Manipulations:
21
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Figure 5 : Programme de clignotement d’une seule Led en utilisant l’éditeur de texte Gnu Nano
- Compte rendu
22
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
- Compte rendu :
Par exemple : si j’ai entré deux nombres qui sont 12 et 10. La Led verte s’allume.
Q6 : Etablir un nouveau programme qui permet de faire clignoter la Led quand le bouton
poussoir est actionné.
23
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
Durant la séance, nous ferons appel aussi à l’une des bibliothèques fréquemment
utilisées dans la programmation de la carte. Il s’agit de RPi.GPIO.
Il existe deux versions de Python installées par défaut dans le Raspberry Pi OS,
la version 2 et la version 3. Pour découvrir le nombre exact de la version installée,
il suffit d’introduire les deux commandes suivantes :
python2 –version
python3 –version
wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz
tar -zxvf Python-3.9.9.tgz
cd Python-3.9.9
./configure --enable-optimizations
sudo make altinstall
Si Python est déjà installé. Et vous voulez effectuer une mise à jour de la version,
les commandes suivantes seront suffisantes :
24
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
python3
Puis on presse Entrée pour valider. Ensuite, on a plus qu’à écrire nos différentes
instructions et à presser Entrée afin que l’interpréteur les interprète
immédiatement.
print("hello world")
25
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
python2
Vous pouvez écrire un fichier Python dans un éditeur standard (Par ex : Nano) et
l'exécuter en tant que script Python à partir de la ligne de commande.
nano name.py
python3 name.py
4. Bibliothèque RPi.GPIO
La bibliothèque RPi.GPIO fournit une classe pour contrôler GPIO sur Raspberry
Pi. Cette bibliothèque Python est incluse dans Raspberry Pi Os, Dont ce n’est pas
la peine de l’installer. Autrement, la commande suivante peut assurer
l’installation :
pip est un gestionnaire de paquets pour Python. Cela signifie que c'est un outil qui
vous permet d'installer et de gérer des bibliothèques et des dépendances
26
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
La gestion des packages est si importante que pip est inclus dans le programme
d'installation de Python depuis les versions 3.4 pour Python 3 et 2.7.9 pour Python
2, et il est utilisé par de nombreux projets Python, ce qui en fait un outil essentiel.
Pour l’installer :
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
27
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
# On peut aussi demander la configuration etablie
configuration = GPIO.getmode()
GPIO.input(12)
Pour modifier l'état d'une sortie, il faut indiquer le numéro de la sortie, ainsi que
l'état désiré :
GPIO.output(12, GPIO.LOW)
state = GPIO.gpio_function(pin)
print(state)
28
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
5. Manipulations:
- Compte rendu
Q1- Essayez de faire clignoter trois Leds simultanément (Image du circuit).
Q2- Introduisez le script approprié avec des commentaires sur l’ensemble des instructions
utilisées.
29
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
PWM (Pulse Width Modulation) est une technique de modulation par laquelle la
largeur d'impulsion est modifiée tout en maintenant la fréquence constante.
Les signaux PWM peuvent être utilisés pour des applications telles que le contrôle
de la vitesse des moteurs à courant continu, la modification de l'intensité d'une
LED, le contrôle des servomoteurs, etc.
Raspberry Pi possède deux canaux PWM, à savoir PWM0 et PWM1. Les broches
PWM pour les deux canaux sont les suivantes :
30
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
5.2.3. Manipulation:
Nous allons générer un signal PWM sur Raspberry Pi. Cette sortie PWM est
connectée à une LED qui indiquera le changement d'intensité. La sortie PWM
utilisée est GPIO18.
31
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
- Compte rendu
Q3- Utilisez la technique PWM pour commander deux Leds qui s’allument en série. Ça
veut dire quand une Led s’éteint, l’autre commence à s’allumer (Image du circuit).
Q4- Introduisez le script approprié avec des commentaires sur l’ensemble des instructions
utilisées.
Dans cette manipulation, nous allons essayer de lire l’état d’un bouton poussoir.
Selon cet état, une Led s’allumera ou s’éteindra.
- Compte rendu
Q5 : Le script sur la figure ci-dessus n’est pas complet. Essayez de le compléter sans
erreur. Vous pouvez également développer votre propre programme. N’oubliez pas les
commentaires pour expliquer les instructions.
32
Travaux Pratiques – Systèmes d’exploitation embarqués EST Fès
TP 4 : Mini-projet
33