Skip to main content

Programmation d'un capteur sonore

Informations

Contexte

Ce projet a pour but d'intégrer et de programmer un capteur à un système électronique branché à une carte Arduino. Pour ce projet, nous avons choisi de programmer un capteur sonore. 

Objectif

L'objectif est de pouvoir allumer et éteindre une LED en claquant des mains grâce au capteur sonore. 

1606313189-gsk-06-soundsnsr-plug-in-module.png

Matériel

  • Carte Arduino Uno
  • Capteur Sonore
  • Arduino Shield
  • LED et résistance
  • BreadBoard
  • Fils

Principe physique

Le capteur sonore est composé d'une plaque de diaphragme. Lorsque des vibrations sonores sont produites des bruits forts, elles frappent la plaque du diaphragme, ce qui la fait vibrer. Lorsqu'elle vibre, elle modifie la capacité, ce qui entraîne une variation de la tension. La tension peut alors être lue à l'aide de la fonction analogRead().

1606313192-gsk-06-soundsnsr-understand.png

Construction

Étape 1

Nous avons d'abord effectué les branchements nécessaires. Le capteur sonore est branché sur un port analogique est la LED est branché sur les pins A et GND de la carte Arduino. 

image.png

Étape 2

Nous avons ensuite écris un programme dont le but est de lire les données du capteur et de commander la LED. Dans un premier temps, nous déclarons les Pins de la LED et du capteur de son. 

int sound_sensor = A2; //assign to pin A2
#define LED 12
bool etat_LED=false; 

void setup() 
{
  Serial.begin(9600); //begin Serial Communication
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
}
  

Notre fonction void loop() va ensuite lire les données du capteur en boucle. Les données du capteur sont des valeurs entre 0 et 1023 qui oscille en fonction du bruit ambiant. Nous avons donc fixé un seuil au delà duquel nous changeons la sortie de la LED. 

void loop()
{
  int soundValue = 0; //create variable to store many different readings
  soundValue = analogRead(sound_sensor)
 
  Serial.println(soundValue); //print the value of sound sensor
  
  if (soundValue > 150) { 
    if (etat_LED){          
     digitalWrite(LED, LOW);
     etat_LED = false;
     //Serial.println("Led off");
   }
   else{
     digitalWrite(LED,HIGH);
     etat_LED=true;
    // Serial.println("Led on");
     }     
  }
  delay(100); //a shorter delay between readings
}
Difficultés rencontrées 

La première difficulté de cette tache a été de définir un seuil adéquat. Pour un seuil trop élevé, la LED ne s'allume pas, pour un seuil trop faible, la LED s'allume et s'éteint trop souvent.  Nous avons donc mesuré le bruit ambiant afin de déterminer une valeur seuil suffisamment élevée pour déclencher le changement d'état de la LED. Nous avons également confondu les sorties analogiques et numériques, ce qui empêchait la LED de s'allumer. 

Résultats 

Après avoir uploadé notre programme, notre LED s'allume lorsqu'on émet prêt du capteur un bruit suffisamment fort comme un claquement de main.  

Améliorations

Nous pourrions intégrer à notre système un capteur de lumière ambiante pour ajouter une condition d'activation de la LED.