Skip to contentSkip to main navigation Skip to footer

Arduino и микрофон

Описание


Arduino весьма неплохо измеряет напряжение, почему бы не подключить к ней микрофон? Просто голый микрофонный капсюль подключать нет смысла, для работы с ним понадобятся ещё некоторые электронные компоненты. У китайцев есть несколько вариантов микрофонных модулей, но самый хороший из них – на базе микросхемы MAX9814 (вынесен на картинке справа), такой и идёт в наборе GyverKIT:

Данный модуль обеспечивает:

  • Усиление сигнала с микрофона до амплитуды 1.25V (выходной диапазон 0.. 2.5V)
  • Встроенный АРУ – автоматическая регулировка усиления, выравнивает громкость тихих и громких звуков
  • Подавление шума – сигнал с микрофона довольно чистый даже при не очень хорошем питании. Его очень приятно обрабатывать, да и рацию можно сделать

Пины и настройки модуля:

  • GND и Vdd (V+): питание, 3.. 5V
  • Out: выход сигнала для подключения к МК
  • Gain (G): настройка усиления
    • Никуда не подключен: 60dB
    • На GND: 50dB
    • На VCC: 40dB
  • AR: настройка компрессии звука (время восстановления)
    • Никуда не подключен: 1:4000 мс
    • На VCC: 1:2000 мс
    • На GND: 1:500 мс

Подключение


К питанию и на аналоговый пин:
Примечание:

  • На схеме с Arduino (слева) можно переключить опорное напряжение (пин REF) на встроенный источник 3.3V, желательно через резистор на 10к. Соответственно в программе вызвать analogReference(EXTERNAL). Это нужно для того, чтобы расширить диапазон чтения сигнала микрофона и обрабатывать его более точно (он выдаёт 0.. 2.5V)
  • На схеме с Wemos (справа) мы подключаем микрофон на питание 3.3V. Сигнал он всё равно выдаёт 0.. 2.5V, что очень хорошо: у Wemos как раз 3.3V – верхняя граница напряжения на аналоговый пин A0

Библиотеки


Модуль выдаёт аналоговый сигнал, то есть его достаточно опрашивать стандартными средствами Arduino для получения сырого сигнала. Но полезные библиотеки всё таки есть:

  • Если микрофон используется для измерения громкости звука, то можно воспользоваться библиотекой амплитудного анализа VolAnalyzer, которая обработает звук и преобразует громкость в нужный диапазон, а также будет автоматически подстраивать чувствительность при изменении среднего уровня громкости
  • Clap – библиотека для распознавания хлопков в ладоши, удобно использовать совместно с VolAnalyzer
  • Для частотного анализа звука можно использовать библиотеку FHT (только для AVR)

Примеры


Выведем сырой сигнал в порт
void setup() {
  Serial.begin(9600);

  // переключаем на внешнее опорное
  // его подключаем к 3.3V
  analogReference(EXTERNAL);  
}

void loop() {
  Serial.println(analogRead(0));
}

Откроем монитор порта и скажем что-нибудь в микрофон

Отлично! Но это сырой сигнал, с ним работать неудобно – он не отражает усреднённую громкость, а всего лишь показывает форму звукового сигнала

Пример с VolAnalyzer

Заведём похожий пример, но с библиотекой VolAnalyzer: выведем приведённую “громкость” звука и построим график:

#include "VolAnalyzer.h"
VolAnalyzer analyzer(A0);  // микрофон на А0

void setup() {
  Serial.begin(9600);

  // переключаем на внешнее опорное
  // его подключаем к 3.3V
  analogReference(EXTERNAL);
}

void loop() {
  // если анализ завершён
  if (analyzer.tick()) {
    Serial.println(analyzer.getVol());
  }
}

И получим гораздо более применимые для проектов значения:

Такой сигнал достаточно подать на светодиод – и уже получится светомузыка!

Домашнее задание


  • Изучить библиотеку VolAnalyzer

 

Связанные уроки

Полезный пример?

Подписаться
Уведомить о
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии