Vous êtes sur la page 1sur 23

I – Introduction

Ce cours vise à vous fournir l'essentiel des informations nécessaires afin de vous permettre de
créer vos propres projets, tout en exploitant au mieux le port GPIO.
Le port GPIO (General Purpose Input/Output, ou Entrées/Sorties pour un usage générique) mettra
à votre disposition de nombreuses entrées-sorties, une alimentation, un port SPI, un port I2C, et
un port série.
Après une rapide présentation du Raspberry Pi, de ses différentes versions existantes, et des
caractéristiques liées, nous nous pencherons sur le fonctionnement et la programmation du port
GPIO.
Enfin, nous finirons par une mise en pratique de la théorie que nous aurons vue précédemment.

II - Le Raspberry Pi
Qu’est-ce que la Raspberry Pi ?
La Raspberry Pi est ce que l’on appelle un nano-ordinateur monocarte. Plus simplement, on
pourrait résumer la Raspberry Pi en disant que c’est un ordinateur de la taille d’une carte de crédit
qui coûte environ 35€.
Très abordable en termes de prix, consommant peut d’énergie et disposant de connecteurs adaptés
à électronique, la Raspberry Pi est donc très adaptée pour apprendre la programmation, faire de
l’électronique, de la domotique, etc.

II-B - Les systèmes d'exploitation disponibles


Raspbian
Raspbian est le système d’exploitation de référence pour Raspberry Pi. Il est basé sur Linux
Debian et il est très régulièrement mis à jour.

Optimisé spécialement pour Raspberry Pi, c’est une


distribution polyvalente qui vous permettra de vous
familiariser très facilement avec le matériel.

Il existe plusieurs versions de Raspbian :

 Wheezy (basée sur Debian 7)


 Jessie (basée sur Debian 8)
 Stretch (basée sur Debian 9)
Le plus grand point fort de Raspbian n’est même pas l’OS en lui-même mais sa communauté !
Vous n’aurez aucun mal à trouver un autre passionné qui vous aidera en cas de problème ou alors
échanger sur les différentes améliorations futures qui rendraient l’OS encore meilleur !

Ubuntu Mate
Le très populaire Ubuntu a lui aussi décidé de développer un
environnement spécialement pour les nano-ordinateurs tel que le
Raspberry Pi. Cela a donné naissance à Ubuntu Mate.

Ubuntu Mate est également basé sur Debian et se révèle


particulièrement utile pour avoir un ordinateur de bureau basé sur un Raspberry Pi.

Il est un peu plus lourd que Raspbian mais s’adresse principalement aux utilisateurs déjà familiers
avec Ubuntu.
Windows 10 IoT Core
Windows 10 IoT Core est développé par Microsoft visant les
utilisateurs de Raspberry Pi mais il faut savoir qu’il est très
différent d’un Windows 10 classique.

Windows 10 IoT Core n’est pas destiné à une utilisation


d’ordinateur de bureau mais peut néanmoins se révéler très
intéressant pour les développeurs.

Les programmeurs pourront concevoir des programmes et applications PC via Windows Azure et
Visual Studio et les exécuter directement sur Raspberry Pi.

Il faut avouer que Microsoft a fait du bon travail sur Windows 10 IoT Core et qu’il se révèle très
utile pour les développeurs.

Il est également possible d'y retrouver, entre autres,


une Fedora, ou encore XBMC/Kodi, ou OSMX.
II-C - Modèles et caractéristiques
INSTALLER RASPBIAN SUR SON RASPBERRY
PI
Raspberry Pi Imager est le moyen rapide et facile d'installer le système d'exploitation Raspberry
Pi et d'autres systèmes d'exploitation sur une carte microSD, prête à être utilisée avec votre
Raspberry Pi.

Téléchargez et installez Raspberry Pi Imager et le système d’exploitation Raspbian sur un


ordinateur équipé d'un lecteur de carte SD. Mettez la carte SD que vous utiliserez avec votre
Raspberry Pi dans le lecteur et exécutez Raspberry Pi Imager pour y installer le système
d’exploitation.

