Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
Компоненты и материалы
- Arduino UNO — 1 шт.
- Модуль детекции звука DEVMO High Sensitivity — 1 шт.
- Беспаяльная макетная плата — 1 шт.
- USB-кабель A-B — 1 шт.
- Перемычки — 1 комплект
- Компьютер с Arduino IDE
О проекте
Проект определяет приблизительную частоту самого громкого звука, пойманного модулем. Аналоговый сигнал с модуля подаётся на A0 Arduino. Сигнал дискретизируется (128 отсчётов при 2048 Гц), затем применяется БПФ (FFT) через библиотеку arduinoFFT. Находится пиковая частота и выводится в Serial Monitor.
Принцип работы
- Сэмплирование: 128 отсчётов с периодом ~488 мкс (частота 2048 Гц).
- Окно Хэмминга для снижения утечек спектра.
- Прямое БПФ → комплексные числа → амплитудный спектр.
FFT.MajorPeak()возвращает частоту с максимальной амплитудой.
Код (AudioFrequencyDetectorV1-0.ino)
#include "arduinoFFT.h"
#define SAMPLES 128
#define SAMPLING_FREQUENCY 2048
arduinoFFT FFT = arduinoFFT();
unsigned int samplingPeriod;
unsigned long microSeconds;
double vReal[SAMPLES];
double vImag[SAMPLES];
void setup() {
Serial.begin(115200);
samplingPeriod = round(1000000 * (1.0 / SAMPLING_FREQUENCY));
}
void loop() {
for (int i = 0; i < SAMPLES; i++) {
microSeconds = micros();
vReal[i] = analogRead(A0);
vImag[i] = 0;
while (micros() < (microSeconds + samplingPeriod)) { /* wait */ }
}
FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD);
FFT.ComplexToMagnitude(vReal, vImag, SAMPLES);
double peak = FFT.MajorPeak(vReal, SAMPLES, SAMPLING_FREQUENCY);
Serial.println(peak);
while (1); // однократный запуск
}
Важно: перед компиляции установите библиотеку arduinoFFT через менеджер библиотек Arduino IDE.
Схема
Модуль звука: VCC → 5V, GND → GND, OUT → A0. На модуле обычно есть потенциометр чувствительности — регулируйте под условия.
Производственный процесс
- Создание потрясающей системы Ambilight для монитора на Arduino
- Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
- Собираем свой Tamagotchi на Arduino: цифровой питомец своими руками
- Как воспроизводить аудио с Arduino UNO и DFPlayer Mini – Пошаговое руководство
- Умный беспроводной выключатель света: Arduino-контроллер для удаленного управления
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Умный водяной пистолет с датчиком движения на Arduino Nano
- Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
- Arduino Sunflower: электронный подсолнух, следящий за солнцем
- Самодельный RC Porsche на Arduino: Пошаговое руководство