”Indicateur de pression”
![](https://www.ardpylab.fr/wp-content/uploads/2020/05/ProjetPython-6-2-1.png)
. Objectif
De façon à s’assurer que la pression mesurée par notre capteur MPX4250AP ne soit pas supérieure ou inférieure à la pression maximale (250 kPa) ou minimale (20 kPa) admissible, nous allons dans cette activité utiliser une DEL rouge qui sera allumée quand la pression est supérieure ou inférieure à des seuils à définir afin de prévenir de leurs dépassements.
La pression mesurée sera modifiée avec une seringue d’un volume utile de 60 mL fixée au capteur par l’intermédiaire d’un tuyau.
En déplaçant le piston, initialement placé sur la graduation 30 mL, on fera varier le volume de l’air enfermé dans le corps de la seringue et donc la pression appliquée sur le capteur.
La pression est mesurée après un appui sur le bouton poussoir. Un nouvel appui sur le bouton poussoir arrête les mesures.
. Le programme
Le code de l’activité en Python ou en langage Arduino pourra être modifié pour voir l’influence des variables (seuils de pression)
. Programme en Python (”Projet6\Activity2\PY\Activity2.py”)
Déroulement du programme :
– Importation des librairies et définition de fonctions :
. Le module ”ConnectToArduino.py”, contenant les fonctions de connexion à l’Arduino via le protocole ”Firmata Satandard”,
. Le module ”PyFirmataDef.py” regroupant toutes les fonctions utiles à l’utilisation de ”PyFirmata” (fonction de déclaration des entrées et sorties, de lectures, d’écritures…),
. La bibliothèque ”time” pour la gestion des temps de pause.
– Déclaration des constantes et variables :
. PinSensor = 0 (cst correspondant au n° de la broche A0 sur laquelle le capteur de pression est connecté)
. PinButton= 12 (cst correspondant au n° de la broche sur laquelle le bouton poussoir est connecté)
. PinLed = 9 (cst correspondant au n° de la broche sur laquelle la DEL est connectée)
. PMax = 200 (Pression maximale admissible en kPa)
. PMin = 55 (Pression minimale admissible en kPa)
. ValSensor = 0 (variable pour stocker la valeur de la broche du capteur de pression)
. tension = 0 (variable correspondant à la valeur de la tension en V de la broche du capteur de pression)
. Pression = 0 (variable correspondant à la pression en kPa calculée à partir de la valeur de la broche du capteur)
. OldPression = 0 (variable correspondant à la pression en kPa calculée précédemment)
. ValButton = 0 (variable pour stocker la valeur de l’état logique de la broche du bouton poussoir)
. OldValButton = 0 (variable pour stocker la valeur précédente de l’état logique de la broche du bouton poussoir)
. State=0 (variable correspondant à l’action à effectuer)
. OldState = 0 (variable pour stocker la valeur précédente de la variable state)
. PortComArduino (port COM sur lequel l’Arduino est connecté)
– Connexion à l’Arduino :
. Détection du port COM, tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:
PortComArduino = SelectPortCOM()
board = OpenPortCom(PortComArduino)
. Si la connexion à l’Arduino est réussie :
– Déclaration de la broche du capteur de pression en entrée analogique :
InputPinSensor = AnalogInput(board, PinSensor)
– Déclaration de la broche du bouton poussoir en entrée numérique :
InputPinButton = DigitalInput(board, PinButton)
– Lancement de l’itérateur :
ArduinoIterateur = Iterateur(board)
– Attente de 500 ms pour le lancement de l’itérateur :
time.sleep(0.5)
– Boucle principale du programme (boucle ”while True”) :
![](https://www.ardpylab.fr/wp-content/uploads/2020/05/ProjetPython-6-2-3.png)
. Programme en langage Arduino (”Projet6\Activity2\INO\Activity2.ino”)
Le code de l’activité en langage Arduino a déjà été étudié dans la partie:
”Activités pour les lycées / Pression / Activité 2”