Cliquer sur choisissez l’OS, puis sur utiliser image personnalisée et ouvrir le chemin de système
d’exploitation Raspbian sur votre machine.
Cliquer ensuite sur choisissez stockage et choisir votre carte mémoire et en fin cliquer sur écrire.
COMMENT BIEN CONFIGURER RASPBIAN ?
Une fois que Raspbian est installé sur votre Raspberry Pi, il nous reste quelques paramètres à
configurer avant de pouvoir l’utiliser pleinement, comme par exemple la langue de l’OS ou la
langue du clavier.

Raspi-config : L’espace de configuration de Raspbian


Au premier démarrage de Raspbian, vous devriez voir apparaître l’écran appelé « raspi-config ».
Si ce n’est pas le cas, pas de panique, vous pouvez y accéder en allant dans le terminal et en
tappant :

sudo raspi-config

C’est ici que va se passer une grande partie de la configuration de Raspbian. Voyons tout de suite
ce qu’il est possible de configurer via le raspi-config :

1. Changer le mot de passe de l’utilisateur


2. Modifier les paramètres réseaux
3. Configurer les options au démarrage
4. Changer les options de localisation
5. Configurer les connexions des périphériques
6. Configurer l’overclocking du Raspberry Pi
7. Configurations avancées
8. Faire la mise à jour de Raspbian ou de certains paquets
Pour naviguer dans le menu de rapsi-config, vous devez utiliser les flèches directionnelles de
votre clavier « haut » et « bas ».

Changer le mot de passe de l’utilisateur


L’utilisateur par défaut après l’installation de Raspbian est « pi » et le mot de passe est
« raspberry ». Il est fortement conseillé de la changer pour plus de sécurité.
Mettre le clavier en AZERTY français sur Raspbian
Pour passer votre clavier en AZERTY sur Raspbian, c’est aussi dans le « raspi-config » que cela
se passe.

Dans les menus, rendez-vous dans : « Localisation Options » / « Change keyboard layout »

Dans le choix du clavier, choisissez « Français » avec une disposition « Par défaut » et validez.

Mettre Raspbian en français


Revenez au menu principal de raspi-config et sélectionnez « Localisation Options » puis « Change
Locale ».

Dans la nouvelle fenêtre, descendez jusqu’à la ligne « en_GB.UTF-8 UTF-8 » et appuyez sur la
touche Espace.

Descendez ensuite jusqu’à la ligne « fr_FR.UTF-8 UTF-8 » et appuyez sur la touche Espace.

Validez pour ouvrir la prochaine fenêtre où vous allez choisir « fr_FR.UTF-8 » et valider à
nouveau.

Patientez le temps que tout se configure normalement et votre Raspbian sera alors en Français. Si
votre menu de configuration est encore en anglais, ne vous inquiétez pas, c’est tout à fait normal.

Mettre à jour Raspbian


Pour mettre à jour Raspbian, nous allons devoir exécuter 3 commandes dans le terminal :

sudo apt-get -y update

« sudo » permet d’exécuter la commande comme administrateur, nécessaire car la mise à jour va
modifier des fichiers du système.

« apt-get » est l’outil de gestion des paquets

« update » est une option de apt-get permettant de mettre à jour tous les paquets installés.
sudo apt-get -y dist-upgrade

« dist-upgrade » permet de migrer vos paquets vers la dernière version disponible.

sudo reboot

« reboot » redémarre simplement votre système

SE CONNECTER EN SSH À SON RASPBERRY PI


SOUS RASPBIAN

À quoi cela sert de se connecter en SSH à son Raspberry Pi ? En une phrase, se connecter en SSH
va vous permettre d’accéder à distance, depuis un autre ordinateur, à votre Raspberry Pi.

Qu’est-ce que le SSH ?


Le SSH, aussi appelé « Secure Shell » est une technologie réseau qui permet d’accéder à un
ordinateur et de pouvoir le manipuler via un terminal et des lignes de commande depuis un autre
appareil.

Cela peut être très pratique avec le Raspberry Pi car vous pouvez alors vous passer de l’écran, du
clavier et de la souris. La connexion SSH est très utilisée pour les projets d’objets connectés
utilisants un Raspberry Pi.

Utiliser la connexion SSH sur un Raspberry Pi


Etape 1 : Activer SSH sur Raspbian
Pour commencer, il faut vous assurer que la fonctionnalité SSH est bien activée sur votre
Raspbian.

Pour cela, allez dans le menu suivant : Préférences > Raspberry Pi Configuration > Interfaces et
passez SSH sur « Enabled ». Confirmez en cliquant sur OK.
Pensez à activer le SSH dans les paramètres de Raspbian !

Etape 2 : Récupérer votre adresse IP

Bien entendu, votre Raspberry Pi doit être connectée à internet mais que vous soyez connecté en
wi-fi ou via un câble ethernet n’a pas vraiment d’importance.

Pour obtenir votre adresse ip, ouvrez un terminal et tapez « ifconfig ».

Etape 3 : Se connecter en SSH sur Windows avec Putty

Sur Windows, vous allez avoir besoin d’un logiciel pour vous connecter en SSH. Le meilleur
logiciel et celui recommandé par la fondation Raspberry Pi est PuTTY.

Une fois PuTTY téléchargé et installé, vous pouvez entrer l’adresse IP que vous avez récupéré sur
Raspbian dans le champ « Host Name (or IP address). Vérifiez bien que le champ « Connection
Type » est bien « SSH ».
Vous pouvez alors cliquer sur « Open » et une fenêtre de sécurité « Security Alert » apparaît,
cliquez simplement sur « Yes ».

Une fenêtre de ligne de commande devrait alors apparaître vous demandant « login as : ». Entrez
« pi » puis appuyez sur la touche entrée. Entrez ensuite votre mot de passe et validez
Comment programmer en Python sur Raspbian ?
Pour écrire votre premier programme, rendez-vous dans le menu de Raspbian et allez dans :
Programming > Thonny Python IDE

Une fenêtre s’ouvre et c’est ici que vous pourrez écrire votre code en Python.

Votre premier programme : « Hello World » 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 »

Si c’est le cas, tout fonctionne parfaitement et vous êtes prêt à coder vos premiers programmes en
Python sur Raspberry Pi.
Utilisation de GPIO
Une fonctionnalité puissante du Raspberry Pi est la rangée de broches GPIO (entrée / sortie à

usage général) le long du bord supérieur de la carte. Un en-tête GPIO à 40 broches se trouve sur

toutes les cartes Raspberry Pi actuelles.

N'importe laquelle des broches GPIO peut être désignée (dans le logiciel) comme une broche

d'entrée ou de sortie et utilisée à des fins très diverses.


Remarque: la numérotation des broches GPIO n'est pas dans l'ordre numérique; Les broches GPIO

0 et 1 sont présentes sur la carte (broches physiques 27 et 28) mais sont réservées à une utilisation

avancée (voir ci-dessous).

Tensions

Deux broches 5V et deux broches 3V3 sont présentes sur la carte, ainsi qu'un certain nombre de

broches de masse (0V), qui ne sont pas configurables. Les broches restantes sont toutes des

broches 3V3 à usage général, ce qui signifie que les sorties sont réglées sur 3V3 et les entrées sont

tolérantes à 3V3.

Les sorties

Une broche GPIO désignée comme broche de sortie peut être réglée sur haut (3V3) ou bas (0V).

Contributions

Une broche GPIO désignée comme broche d'entrée peut être lue comme haute (3V3) ou basse

(0V). Ceci est facilité par l'utilisation de résistances internes de pull-up ou de pull-down. Les

broches GPIO2 et GPIO3 ont des résistances de rappel fixes, mais pour les autres broches, cela

peut être configuré dans le logiciel.

Suite

En plus des périphériques d'entrée et de sortie simples, les broches GPIO peuvent être utilisées

avec une variété de fonctions alternatives, certaines sont disponibles sur toutes les broches,

d'autres sur des broches spécifiques.


