Projet 4 – Activité 1

”Détermination de la vitesse du son dans l’air

 

 

Objectif

Dans cette activité, nous allons déterminer expérimentalement la vitesse de propagation des ondes sonores en mesurant, à l’aide d’un capteur à ultrasons (par exemple, le HC-SR04), la durée de propagation, Dt, de l’onde sonore entre l’émetteur et le récepteur situés à une distance, d, connue d’un obstacle.

 

Le programme ci-dessous est adapté pour un capteur ultrasonique à deux broches différentes pour l’émission et la réception des ultrasons.

Dans le cas d’un capteur ultrasonique à une broche commune pour l’émission et la réception des ultrasons, il suffit de déclarer la même broche pour ”trigger_pin” (émetteur US) et ”echo_pin” (récepteur US).


Le programme

. Programme en Python (”Projet4/Activity1/PY/Activity1.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 Express”,

. Le module PymataExpressDef.Py” regroupant toutes les fonctions utiles à l’utilisation de Pymata-express” (fonction de déclaration des entrées et sorties, de lectures, d’écritures…) ,

. La bibliothèque time” pour la gestion des temps de pause,

. La fonction Get_Dtpour obtenir la durée de propagation dans l’air de l’onde sonore,

. La fonction ”Set_Sonar_Pins” pour déclarer les broches du capteur ultrasonique,

. La fonction ”Sonar_Read” qui appelle la fonction Get_Dt”.

Déclaration des constantes et variables :

. TRIGGER_PIN = 8 (cst correspondant au n° de la broche sur laquelle l’émetteur US est connecté)

. ECHO_PIN = 9 (cst correspondant au n° de la broche sur laquelle le récepteur US est connecté)

. PinButton = 7 (cst correspondant au n° de la broche sur laquelle le bouton poussoir est connecté)

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

. Distance = 0 (variable correspondant à la distance en cm entre le capteur et l’obstacle)

. Vitesse = 0 (variable correspondant à la vitesse des ondes ultrasonores dans l’air en m/s)

. Dt = 0 (variable correspondant à la durée de propagation des ondes ultrasonores en µs entre le capteur et l’obstacle)

. DtMesure = 0 (variable correspondant à la durée de propagation des ondes ultrasonores en µs précédente)

. Distancechoisie = False (variable booléenne indiquant si la distance entre le capteur et l’obstacle a été saisie)

. 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 des broches du capteur ultrasonique :

Set_Sonar_Pins(board, TRIGGER_PIN, ECHO_PIN)

– Déclaration de la broche du bouton poussoir en entrée digitale :

Set_DigitalInput_Pin(board, PinButton)

 

Boucle principale du programme (boucle ”while True”) :

Résultats dans la fenêtre Python Shell :

 

. Programme en langage Arduino (”Projet4/Activity1/INO/Activity1/.ino)

Déroulement du programme :

Résultats dans le moniteur série :