|

Sonomètre à LED

Le sonomètre à LED est un dispositif électronique permettant de mesurer le niveau sonore ambiant et d’afficher son intensité de manière visuelle grâce à une série de LEDs. Conçu avec un microphone, un amplificateur audio, un microcontrôleur Arduino, et un registre à décalage SN74HC595, ce projet allie simplicité et efficacité pour fournir une représentation intuitive du niveau sonore.
Ce type de système est particulièrement utile pour des environnements où la pollution sonore doit être surveillée, comme les salles de classe, les usines ou les espaces publics. Grâce à son affichage lumineux, les utilisateurs peuvent rapidement identifier si le bruit dépasse un seuil acceptable.

Composant utilisé

  • 3 LEDs vertes
  • 1 Registre à décalage 74HC5951
  • Carte Arduino UNO
  • 3 LEDs rouges
  • 8 Résistances de 330 ohms
  • 2 LEDs bleues
  • 1 Amplificateur MAX9814

Photo du circuit

Voici à quoi ressemble le circuit assemblé sur une breadboard (Plaquette de montage).

Cette photo est une vue détaillée des composants : microphone, amplificateur, LEDs et registre SN74HC595.

Voici une photo du schéma qu’il faudrait suivre afin d’obtenir le même résultat :

Vidéo du produit en utilisation

Voici une vidéo qui démontre l’utilisation du produit :

Description du fonctionnement du projet

Le sonomètre à LED fonctionne en captant les sons ambiants grâce à un microphone électret qui convertit les variations de pression acoustique en un signal électrique analogique. Ce signal est amplifié par un MAX9814 pour le rendre exploitable, puis envoyé à une entrée analogique d’un microcontrôleur comme l’Arduino. Le microcontrôleur utilise son convertisseur analogique-numérique (ADC) pour transformer ce signal en une valeur numérique et la compare à des seuils prédéfinis correspondant à différents niveaux sonores. En fonction de ces seuils, un certain nombre de LEDs s’allument, formant une barre lumineuse intuitive où le nombre de LEDs allumées augmente avec l’intensité sonore. Le SN74HC595, un registre à décalage, est utilisé pour contrôler efficacement les LEDs tout en économisant les broches d’E/S du microcontrôleur. Ce processus permet d’afficher visuellement le niveau sonore, facilitant ainsi l’identification rapide des environnements bruyants.

Code Arduino

const int micPin = A0; // Pin A0 est utilisé pour l’entrée du microphone

int sample; // Variable pour stocker l’échantillon sonore actuel
int maxVal = 0; // Variable pour suivre le niveau sonore maximum détecté
int minVal = 1023; // Variable pour suivre le niveau sonore minimum détecté

// Pins pour le registre à décalage (74HC595)
int LatchPin = 3; // Pin 3 connecté au LatchPin (ST_CP) du 74HC595
int ClockPin = 5; // Pin 5 connecté au ClockPin (SH_CP) du 74HC595
int DataPin = 2; // Pin 2 connecté au DataPin (DS) du 74HC595

// Modèles binaires pour les LEDs, représentant différents niveaux sonores
byte LEDs0 = 0b10000000; // Modèle pour le niveau sonore le plus bas
byte LEDs1 = 0b10000001;
byte LEDs2 = 0b10000011;
byte LEDs3 = 0b10000111;
byte LEDs4 = 0b10001111;
byte LEDs5 = 0b10011111;
byte LEDs6 = 0b10111111;
byte LEDs7 = 0b11111111; // Modèle pour le niveau sonore le plus élevé

void setup() {
// Configuration des pins du registre à décalage en sortie
pinMode(LatchPin, OUTPUT);
pinMode(ClockPin, OUTPUT);
pinMode(DataPin, OUTPUT);

// Configuration de la pin du microphone en entrée
pinMode(micPin, INPUT);

// Démarrage de la communication série pour le débogage (optionnel)
Serial.begin(9600);
}

void loop() {
// Traitement des données du microphone pour déterminer la valeur crête-à-crête (peak-to-peak)
for (int i = 0; i < 100; i++) { // Prendre 100 échantillons pour calculer l’écart des niveaux sonores sample = analogRead(micPin); // Lire le niveau sonore actuel du microphone if (sample > maxVal) { // Mettre à jour maxVal si l’échantillon est plus élevé
maxVal = sample;
}
if (sample < minVal) { // Mettre à jour minVal si l’échantillon est plus faible
minVal = sample;
}
}