PWM (modulation de largeur d'impulsion)

Logiciel PWM disponible sur toutes les broches

PWM matériel disponible sur GPIO12, GPIO13, GPIO18, GPIO19

SPI :

SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)

SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2

(GPIO16)

I2C :

Données: (GPIO2); Horloge (GPIO3)

Données EEPROM: (GPIO0); Horloge EEPROM (GPIO1)

En série :

TX (GPIO14); RX (GPIO15)

Brochage GPIO :

Il est important de savoir quelle broche est laquelle. Certaines personnes utilisent des tiquettes à

broches (comme le PCB RasPiO Portsplus ou la feuille de framboise imprimable).


Une référence pratique est accessible sur le Raspberry Pi en ouvrant une fenêtre de terminal et en

exécutant le brochage de la commande. Cet outil est fourni par la bibliothèque GPIO Zero Python,

qui est installée par défaut sur l'image de bureau Raspberry Pi OS, mais pas sur Raspberry Pi OS

Lite
RPi.GPIO

Le module RPi.GPIO est installé par défaut sur les versions récentes de Raspbian Linux. Pour

utiliser le module à partir de programmes Python, importez-le d'abord en utilisant :

import RPi.GPIO as GPIO

De cette façon, vous pouvez faire référence à toutes les fonctions du module en utilisant le nom

plus court "GPIO".

RPi.GPIO prend en charge la référence aux broches GPIO en utilisant les numéros de broches

physiques sur le connecteur GPIO ou en utilisant les noms de canaux BCM du SOC Broadcom

auxquels les broches sont connectées. Par exemple, la broche 24 est le canal BCM GPIO8. Pour

utiliser les numéros d'identification de la carte physique, appelez :

GPIO.setmode(GPIO.BOARD)

Et pour utiliser les numéros de canal BCM, utilisez :

GPIO.setmode(GPIO.BCM)

Pour configurer un canal comme entrée ou comme sortie, appelez soit :

GPIO.setup(canal, GPIO.IN)

ou

GPIO.setup(canal, GPIO.OUT)

Où canal est le numéro de canal basé sur le système de numérotation que vous avez spécifié

lorsque vous avez appelé setmode.

Pour lire la valeur d'un canal d'entrée, appelez :

GPIO.input(canal)

Où canal est le numéro de canal utilisé dans la configuration. Il renverra une valeur de 0,
GPIO.LOW ou False ( sont équivalents) s'il est à l’état bas et 1, GPIO.HIGH ou True s'il était à un
niveau haut.
Pour définir l'état de sortie d'une broche GPIO, appelez :

GPIO.output(canal, état)

Où canal est le numéro de canal et l'état est le niveau de sortie souhaité : soit 0, GPIO.LOW, ou

False pour un niveau logique bas ou 1, GPIO.HIGH, ou True pour un niveau logique haut.

N.B : Lorsque vous avez terminé avec la bibliothèque, il est recommandé de libérer toutes les

ressources utilisées et de ramener tous les canaux à la valeur par défaut sûre d'être des entrées.

Cela se fait en appelant :

GPIO.cleanup()

Voici un exemple autonome très simple qui active et désactive une broche de sortie pendant 200

millisecondes, dix fois. Il signale également le niveau sur la broche d'entrée 31.

import RPi.GPIO as GPIO


import time

led = 18
switch = 31

GPIO.setmode(GPIO.BOARD)
GPIO.setup(led, GPIO.OUT)
GPIO.setup(switch, GPIO.IN)

for i in range(10):
GPIO.output(led, GPIO.HIGH)
time.sleep(0.2)
GPIO.output(led, GPIO.LOW)
time.sleep(0.2)
print('Switch status = ', GPIO.input(switch))

GPIO.cleanup()

Si la broche 18 est connectée à une LED et la broche 31 à un interrupteur, nous pouvons voir la

LED clignoter et le programme rapportera l'état de l'interrupteur.


Contrôle de la luminosité de la LED
Nous allons apprendre comment obtenir la sortie PWM du Raspberry pi. Nous allons d'abord

discuter de ce qu'est PWM, puis nous changerons la luminosité d'une LED.

