Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем

Компоненты и материалы

О проекте

Проект определяет приблизительную частоту самого громкого звука, пойманного модулем. Аналоговый сигнал с модуля подаётся на A0 Arduino. Сигнал дискретизируется (128 отсчётов при 2048 Гц), затем применяется БПФ (FFT) через библиотеку arduinoFFT. Находится пиковая частота и выводится в Serial Monitor.

Принцип работы

  1. Сэмплирование: 128 отсчётов с периодом ~488 мкс (частота 2048 Гц).
  2. Окно Хэмминга для снижения утечек спектра.
  3. Прямое БПФ → комплексные числа → амплитудный спектр.
  4. 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. На модуле обычно есть потенциометр чувствительности — регулируйте под условия.

Производственный процесс

  1. Создание потрясающей системы Ambilight для монитора на Arduino
  2. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  3. Собираем свой Tamagotchi на Arduino: цифровой питомец своими руками
  4. Как воспроизводить аудио с Arduino UNO и DFPlayer Mini – Пошаговое руководство
  5. Умный беспроводной выключатель света: Arduino-контроллер для удаленного управления
  6. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  7. Умный водяной пистолет с датчиком движения на Arduino Nano
  8. Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
  9. Arduino Sunflower: электронный подсолнух, следящий за солнцем
  10. Самодельный RC Porsche на Arduino: Пошаговое руководство