Vous êtes sur la page 1sur 13

CHAPITRE3 : COMMANDE PAR RASPBERRY PI

Introduction

L’évolution de la microélectronique a permis de développer des systèmes de plus en plus puissant


en terme de niveau de calcul et pouvant intégrer un grand nombre de fonctionnalité tels que des
environnements de programmation plus convivial et large, des modules de communication
utilisant les technologies les plus ressentes, une mémoire plus grande avec des vitesses de calcul
très satisfaisante ainsi qu’une très faible consommation énergétique ; c’est le cas pour le
Raspberry Pi qui reste un excellent outil de développement de système embarqué. On dit que
c’est un ordinateur de bord car alliant puissance, variété de moyens de communication, très
faible consommation.

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

Support de cours de commande par Raspberry Pi 1


3. Spécification technologique pour différents model

Le tableau ci-dessous donne les caractéristiques pour différents model du Raspberry Pi

Raspberry Pi 3 Raspberry Model B+ Model A+ Model A CMDK


Model B Pi 2 Model B

Processor Broadcom BCM2837


Broadcom Broadcom Broadcom Broadcom Broadcom
Chipset 64Bit ARMv7 Quad Core
BCM2836 32bit BCM2835 32bitBCM2835 32bitBCM2835 32bit
BCM2835 32bit
Processor powered Single
ARMv7 QuadCore ARMv6 SoC fullARMv6 SoC fullARMv6 SoC full
ARMv6 SoC full
Board Computer running
Processor powered HD multimedia HD multimedia HD multimedia
HD multimedia
at 1250MHz Single Board Computerapplications applications applications applications
running at 900MHz processor processor processor processor

GPU Videocore IV Videocore IV Videocore IV Videocore IV Videocore IV Videocore IV

Processor

Support de cours de commande par Raspberry Pi 2


Speed QUAD Core @1250 QUAD Core Single Core @700
Single Core @700
Single Core @700
Single C
MHz @900 MHz MHz MHz MHz @700 MHz

RAM 1GB SDRAM @ 1GB SDRAM @


512 MB 256 MB 256 MB 512 MB
400 MHz 400 MHz SDRAM @ SDRAM @ SDRAM SDRAM @
400 MHz 400 MHz @ 400 MHz 400 MHz
4GB eMMC
Storage MicroSD MicroSD MicroSD MicroSD SDCard

USB 2.0 4x USB Ports 4x USB Ports 4x USB Ports 1x USB Port 1x USB Port 1x USB Port

Power 2.5A @ 5V 1.8A @ 5V 1.8A @ 5V 1.8A @ 5V 1.2A @ 5V 1.8A @ 5V


Draw / voltage
GPIO 40 pin 40 pin 40 pin 40 pin 26 pin 120 pin
Ethernet Yes Yes Yes No No No
Port
Wi-fi Built in No No No No No
Bluetooth Built in No No No No No
LE
II- Installation du raspberry Pi

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).

- Une alimentation appropriée ;

- Un clavier et une souris USB qui seront reliés au Rpi ;

- Un câble HDMI relié d’une part au Rpi et d’autre part à un moniteur de type écran PC ;

- Un routeur permettant d’accéder à Internet (comme un box de fournisseur d’accès) ;

- 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.

Support de cours de commande par Raspberry Pi 3


NB. D’autres systèmes d’exploitation peuvent être installés notamment : Windows 10 LoT Core,
Android 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.

ii. Etapes d’installation de RASBIAN depuis Windows


Les étapes suivantes permettent d’installer RASPBIAN sur une carte SD afin qu’il tourne sur un
raspberry pi

- Télécharger Raspberry pi imager. Vous pouvez utiliser le lien


https://www.01net.com/telecharger/windows/Utilitaire/accessibilite/fiches/155343.html

- Installer Raspberry pi imager. Puis lancer l’application, la fenêtre suivante s’ouvre

- Insérer la carte mémoire dans l’espace réservé de votre ordinateur

- Cliquer sur le premier bouton à gauche pour sélectionner le système d’exploitation à installer.

- Une fois le système d’exploitation sélectionné, choisir la carte mémoire d’installation.

- Le troisième bouton (à droite) devient actif, cliquer dessus pour graver le système sur la carte
mémoire.

iii. Connection du raspberry pi au PC en SSH

Support de cours de commande par Raspberry Pi 4


Les étapes ci-dessous permettent de créer une connexion sécurisée entre le raspberry pi et un
ordinateur fonctionnant sous Windows. Le but étant de prendre le contrôle de la carte RasPi à
partir d’un poste distant :

Démarrer normalement le rasberry pi après avoir connecté un écran sur son port HDMI.

- Sur l’interface graphique, ouvrir « configuration du raspberry pi » puis s’accommoder à la


fenêtre suivante

Support de cours de commande par Raspberry Pi 5


- Ouvrir le terminal de commande et taper la commande

