Vous êtes sur la page 1sur 12

ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

Chapitre 3 :

La carte Raspberry Pi
I- Définition
Le Raspberry pi est un nano ordinateur de la taille d'une carte de crédit que l'on peut brancher
à un écran
écran,, une souris et un clavier et utilisé comme un ordinateur standard. Sa petite taille, et
son prix intéressant fait du Raspberry pi un produit idéal pour tester différentes choses, et
notamment la création d'un serveur Web chez soi.
Le Raspberry Pi fonctionne sous le système d’expl d’exploitation
oitation Linux sur carte SD destiné à des
applications d’informatique embarquée.
Le Raspberry Pi a été imaginé en 2006 par David Braben et a débuté sa commercialisation à
la fin du mois de février 2012.

Le Raspberry Pi possède un processeur ARM11 à 700 MHz. Il inclut 1, 2 ou 4 ports USB, un


port RJ45 et 256 Mo de mémoire vive pour le modèle d'origine jusqu'à 4 Go sur les dernières
versions).
II- Connecteurs d’extension
Les connecteur
connecteurs d’extension supportent
supporte les entrées/sorties parallèles ainsi que la plupart des
bus de communication.

La carte Raspberry Pi AU :2023/202


24 PAGE: 1
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

1- Ports USB
Ceux-cici sont utilisés pour connecter une souris et un clavier. Tu peux également connecter
d’autres composants, tels qu’une clé USB.
2- Emplacement pour carte SD
On insère la carte SD dans cet emplacement. C’est ici que sont stockés le système
d’exploitation et tes fichiers.
3- Port Ethernet
Il est utilisé pour connecter le Raspberry Pi à un réseau avec un câble. Le Raspberry Pi peut
également se connecter via le réseau local sans fil.
4- Prise audio
On peux connecter un casque ou des haut
haut-parleurs
parleurs ici.
5- Port HDMI
C’est ici qu’on connecte le moniteur
moniteur (ou le projecteur) que’on utilisera pour afficher la sortie
du Raspberry Pi. Si ton moniteur est équipé de hauthaut-parleurs,
parleurs, tu peux les utiliser également
pour entendre le son.
6- Connecteur d’alimentation Micro USB
C’est là qu’on connecte une alimentation électrique
électrique. On doit toujours faire ceci en dernier,
après avoir connecté tous tes autres composants.
7- Ports GPIO
Le port GPIO (General purpose input/output) supporte les GPIO (entrées/sorties binaires)
mais également les sorties PWM, les périphériques de communication (UART, I2C, SPI) et
les alimentations 5v et 3V3. Les broches peuvent avoir des fonctions différentes suivant
qu’elles sont activées en tant que GPIO ou périphérique de communication.
communication. En revanche, le
GPIO ne peut traiter que des signaux numéri
numériques
ques de 0 à 3,3 V. Pour le traitement d’un signal
analogique, il faudra utiliser un convertisseur analogique numérique (CAN) comme le
MCP3008 par exemple.

La carte Raspberry Pi AU :2023/202


24 PAGE: 2
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

a) Bus i²c
On présente généralement i²c (inter integrated circuit) comme le plus simple des bus de
communication utilisés dans l'électronique moderne. Il s'appuie simplement sur deux signaux
appelés SDA (Serial Data) et SCL (Serial Clock), sans oublier la masse commune entre les
équipements. Il s'agit d'une communication bidirectionnelle half
half-duplex – où chacun ne parle
qu'à son tour – reposant sur une communication série synchrone. Le protocole permet de
mettre en communication un composant maître (généralement le microprocesseur) et
plusieurs périphériques esclaves. Plusieurs maîtres peuvent partage
partagerr le même bus, et un même
composant peut passer du statut d'esclave à celui de maître ou inversement. Toutefois la
communication n'a lieu qu'entre un seul maître et un seul esclave. Notons également que le
maître peut également envoyer un ordre à tous ses esclaves simultanément (par exemple une
mise en sommeil ou une demande de réinitialisation).

Au niveau électrique, le protocole utilise des signaux alternant entre des niveaux bas et hauts,
le plus fréquemment il s'agit de {0, 5V} ou de {0, 3.3V}. Le signal d'horloge SCL est produit
par le maître. Le signal de données SDA est mis au niveau haut ou bas par le maître ou
l'esclave suivant la phase de communication. Pendant toute la durée du créneau haut du signal
d'horloge SCL, le signal de données SDA do doit
it être maintenu au niveau haut ou bas suivant
que l'on transmet un 1 ou un 0.

Exemple : BME280 : capteur de température, d'humidité et de pression atmosphérique petit,


précis et économe en énergie.
Compléter les liaisons nécessaires du capteur BME280 à la carte raspberry Pi 3 B+.
Compléter les liaisons nécessaires de la diode LED liée au GPIO12 de la même carte
raspberry.

