Projet 4 – Activité 3

”Détecteur d’obstacles

 

 

Objectif

Comme il est possible de mesurer une distance avec un Arduino et un capteur à ultrasons, nous allons dans cette activité, réaliser un détecteur d’obstacles qui déclenchera une alarme lumineuse et sonore quand le capteur est situé en dessous d’une distance, d, fixée.

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éterminée la distance entre le capteur et l’obstacle.

On pourra également modifier la distance minimale de déclenchement de l’alarme.

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/Activity3/PY/Activity3.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_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é)

. PinTone = 3 (cst correspondant au n° de la broche sur laquelle le buzzer est connecté)

. PinLed = 4 (cst correspondant au n° de la broche sur laquelle la DEL est connectée)

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

. DistanceAlarme = 10 (constante correspondant à la distance en cm en dessous de laquelle l’alarme est déclenchée)

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

– Déclaration de la broche du buzzer en mode ”Tone” :

Set_Tone_Pin(board, PinTone)

– Déclaration de la broche de la DEL en sortie digitale :

Set_DigitalOutput_Pin(board, PinLED)

 

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

Résultats dans la fenêtre Python Shell :

 

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

Déroulement du programme :

Résultats dans le moniteur série :