Capteur de Son Arduino avec Indicateurs LED et LCD pour Surveillance du Niveau Sonore en Temps Réel
Composants et fournitures
| Composant | Quantité | Notes |
|---|---|---|
| Arduino UNO | 1 | |
| Plaque d'essai sans soudure (full size) | 1 | |
| Batterie 9V + connecteur Jack | 1 | Optionnel (alimentation mobile) |
| Fils de connexion M/M et M/F | 1 jeu | |
| Écran LCD 16x2 I2C (backpack PCF8574) | 1 | Adresse 0x27 |
| Module capteur de son KY-038 | 1 | Sorties numérique (DO) et analogique (AO) |
| LED 5mm Jaune | 2 | Niveau sonore faible |
| LED 5mm Verte | 4 | Niveau sonore moyen |
| LED 5mm Rouge | 2 | Niveau sonore élevé |
| LED 5mm Blanche | 4 | |
| LED 5mm Bleue | 4 | |
| Résistance 100 Ω | 8 | Pour LED blanches et bleues |
| Résistance 220 Ω | 4 | Pour LED rouges et jaunes |
| Résistance 330 Ω | 4 | Pour LED vertes |
Applications et services en ligne
- Arduino IDE
À propos du projet
Ce projet surveille en temps réel le niveau sonore ambiant capté par un module microphone KY-038. Les valeurs analogiques sont analysées et visualisées :
- Sur un barregraphe à 12 LED (jaune = faible, vert = moyen, rouge = fort)
- Sur un écran LCD 16x2 I2C affichant la valeur brute
- Sur le moniteur série pour journalisation
Les seuils de déclenchement des LED ont été déterminés empiriquement : relevés des valeurs sur le moniteur série, export vers un tableur, tri par ordre croissant, puis sélection des valeurs représentatives pour chaque palier.
lcd.print(" ") après la valeur pour effacer le chiffre fantôme.
Code complet (SoundSensorLEDwData.ino)
#include <Arduino.h>
#include <LiquidCrystal_PCF8574.h>
#define LCD_ADDRESS 0x27
#define LCD_ROWS 2
#define LCD_COLUMNS 16
#define SCROLL_DELAY 150
#define BACKLIGHT 255
LiquidCrystal_PCF8574 LCDi2C;
// Broches LED (barregraphe 8 LED)
int LED1 = 3; // PWM
int LED2 = 4;
int LED3 = 5; // PWM
int LED4 = 6; // PWM
int LED5 = 7;
int LED6 = 8;
int LED7 = 9; // PWM
int LED8 = 10; // PWM
const int soundSensorDO = 2; // Sortie numérique KY-038 (DO)
const int soundSensorAO = A0; // Sortie analogique KY-038 (AO)
bool LEDStatus = false;
void setup() {
Serial.begin(9600);
LCDi2C.begin(LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT);
pinMode(soundSensorDO, INPUT);
pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT); pinMode(LED8, OUTPUT);
}
void loop() {
int sensorValue = analogRead(soundSensorAO);
int sensorDigital = digitalRead(soundSensorDO);
if (sensorDigital == HIGH) { // Seuil numérique dépassé (potentiomètre KY-038)
if (!LEDStatus) {
LEDStatus = true;
Serial.println(sensorValue);
// Affichage LCD (ligne fixe + valeur)
LCDi2C.setCursor(0, 0);
LCDi2C.print("Niveau sonore: ");
LCDi2C.setCursor(0, 1);
LCDi2C.print(sensorValue);
LCDi2C.print(" "); // Efface les chiffres résiduels
}
// --- BARREGRAPHE SELON SEUILS ANALOGIQUES ---
// LED8 (bleue) - niveau le plus haut
if (sensorValue >= 750) digitalWrite(LED8, HIGH); else { LEDStatus = false; digitalWrite(LED8, LOW); }
// LED7 (blanche)
if (sensorValue >= 735) digitalWrite(LED7, HIGH); else { LEDStatus = false; digitalWrite(LED7, LOW); }
// LED6 (blanche)
if (sensorValue >= 725) digitalWrite(LED6, HIGH); else { LEDStatus = false; digitalWrite(LED6, LOW); }
// LED5 (verte)
if (sensorValue >= 720) digitalWrite(LED5, HIGH); else { LEDStatus = false; digitalWrite(LED5, LOW); }
// LED4 (verte)
if (sensorValue >= 715) digitalWrite(LED4, HIGH); else { LEDStatus = false; digitalWrite(LED4, LOW); }
// LED3 (verte/jaune)
if (sensorValue >= 700) digitalWrite(LED3, HIGH); else { LEDStatus = false; digitalWrite(LED3, LOW); }
// LED2 (jaune)
if (sensorValue >= 675) digitalWrite(LED2, HIGH); else { LEDStatus = false; digitalWrite(LED2, LOW); }
// LED1 (jaune) - niveau le plus bas
if (sensorValue >= 650) digitalWrite(LED1, HIGH); else { LEDStatus = false; digitalWrite(LED1, LOW); }
}
else {
// Silence : tout éteindre
LEDStatus = false;
for (int i = 1; i <= 8; i++) digitalWrite(i + 2, LOW); // Broches 3 à 10
}
}
Schéma de câblage
Suivez les connexions fil par fil :
Personnalisation
- Ajustez les seuils (650, 675, 700…) selon votre environnement et la sensibilité du potentiomètre du KY-038.
- Pour un effet "vu-mètre" plus fluide, remplacez les seuils fixes par une interpolation linéaire.
- Le code peut être étendu pour logger les données sur carte SD ou les envoyer via WiFi/Bluetooth.
Liens sociaux de l'auteur (HeathenHacks) : Facebook | Twitter | Instagram
Processus de fabrication
- Würth Elektronik dévoile le WSEN-ITDS : accéléromètre MEMS 3 axes compact, basse consommation pour IoT industriel
- Intégration de données de capteurs sur Raspberry Pi : Guide pratique complet
- Capteur de suivi de ligne KY‑033 avec Raspberry Pi : Détecteur de porte/lignes simple
- Créer une API robuste de température et capteurs sur Raspberry Pi avec le module GY‑91
- Libérer la puissance de la donnée visuelle dans l'écosystème IdO
- Six principes clés pour construire des applications IoT pilotées par capteurs à fort impact
- Pince robotique avec capteur tactile souple type peau pour manipulation de précision
- Suivi WiFi RSSI précis pour capteurs ISS
- Matériaux révolutionnaires pour communications LED nouvelle génération (Li-Fi, 6G, IoT)