Académique Documents
Professionnel Documents
Culture Documents
Introduction
I- Présentation du Raspberry Pi
1. Description
Le Raspberry Pi est un mini-ordinateur mono carte ayant toute les fonctionnalités d’un ordinateur
classique et offrant des moyens de communication avec l’environnement externe plus variés que
ceux offert par des ordinateurs classique. Il garantit aussi une très faible consommation ce qui
fait de lui un excellent ordinateur de bord.
2. Présentation physique
C’est un ordinateur mono-carte ayant connu plusieurs évolutions dont l’une des versions « le
model 3 B+ » est présenté ci-dessous
Figure1 : RASPBERRYPI3-MODB-1GB
Processor
USB 2.0 4x USB Ports 4x USB Ports 4x USB Ports 1x USB Port 1x USB Port 1x USB Port
1. Accessoires
Plusieurs outils et matériels sont nécessaires pour réaliser correctement la configuration et
l'initialisation du RasPi.
- Carte SD (au moins 4Go) et Pack NOOBS (l’utilitaire de configuration de RaspberryPi NOOBS
sera installé dans la carte SD intégralement vierge).
- Un câble HDMI relié d’une part au Rpi et d’autre part à un moniteur de type écran PC ;
- Un câble Ethernet;
2. Installation du raspberry pi
Le Raspberry Pi comme tout ordinateur a besoin dans un premier temps d’être installé par un
système d’exploitation qui dans la plus part des cas est Rasbian de la distribution Linux et en
suite programmé en utilisant un compilateur compatible au système d’exploitation installé. Il
est important de noter que le compilateur que Rasbian fourni par défaut est Pyton. Mais toute
fois un autre compilateur compatible peut s’exécuter sur Raspberry Pi.
a. Installation du raspberry pi
i. Description
Après l’acquisition des différents accessoires nécessaires pour configurer une raspberry pi,
l’installation d’un système d’exploitation compatible constitue la première étape de son
utilisation. Cette installation consiste à graver sur une carte SD le système d’exploitation
approprié.
Dans cette session nous nous intéresserons au système d’exploitation RASBIAN installé depuis
Windows.
- Cliquer sur le premier bouton à gauche pour sélectionner le système d’exploitation à installer.
- Le troisième bouton (à droite) devient actif, cliquer dessus pour graver le système sur la carte
mémoire.
Démarrer normalement le rasberry pi après avoir connecté un écran sur son port HDMI.
- Encerclé en rouge c’est l’adresse ip récupérée sur le raspberry pi. On valide sur « open »
- Une fenêtre de commande s’ouvre, entrer le nom d’utilisateur « pi» (par défaut) et le mot de
passe « rasberry » (par défaut)
Les entrées-sorties (E/S) du module RPi.GPIO acceptent des variables dédiées, des entiers
ou des booléens.
Ainsi, l'état haut peut valoir au choix GPIO.HIGH, 1 ou encore True. De même, l'état bas peut
valoir GPIO.LOW, 0 ou False.
2. Configuration générale
PIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
La détection de front est quelque chose d'important, et liée aux interruptions. Il existe trois façons
de procéder.
GPIO.wait_for_edge(channel, GPIO.RISING)
GPIO.add_event_detect(channel, GPIO.RISING)
While True:
if GPIO.event_detected(channel):
print("Bouton appuye")
Enfin, la dernière solution est celle qui est la plus proche du concept d'interruption sur
microcontrôleur. Pour ce faire, en cas d'événement, un thread parallèle est lancé en cas
d'interruption. Trois valeurs sont possibles : front montant (GPIO.RISING), front descendant
(GPIO.FALLING) ou bien les deux (GPIO.BOTH)).
Def my_callback(channel):
print("un evenement s'est produit")
#ici on ajoute une tempo de 75 ms pour eviter l'effet rebond
GPIO.add_event_detect(channel, GPIO.BOTH, callback=my_callback, bouncetime=75)
6. La PWM
La PWM pour Pulse Width Modulation consiste en un signal carré dont on fait varier le rapport
cyclique, en d'autres termes, dont on fait varier la durée de l'état haut, par rapport à l'état bas.
La PWM fonctionne comme un objet, en Python et sur Raspberry Pi. Il faut donc commencer par
créer une instance PWM, en déclarant le canal (channel) utilisé, ainsi que la fréquence désirée.
En cours de route, vous pourrez changer aussi bien le rapport cyclique, que la fréquence.
Bien que n'ayant pas été notée sur le brochage du connecteur du GPIO, pour des raisons de clarté,
la PWM est disponible sur GPIO18.
p = GPIO.PWM(channel, frequence)
p.start(rapport_cyclique) #ici, rapport_cyclique vaut entre 0.0 et 100.0
p.ChangeFrequency(nouvelle_frequence)
p.ChangeDutyCycle(nouveau_rapport_cyclique)
p.stop()
Pour information, une résistance de pull-up ou de pull-down a pour but d'éviter de laisser une
entrée ou une sortie dans un état incertain, en forçant une connexion à la masse ou à un potentiel
donné.
Nous allons ici piloter notre LED de deux façons. Tout d'abord, nous la ferons simplement
clignoter. Basique, mais incontournable. Par la suite, nous ferons varier son intensité via la PWM.
La LED sera branchée sur la broche (pin en anglais) 3 du GPIO (GPIO2).
Pour le PWM nous utiliserons cette dernière de manière à modifier la quantité d'énergie
transmise. Pour cela, nous choisirons une fréquence de 200 Hz, et le rapport cyclique évoluera
dans le temps.
Rapport = 10.0
sens = True
p = GPIO.PWM(12, 200)
p.start(rapport) #ici, rapport_cyclique vaut entre 0.0 et 100.0
Lorsque nous désirons lire l'état d'un bouton, nous avons deux solutions : venir lire l'état à
intervalle régulier, ou bien programmer une interruption et vaquer au reste du programme.
Les deux pattes de notre bouton seront branchées sur une masse et la broche 19 du GPIO
(GPIO10). Une résistance de pull-up sera également branchée entre une des pattes de +3,3V et
la broche 19.
Enfin, notre LED sera branchée cette fois entre une masse et la broche 12 (GPIO18).
Pour cette partie, nous utiliserons un afficheur LCD à base de HD44780, piloté non pas sur 8
bits, mais en mode 4 bits.
Malgré le fait que l'écran ne fonctionne qu'en 5V, nous pouvons tout de même le brancher en
direct sur le Raspberry, car nous ne recevons aucune donnée de l'écran, nous ne faisons que lui
envoyer des ordres. De fait, aucun souci d'incompatibilité.
Notre écran sera alimenté par du +5V. Le signal RS sera connecté à la broche 8 (GPIO14), enable
sur la broche 10 (GPIO15), et D4 à D7 sur les broches 3,5,7 et 11 (GPIO2, GPIO3, GPIO4,
GPIO17).
import RPi.GPIO
import adafruit_charlcd
lcd.clear()