Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
Matériel
- 1 × Arduino UNO
- 1 × Module détection sonore haute sensibilité (ex. DEVMO)
- 1 × Breadboard + fils
- Câble USB, ordinateur
Principe : FFT sur Arduino
- Le module sort un signal analogique (A0) proportionnel à la pression acoustique.
- L'Arduino échantillonne à 2048 Hz (128 points → résolution ~16 Hz).
- Une FFT (Fast Fourier Transform) via la bibliothèque
arduinoFFTtransforme le signal temporel en spectre de fréquences. - La fonction
MajorPeak()retourne la fréquence dominante. - Résultat affiché sur le Moniteur Série (115200 bauds).
Code complet
#include "arduinoFFT.h"
#define SAMPLES 128 // puissance de 2, max 128 sur Uno
#define SAMPLING_FREQUENCY 2048 // Hz (Nyquist → max 1024 Hz détectables)
arduinoFFT FFT = arduinoFFT();
double vReal[SAMPLES];
double vImag[SAMPLES];
unsigned int samplingPeriod;
unsigned long microSeconds;
void setup() {
Serial.begin(115200);
samplingPeriod = round(1000000 * (1.0 / SAMPLING_FREQUENCY));
}
void loop() {
// Acquisition
for (int i = 0; i < SAMPLES; i++) {
microSeconds = micros();
vReal[i] = analogRead(A0);
vImag[i] = 0;
while (micros() < microSeconds + samplingPeriod) { /* wait */ }
}
// FFT
FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD);
FFT.ComplexToMagnitude(vReal, vImag, SAMPLES);
// Pic principal
double peak = FFT.MajorPeak(vReal, SAMPLES, SAMPLING_FREQUENCY);
Serial.println(peak);
while (1); // exécution unique (reset pour recommencer)
}
Limites & améliorations
- Bande passante limitée à ~1 kHz (échantillonnage 2 kHz).
- Résolution fréquentielle ~16 Hz (128 points).
- Pour l'audio complet (20 Hz – 20 kHz) : utiliser un ESP32, un ADC plus rapide ou un DSP dédié.
- Fenêtre de Hamming appliquée pour réduire les fuites spectrales.
Schéma de connexion
Module son → VCC à 5 V, GND à GND, OUT à A0. Aucune résistance nécessaire (sortie déjà conditionnée).
Processus de fabrication
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
- Construisez votre propre Tamagotchi Arduino : Un animal de compagnie numérique DIY
- Comment lire de l'audio avec Arduino UNO et DFPlayer Mini – Guide étape par étape
- Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
- Morpion sur matrice LED MAX7219 avec boîtier en carton
- Pistolet à eau intelligent à détection de mouvement avec Arduino Nano
- Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun
- Tournesol Arduino : Construisez un Tournesol Électronique Suiveur de Soleil