”Mesure de distances”
. Objectif
Maintenant que nous avons déterminer la célérité des ondes sonores dans l’air, dans cette activité, nous allons utiliser le capteur à ultrasons pour mesurer des distances, selon le même principe que l’activité précédente, en mesurant la durée de propagation, Dt, de l’onde sonore entre l’émetteur et le récepteur situés à une distance, d, inconnue d’un obstacle. C’est le principe du Sonar.
Dans les codes en langage Arduino ou en Python, la température de l’air est une variable qu’il est possible de modifier. La vitesse théorique du son dans l’air en fonction de la température indiquée est alors calculée et utilisée pour déterminer la distance entre le capteur et l’obstacle.
Comme pour l’activité précédente, 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/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 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 bibliothèque ”math” pour le calcul de la vitesse théorique du son dans l’air,
. La fonction ”Get_Dt” pour 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)
. DistanceMesure = 0 (variable correspondant à la distance en cm entre le capteur et l’obstacle mesurée précédemment)
. Dt = 0 (variable correspondant à la durée de propagation des ondes ultrasonores en µs entre le capteur et l’obstacle)
. Temp = 20 (variable correspondant à la température de l’air en °C)
. VitTheoUS = 20.05*(sqrt(Temp+273.15)) (constante correspondant à la vitesse théorique du son dans l’air en m/s)
. 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/Activity2/INO/Activity2.ino”)
Déroulement du programme :
Résultats dans le moniteur série :