Как подключить датчик звука (микрофон) к Arduino
Инструкция по подключению датчика звука к Arduino
Для проекта нам понадобятся:
- Arduino UNO или иная совместимая плата;
- модуль с электретным капсюльным микрофоном CMA-4544PF-W или аналогичный;
- 3 светодиода (зелёный, жёлтый и красный, вот из такого набора, например);
- 3 резистора по 220 Ом (вот отличный набор резисторов самых распространённых номиналов);
- соединительные провода (рекомендую вот такой набор);
- макетная плата (breadboard);
- персональный компьютер со средой разработки Arduino IDE.
1Электретный капсюльный микрофон CMA-4544PF-W
Электретный микрофон CMA-4544PF-W (инструкцию можно скачать в приложении к статье), который является основой модуля, реагирует на звуковые волны с частотами от 20 Гц до 20 кГц. Микрофон является всенаправленным, т.е. чувствителен к звуку, приходящему со всех направлений, с чувствительностью -44 дБ. Более подробно об устройстве и принципе действия электретных микрофонов можно почитать в статье «Устройство и принцип работы электретных микрофонов».
Мы воспользуемся готовым модулем, в котором присутствует микрофон, а также минимально необходимая обвязка. Приобрести такой модуль можно здесь.
2Схема подключения микрофона к Arduino
Модуль содержит в себе электретный микрофон, которому необходимо питание от 3 до 10 вольт. Полярность при подключении важна. Подключим модуль по простой схеме:
- вывод "V" модуля – к питанию +5 вольт,
- вывод "G" – к GND,
- вывод "S" – к аналоговому порту "A0" Arduino.
3Скетч для считывания показаний электретного микрофона
Напишем программу для Arduino, которая будет считывать показания с микрофона и выводить их в последовательный порт в милливольтах.
const int micPin = A0; // задаём пин, куда подключён микрофон void setup() { Serial.begin(9600); // инициализация послед. порта } void loop() { int mv = analogRead(micPin) * 5.0 / 1024.0 * 1000.0; // значения в милливольтах Serial.println(mv); // выводим в порт }
Для чего может понадобиться подключать микрофон к Arduino? Например, для измерения уровня шума; для управления роботом: поехать по хлопку или остановиться. Некоторые даже умудряются «обучить» Arduino определять разные звуки и таким образом создают более интеллектуальное управление: робот будет понимать команды «Стоп» и «Иди» (как, например, в статье «Распознавание голоса с помощью Arduino»).
4«Эквалайзер»на Arduino
Давайте соберём своеобразный простейший эквалайзер по приложенной схеме.
5Скетч «эквалайзера»
Немного модифицируем скетч. Добавим светодиоды и пороги их срабатывания.
const int micPin = A0; const int gPin = 12; const int yPin = 11; const int rPin = 10; void setup() { Serial.begin(9600); pinMode(gPin, OUTPUT); pinMode(yPin, OUTPUT); pinMode(rPin, OUTPUT); } void loop() { int mv = analogRead(micPin) * 5.0 / 1024.0 * 1000.0; // значения в милливольтах Serial.println(mv); // выводим в порт /* Пороги срабатывания светодиодов настраиваются вами экспериментальным методом: */ if (mv < 2100) { // порог срабатывания зелёного светодиода, мВ digitalWrite(gPin, HIGH); digitalWrite(yPin, LOW); digitalWrite(rPin, LOW); } else if (mv < 2125) { // порог срабатывания жёлтого светодиода, мВ digitalWrite(gPin, HIGH); digitalWrite(yPin, HIGH); digitalWrite(rPin, LOW); } else if (mv < 2150) { // порог срабатывания красного светодиода, мВ digitalWrite(gPin, HIGH); digitalWrite(yPin, HIGH); digitalWrite(rPin, HIGH); } }
Эквалайзер готов! Попробуйте поговорить в микрофон, и увидите, как загораются светодиоды, когда вы меняете громкость речи.
Значения порогов, после которых загораются соответствующие светодиоды, зависят от чувствительности микрофона. На некоторых модулях чувствительность задаётся подстроечным резистором, на моём модуле его нет. Пороги получились 2100, 2125 и 2150 мВ. Вам для своего микрофона придётся определить их самим.
Download attachments:
- Datasheet на электретный микрофон CMA-4544PF-W (106 Downloads)