« Sudo raspi-ifconfig » et récupérer l’adresse marqué sur l’emplacement encerclé en rouge

- Le raspberry pi peut maintenant communiquer avec l’ordinateur si on installe le logiciel PUTTY

- 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)

III- Quelques commandes de configuration et contrôle des GPIO avec python


1. La bibliothèque GPIO
import RPi.GPIO as GPIO

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

Support de cours de commande par Raspberry Pi 6


Le Raspberry Pi autorise deux numérotations : celle de la sérigraphie du connecteur de la carte
(GPIO.BOARD), ou la numérotation électronique de la puce (GPIO.BCM). À vous de choisir
celle que vous voulez.
En noir la numérotation GPIO.BOARD. En rouge, la numérotation GPIO.BCM

PIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)

3. Configuration des entrées-sorties


Il faut toujours renseigner le processeur sur la direction des pins à utiliser. On donne ci-dessous
quelques exemples de configuration :
GPIO.setup(12, GPIO.IN) # broche 12 est une entrée numérique
GPIO.setup(12, GPIO.OUT) # broche 12 est une sortie numérique
GPIO.setup(12, GPIO.OUT, initial=GPIO.HIGH) # broche 12 est une sortie initialement a l'etat haut

4. Lire et écrire sur des pins d’entrées-sorties


- Lecture de l’état de la broche 12
GPIO.input(12)
- Ecrire sur la broche 12
GPIO.output(12, GPIO.LOW)
- Inversement d’état
GPIO.output(12, not GPIO.input(11))
- Remettre à zéro les sorties
GPIO.cleanup()

5. Interruption et détection de front

La détection de front est quelque chose d'important, et liée aux interruptions. Il existe trois façons
de procéder.

La première consiste à bloquer l'exécution du programme jusqu'à ce que l'événement se produise.

GPIO.wait_for_edge(channel, GPIO.RISING)

Le second paramètre peut ici valoir GPIO.RISING, GPIO.FALLING ou GPIO.BOTH.

Support de cours de commande par Raspberry Pi 7


La seconde solution est liée à l'utilisation d'une boucle. On ajoute des événements à écouter sur
un canal, et au sein de la boucle while, on teste si quelque chose s'est produit sur un des canaux
écoutés.

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()

7. Pull up et pull down

Support de cours de commande par Raspberry Pi 8


Afin d'éviter de laisser flottante toute entrée, il est possible de connecter des résistances de pull-
up ou de pull-down, au choix, en interne.

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é.

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)


GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
8. Mini projets
a) Gestion d’une LED

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.

# Import des modules


import RPi.GPIO as GPIO
import time # Initialisation de la numerotation et des E/S
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT, initial = GPIO.HIGH) # On fait clignoter la LED
while True:
GPIO.output(3, not GPIO.input(3))
time.sleep(0.5)

Support de cours de commande par Raspberry Pi 9


Pour la PWM, nous devrons brancher notre LED sur la GPIO18 (broche 12), qui est la seule à proposer
cette fonctionnalité.

# Import des modules


import RPi.GPIO
import time

# Initialisation de la numerotation et des E/S


GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT, initial = GPIO.LOW)

Rapport = 10.0
sens = True

p = GPIO.PWM(12, 200)
p.start(rapport) #ici, rapport_cyclique vaut entre 0.0 et 100.0

# On fait varier l'intensite de la LED


while True:
if sens and rapport < 100.0:
rapport += 10.0
elif sens and rapport >= 100.0:
sens = False
elif not sens and rapport > 10.0:
rapport -= 10.0
elif rapport == 10.0:
sens = True
p.ChangeDutyCycle(rapport)
time.sleep(0.25)

Support de cours de commande par Raspberry Pi 10


b) Lecture de bouton

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.

Une fois le bouton appuyé, nous attendrons le relâchement tout simplement.

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).

# Import des modules


import RPi.GPIO
import time

# Initialisation de la numerotation et des E/S


GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(19, GPIO.IN)

# Si on detecte un appui sur le bouton, on allume la LED


# et on attend que le bouton soit relache

Support de cours de commande par Raspberry Pi 11


while True:
state = GPIO.input(19)
if not state:
# on a appuye sur le bouton connecte sur la broche 19
GPIO.output(12, GPIO.HIGH)
while not state:
state = GPIO.input(19)
time.sleep(0.02) # Pause pour ne pas saturer le processeur
GPIO.output(12, GPIO.LOW)
time.sleep(0.02) # Pause pour ne pas saturer le processeur

c) Pilotage d'un afficheur LCD

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 = Adafruit_CharLCD.Adafruit_CharLCD(pin_rs=14, pin_e=15,


pins_db=[2,3,4,17])

lcd.clear()

Support de cours de commande par Raspberry Pi 12


lcd.message("Hello world !!!")

Support de cours de commande par Raspberry Pi 13

Vous aimerez peut-être aussi