La carte Raspberry Pi AU :2023/202


24 PAGE: 3
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

b) Bus SPI
Une liaison SPI (pour Serial Peripheral Interface
Interface)) est un bus de données série synchrone
baptisé ainsi par Motorola,
Motorola, au milieu des années 1980 qui opère en mode full-duplex duplex. Les
circuits communiquent selon un schéma maître-esclave,
maître , où le maître contrôle la
communication. Plusieurs esclaves peuvent coexister sur un même bus, dans ce cas, la
sélection du destinataire se fait par une ligne dédiée entre le maître et l'esclave appelée « Slave
Select (SS) ».

Avantages :

 Communication Full duplex


 Débit plus important qu'un bus I2C
 Flexibilité du nombre de bits à transmettre ainsi que du protocole en lui-même
lui
 Simplicité de l'interface matérielle
o Aucun arbitre nécessaire car aucune collision possible
o Les esclaves utilisent l'horloge du maître et n'ont donc pas besoin d'oscillateur propre
 Partage d'un bus commun pour l'horloge, MISO et MOSI entre les périphériques

Liaison SPI avec un maître et trois esclaves

Le bus SPI utilise quatre signaux logiques :

 SCLK — Serial Clock, Horloge (généré par le maître)


 MOSI — Master Output, Slave Input (généré par le maître)
 MISO — Master Input, Slave Output (généré par l'esclave)
 SS — Slave Select, Actif à l'état bas (généré par le maître)

Une transmission SPI typique est une communication simultanée entre un maître et un
esclave :

 Le maître génère l'horloge et sélectionne l'esclave avec qui il veut communiquer par
l'utilisation du signal SS
 L'esclave répond aux requêtes du maître

La carte Raspberry Pi AU :2023/202


24 PAGE: 4
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

À chaque coup d'horloge le maître et l'esclave s'échangent un bit. Après huit coups d'horloges
d'horl
le maître a transmis un octet à l'esclave et vice versa. La vitesse de l'horloge est réglée selon
des caractéristiques propres aux périphériques.
Exemple : RFID-RC522
RC522 :

III-- Installation du système d’exploitation et configuration de


l’environnement de travail

1- Rasbian
Raspbian est un système d’exploitation libre basé sur la distribution GNU/Linux Debian, et
optimisé pour le plus petit ordinateur du monde, la Raspberry Pi.
Raspbian ne fournit pas simplement un système d’exploitation basique, il est aussi livré avec
plus de 35 000 paquets, c’est-à
c’est à-dire
dire des logiciels pré
pré-compilés
compilés livrés dans un format optimisé,
pour une installation facile sur votre Raspberry Pi via les gestio
gestionnaires
nnaires de paquets.
La Raspberry Pi est une framboise merveilleuse, mais elle reste néanmoins dotée d’une
puissance inférieure à celle d’un ordinateur moderne. Par conséquent, il est préférable
d’installer un système optimisé pour la Raspberry.
Raspbian a été créé dans cette optique, et il est donc tout particulièrement adapté à la
Raspberry.

La carte Raspberry Pi AU :2023/202


24 PAGE: 5
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

2- Installation
nstallation de Raspbian
La carte SD se comportera comme un disque dur sur un ordinateur classique. Cette dernière
contiendra donc toutes vos données et votre OS.
Avant de commencer Formater la carte SD SDFormatter.
Pour commencer, je vous donne rendez-vous
rendez vous ici :
https://www.raspberrypi.org/downloads/raspbian/ afin de télécharger notre OS, Raspbian.
Raspbian
Vous avez deux choix : Raspbian et Raspbian Lite,, le premier premier sera l'OS
avec interface graphique et le second sera sans.. Une fois ce dernier téléchargé, vous devez
télécharger Win 32 Disk Imager (ou similaire sur Linux/Mac) à cette adresse :
https://sourceforge.net/projects/win32diskimager
Une fois ces deux fichiers téléchargés, il nous faut écrire sur la carte SD notre
image Raspbian en utilisant Win 32 Disk Imager.

3- Démarrage de l’environnement Raspberry

Une fois le Rasbian est installé sur la carte SD SD, branchez les éléments suivants sur
votre Raspberry PI et commencer à travailler
travailler.
 Clavier et souris en USB
 Ecran avec port HDMI
 Câble Ethernet (ou connexion Wifi)
 Câble HDMI
 Chargeur Micro-USB
Micro USB
 La carte SD
Une fois ceci fait vous allez tomber sur cette fenêtre:

L'OS étant "livré" avec l'utilisateur de base : Pi et le mot de passe : raspberry il est
critique de le changer de suite ! Pour cela, rendez vous dans le terminal et saisissez
la commande suivante :
passwd

Tapez ensuite le mot de passe voulu.


Je vous conseille également de mettre à jour votre Pi avec les commandes suivantes :
sudo apt
apt-get
get update
sudo apt
apt-get upgrade
Vous avez maintenant un OS prêt à être utilisé.
utilisé . Nous allons donc passer à
la configuration "de
" base".

La carte Raspberry Pi AU :2023/202


24 PAGE: 6
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

4- Connexion en SSH

Secure Shell ((SSH


SSH)) est une fonctionnalité de Linux qui va vous permettre d’ouvrir
une connexion sur votre Raspberry Pi à partir de votre ordinateur hôte. SSH Etant
directement installé dans les dernières versions de Raspbian,
Raspbian , vous n'avez plus qu'à
vous rendre dans l'icône en haut à gauche sur votre Desktop,
Desktop et allerler dans
l'onglet Raspberry Pi Configuration comme ceci :

IV-- Programmer
rogrammer en Python sur Raspberry Pi
Pour écrire votre premier programme, rendez
rendez-vous
vous dans le menu de Raspbian et allez
dans : Programming > Thonny Python IDE

La carte Raspberry Pi AU :2023/202


24 PAGE: 7
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

Une fenêtre s’ouvre et c’est ici que vous pourrez écrire votre code en Python.
Dans la partie à droite « Source », écrivez la ligne suivante :

print ('Hello World")

Puis enregistrez votre code en allant dans le menu « File > Save » (Je vous conseille de
créer un dossier où vous stockerez vos fichiers python avant pour rester organisé.)
Enregistrez votre fichier avec l’extension « .py », par exemple « helloworld.py »
Vous allez ensuite pouvoir lancer le programme en cliquant sur « Run »
Vous devriez voir apparaître :
« Hello World »

1- F
Faire
aire clignoter une LED à l'aide d'un Raspberry Pi
Pour relier la LED au Raspberry Pi, on va avoir besoin d'une résistance. En effet, les
LEDs fonctionnent avec une tension et une intensité donnée par le constructeur.
Si les tensions et intensités ne sont pas données par le constructeur, mettre une
résistance de 100
100ΩΩ est en général
g énéral suffisant.
Pour savoir quelle valeur optimale de résistance choisir, il suffit d'appliquer les lois
des mailles et d'ohm comme sur le schéma ci ci-dessous
dessous.

La carte Raspberry Pi AU :2023/202


24 PAGE: 8
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

Pour une led fonctionnant en 2V,


2V 20mA,, il faudra donc :
R = (3.3
(3.3-2)/0.02 = 65Ω
Si la valeur de résistance calculée n'existe pas, prendre la résistance qui a la valeur la
plus proche.

La carte Raspberry Pi AU :2023/202


24 PAGE: 9
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

Code python :

1- F
Faire
aire clignoter une LED à l'aide d'un Raspberry Pi

2- Lecture d'un bouton


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

La carte Raspberry Pi AU :2023/202


24 PAGE: 10
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

Code Python :
# Import des modules
import RPi.GPIO
import time

# Initialisation de la numerotation et des E/S


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

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


# et on attend que le bouton soit relache
while True:
state = GPIO.input
GPIO.input(19)
if not state:
# on a appuye sur le bouton connecte sur la broche 19
GPIO.output(12
GPIO. 12,, GPIO.HIGH)
while not state:
state = GPIO.input
GPIO.input(19)
time.sleep
time.sleep(0.02) ) # Pause pour ne pas saturer le
processeur
GPIO.output(12
GPIO. 12,, GPIO.LOW)
time.
time.sleep
sleep(0.02) ) # Pause pour ne pas saturer le
processeur
3- 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 carte Raspberry Pi AU :2023/202


24 PAGE: 11
ISSAT MAHDIA COURS: Architecture et Programmation des Cartes programmables Mr Abdelkarim ELBAATI

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
channel)) utilisé, ainsi
que la fréquence désirée. En cours de route, vous pourrez changer aussi bien le rapport
cyclique
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.
Code python :
p = GPIO.
GPIO.PWM( (channel,
channel, frequence)
p.start
start(rapport_cyclique)
rapport_cyclique) #ici, rapport_cyclique vaut entre
0.0 et 100.0
p.ChangeFrequency
ChangeFrequency(nouvelle_frequence)
ChangeFrequency nouvelle_frequence)
p.ChangeDutyCycle
ChangeDutyCycle(nouveau_rapport_cyclique)
ChangeDutyCycle nouveau_rapport_cyclique)
p.stop
stop()

Exemple :
Nous ferons varier l’intensité d’une diode LED via la PWM
PWM.
Pour la PWM, nous devrons brancher notre LED sur la GPIO18 (broche 12).
# Import des modules
import RPi.GPIO
import time

# Initialisation de la numerotation et des E/S


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

Rapport = 10.0
sens = True

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

# On fait varier l'intensite de la LED


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

La carte Raspberry Pi AU :2023/202


24 PAGE: 12

Vous aimerez peut-être aussi