rasp127
Bac STI2D

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

 Raspberry pi shield

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

 

 

En poursuivant votre navigation sur mon site, vous acceptez l’utilisation des Cookies et autres traceurs  pour réaliser des statistiques de visites et enregistrer sur votre machine vos activités pédagogiques. En savoir plus.