TP n°22 : Raspberry et GPIO |
||
Nom : | ||
Centre d'intérêt : | CI | |
Classe : | 1ère Sti2d Sin | |
Id programme : | sin15, sin31 | |
Conditions : | Seule, durée 2 heures. | |
Matériel : | - un ordinateur; - un raspberry pi - un shield raspberry pi; |
|
Logiciel : | - IDLE Python; | |
Document : |
I. Objectifs
- Etudier le GPIO du raspberry;
- Créer des programmes en pytho.
II. Le shield raspberry pi
Le shield RPI est composé :
- d'un module RS485 (Gpio15 : Rxd, Gpio14 : txd, Gpio04 : EN);
- d'un module RS232;
- d'une EEPROM (24 c16) (CLK: Gpio03, DATA Gpio02);
- de 3 leds (Gpio19, 16 12)
- de 3 boutons poussoirs (Gpio 27, 18, 17)
- d'un buzzer (Gpio 13)
- de 4 afficheurs 7 segments (Sclk : Gpio20, DIO: Gpio21, Rclk :Gpio26);
- d'un port pour les cartes SD avec liaison SPI (Miso : Gpio10, Mosi : Gpio 09, CLK : Gpio11, CS : Gpio28)
III. La bibliothèque GPIO
Question 1 : Donner la signification de l'acronyme GPIO
Avant de pouvoir utiliser le port GPIO du RPO, il faut installer la bibliothèque python qui le gère.
Ouvrir le terminal du RPI.
Mettre à jour les paquets :
sudo apt-get update
Installer le paquet RPI.GPIO :
sudo pip3 install rpi.gpio
IV. Gestion des LED du shield RPI
4.1 Premier programme
Un connecteur GPIO peut être configuré pour jouer le rôle d’une entrée (réception d’un signal) ou d’une sortie (émission d’un signal).
Question 2 :
Pour commander une led, il faut ……………………..un signal. La ligne du port GPIO où sera relié
le voyant, est donc une …………………. .
Question 3 :
Suivre la procédure ci-dessous pour tester les différents programmes.
Ecrire dans le terminal :
sudo nano gpio1.py
Mettre le code suivant
import RPi.GPIO as GPIO
import time
led1=16
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(led1,GPIO.OUT)
while True:
print("LED etat 1")
GPIO.output(led1,1)
time.sleep(2)
print("LED etat 2")
GPIO.output(led1,0)
time.sleep(2)
Dans la console, entrer la commande suivante :
sudo python3 gpio1.py
Que constatez-vous ?
Que signifie sudo? Que signifie python?
Pour stopper l’exécution du programme, taper CTRL-C.
Vous allez modifier le programme en plaçant un message qui s’affichera au lancement du programme :
Pour cela, ajouter
print("Allumage de led1t")
avant la ligne while.
Tester.
4.2. Blink
On souhaite faire clignoter la led1.
Reprenez le programme gpio1.py et enregistrez-le en gpio2.py.
Voici les modifications du programme :
import time
import RPi.GPIO as GPIO
led1=19 #la led1 est sur la broche 19
GPIO.setmode(GPIO.BCM) #Utilisation des numeros des broches du processeur
GPIO.setup(led1, GPIO.OUT) #GPIO4 configuree en sortie
while True: # Boucle infinie
GPIO.output(led1,GPIO.HIGH) # Allume la LED
time.sleep(0.5) # Tempo 0,5s
GPIO.output(led1,LOW) # éteint la LED
time.sleep(0.5) # Tempo 0,5s
Tester.
Conclusion : pour faire clignoter un voyant, on ……………...le voyant pendant un temps, puis on
…………………le voyant pendant un second temps identique ou non.
4.3 Sortie PWM
Ecriture du programme gpio3.py
Question : Donner l'acronyme de PWM
On souhaite faire varier la luminosité du voyant.
Voici le programme :
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
led1=19
GPIO.setup(led1,GPIO.OUT)
rpc = GPIO.PWM(led1,50)#frequence du signal fixee a 50Hz
while True: # Boucle infinie
print("rapport cyclique: 20%")
rpc.start(20)
time.sleep(2)
print("rapport cyclique: 40%")
rpc.start(40)
time.sleep(2)
print("rapport cyclique: 100%")
rpc.start(100)
time.sleep(2)
Tester et conclure.
V Gestion des boutons poussoirs
Vous allez utiliser votre programme précédent pour détecter un appui sur un bouton poussoir.
5.1. Ecriture du programme gpio4.py
On souhaite afficher un message lorsque el bouton poussoir est appuyé.
Voici le programme :
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
led1=16 #borne led
bt1 = 27 #borne bouton
GPIO.setup(bt1, GPIO.IN) #GPIO bt1 configurée en entrée
GPIO.setup(led1, GPIO.OUT) #GPIO led configurée en sortie
while True: # Boucle infinie
if (GPIO.input(bt1)) :
print("Bouton appuyé")
GPIO.output(led1,1) # Allume la LED
else :
print("Bouton relaché")
GPIO.output(led1,0) # Ereindre la LED
Tester et conclure.
5.2. Ecriture du programme gpio5.py
Ecrire un programme avec le cahier des charges suivant :
si bt1 appuyé alors led1 allumé
si bt2 appuyé alors led2 allumé
si bt3 appuyé alors led3 allumé
sinon aucune led allumé.
VI. Le buzzer
En vous aidant du site suivant :
https://www.instructables.com/id/Raspberry-Pi-Tutorial-How-to-Use-a-Buzzer/
Faire fonctionner le buzzer.
Question : Quel est la catégorie des buzzer? (Actionneur ou capteur)
VII. Conclusion Générale
Réaliser une synthèse sur l'activité.