int peakToPeak = maxVal – minVal; // Calculer la valeur crête-à-crête

// Convertir la valeur crête-à-crête en niveau de tension (0-5V)
float voltage = (peakToPeak * 5.0) / 1023.0;

// Préparation pour l’envoi des données au registre à décalage
digitalWrite(LatchPin, LOW); // Mettre le latch à LOW pour préparer l’envoi

// Déterminer quel modèle de LEDs afficher selon le niveau de tension
if(voltage > 2.4){ // Niveau sonore le plus élevé
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs7); // Envoyer le modèle correspondant
digitalWrite(LatchPin, HIGH); // Mettre à jour les LEDs
}
else if(voltage > 2.1){ // Deuxième niveau sonore le plus élevé
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs6);
digitalWrite(LatchPin, HIGH);
}
else if(voltage > 1.8){ // Troisième niveau sonore
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs5);
digitalWrite(LatchPin, HIGH);
}
else if(voltage > 1.5){ // Niveau sonore moyen élevé
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs4);
digitalWrite(LatchPin, HIGH);
}
else if(voltage > 1.2){ // Niveau sonore moyen
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs3);
digitalWrite(LatchPin, HIGH);
}
else if(voltage > 0.9){ // Niveau sonore moyen-bas
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs2);
digitalWrite(LatchPin, HIGH);
}
else if(voltage > 0.6){ // Niveau sonore bas
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs1);
digitalWrite(LatchPin, HIGH);
}
else if(voltage > 0.0){ // Niveau sonore le plus bas
shiftOut(DataPin, ClockPin, LSBFIRST, LEDs0);
digitalWrite(LatchPin, HIGH);
}

// Réinitialiser maxVal et minVal pour les prochains échantillons
maxVal = 0;
minVal = 1023;
}

Documentation et référence

https://projecthub.arduino.cc/greenvariable/hear-the-light-led-sound-level-meter-7d3ca6

Auteur/autrice

Publications similaires

  • |

    CNC Modernisée

    Dans le cadre de notre formation, nous avons entrepris la modernisation complète d’une CNC (« Computer Numerical Control machine », ou machine de découpe à contrôle numérique) appartenant à l’école. Initialement contrôlée par un système sous Windows XP, la machine n’était plus fonctionnelle et nécessitait un ordinateur dédié pour opérer, ce qui la rendait impraticable dans l’environnement…

  • |

    Moniteur Température et Humidité modulaire

    Ce projet permet de surveiller la température et l’humidité dans un environnement industriel à l’aide de capteurs branchés automatiquement. Les données sont regroupées, affichées et envoyées en ligne, avec une moyenne calculée toutes les 10 secondes. Ce projet vise à concevoir un système de surveillance de la température et de l’humidité adapté aux environnements industriels….

  • |

    Contrôle d’un robot via un lien VHF/UHF

    Contrôlez un véhicule à distance grâce à une télécommande RF à 433 MHz. Ce projet met en œuvre une communication sans fil fiable basée sur une modulation ASK, reliant un encodeur HT12E à un décodeur HT12D pour transmettre les commandes en temps réel. Matériel Utilisé Schéma Voici le schéma de communication entre l’encodeur de la…

  • Pédale de Guitare Multifonction

    Ce projet consiste à créer une pédale de guitare offrant plusieurs effets. Son objectif est d’économiser de l’argent et de l’espace en réduisant la quantité de matériel nécessaire pour accéder à un grand nombre d’effets. Présentation générale En commençant à jouer de la guitare électrique, on découvre rapidement l’univers infini des équipements et des accessoires qui peuvent…

  • |

    Petit bolide motorisé

    Voici une petite voiture imprimée en 3D, équipée de quatre roues, d’un moteur, d’un bouton et de quatre DEL. Stylisée pour un design unique, elle est contrôlée par un Arduino Nano relié à un PCB que j’ai moi-même fabriqué. Ce projet combine impression 3D, électronique et programmation pour donner vie à un véhicule miniature fonctionnel…

  • |

    Maison sécurisée par RFID

    Dans le cadre de mon projet final de fin de programme en Technologie du génie électrique, j’ai réalisé un système de contrôle d’accès permettant de sécuriser une porte de maison à l’aide de la technologie RFID (Radio Frequency Identification). L’objectif était de concevoir une maquette fonctionnelle capable de simuler un système réel utilisé dans de…