Qu'est-ce que PWM


PWM signifie (Pulse Width Modulation) et c'est une technique utilisée pour contrôler la

luminosité de la LED, le contrôle de la vitesse du moteur à courant continu, le contrôle d'un

servomoteur ou lorsque vous devez obtenir une sortie analogique avec des moyens numériques.

Les broches GPIO du Raspberry pi nous donnent soit 3,3 V (lorsqu'elles sont réglées sur HAUT)

ou 0 V (lorsqu'elles sont sur BAS) et la sortie est un signal d'onde carrée. Donc, si nous voulons

atténuer une LED, nous ne pouvons pas obtenir la tension entre 0 et 3,3 V à partir de la broche

GPIO mais nous pouvons changer le temps ON et OFF du signal. Si nous changeons le temps ON

et OFF assez rapidement, la luminosité de la LED sera modifiée.

Avant d’aller plus loin, parlons de quelques termes associés à PWM.

TON (On Time): C'est le temps aux quelle le signal est élevé.

TOFF (Off Time) : C'est le temps aux quelle le signal est faible.

Période : C'est la somme du temps de marche et du temps de repos.

Cycle de service (Duty cycle) : il s'agit du pourcentage de temps pendant lequel le signal était haut

pendant la période.
Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

Duty Cycle = (0.5/ (0.5+0.5)) = 50%

Ainsi, la tension de sortie moyenne sera de 50% de la tension fournis par Raspberry.

C'est le cas pendant une seconde et nous pouvons voir que la LED est éteinte pendant une demi-

seconde et la LED allumée l'autre demi-seconde. Si la fréquence des temps d'activation et de

désactivation est passée de «1 par seconde » à «50 par seconde». L'œil humain ne peut pas

capturer cette fréquence. Pour un œil normal, la LED sera vue comme brillante avec la moitié de

la luminosité. Ainsi, avec une réduction supplémentaire du temps de marche, la luminosité de la

LED apparaît beaucoup plus légère.

Raspberry pi et PWM
La bibliothèque «RPI.GPIO» pour Raspberry pi a une fonction que nous pouvons utiliser pour

PWM. Pour cela, nous devrons d'abord créer un objet dans lequel nous passerons les paramètres

de la broche GPIO et la fréquence que nous voulons utiliser. Dans la commande ci-dessous, nous

avons créé un objet de nom «pwm», puis appelé la fonction à partir de la bibliothèque.

pwm = GPIO.PWM(21, 100)

Ensuite, nous devons démarrer le PWM. Pour démarrer le PWM, nous devrons spécifier le duty

cycle. Dans la commande ci-dessous, j'ai utilisé le cycle de service de 50%.

pwm.start (50)

Si vous souhaitez modifier le duty cycle, vous pouvez utiliser la commande ci-dessous.

pwm.ChangeDutyCycle (80)

Si vous souhaitez modifier la fréquence, utilisez la commande ci-dessous.

pwm.ChangeFrequency (1000)

Pour arrêter le PWM, utilisez la commande suivante.

pwm.stop ()

Avançons maintenant et modifions la luminosité d'une LED.


import RPi.GPIO as GPIO # Importation de RPi Library pour utiliser les GPIO pins
from time import sleep # Importation de Library time

led_pin = 21 # Initialization de GPIO pin 21 pour LED

GPIO.setmode(GPIO.BCM) # utilisation de numérotation BCM


GPIO.setup(led_pin, GPIO.OUT) # Déclaration de pin 21 comme sortie

pwm = GPIO.PWM(led_pin, 100) # Création de l’objet PWM


pwm.start(0) # démarrage de la PWM avec 0% duty cycle

while 1: # boucle infini


for x in range(100): # boucle répète 100 fois
pwm.ChangeDutyCycle(x) # Changer le duty cycle
sleep(0.01) # retard de 10mS

for x in range(100,0,-1):
pwm.ChangeDutyCycle(x)
sleep(0.01)

pwm.stop() # arrêt de la PWM


GPIO.cleanup() # tous les pins de sortie son LOW

Vous aimerez peut-être aussi