Рейтинг@Mail.ru
Модуль с микрофоном
Модуль с микрофоном

Как подключить датчик звука (микрофон) к Arduino

Подключим модуль с звуковым датчиком (микрофоном CMA-4544PF-W) к Arduino.

Инструкция по подключению датчика звука к Arduino

Вам понадобится

  • Arduino;
  • модуль с электретным капсюльным микрофоном CMA-4544PF-W;
  • 3 светодиода (зелёный, жёлтый и красный);
  • 3 резистора по 220 Ом;
  • соединительные провода.

1Электретный капсюльный микрофон CMA-4544PF-W

Электретный микрофон CMA-4544PF-W, который является основой модуля, реагирует на звуковые волны с частотами от 20 Гц до 20 кГц. Микрофон является всенаправленным, т.е. чувствителен к звуку, приходящему со всех направлений, с чувствительностью -44 дБ. Более подробно об устройстве и принципе действия электретных микрофонов можно почитать в статье «Устройство и принцип работы электретных микрофонов».

Электретный капсюльный микрофон CMA-4544PF-W
Электретный капсюльный микрофон CMA-4544PF-W

2Схема подключения микрофона к Arduino

Модуль содержит в себе электретный микрофон, которому необходимо питание от 3 до 10 вольт. Полярность при подключении важна. Подключим модуль по простой схеме:

  • вывод "V" модуля – к питанию +5 вольт,
  • вывод "G" – к GND,
  • вывод "S" – к аналоговому порту "A0" Arduino.
Схема подключения электретного микрофона к Arduino
Схема подключения электретного микрофона к 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

Давайте соберём своеобразный простейший эквалайзер по приложенной схеме.

Схема «эквалайзера» на Arduino, датчике звука и светодиодах
Схема «эквалайзера» на 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 мВ. Вам для своего микрофона придётся определить их самим.

Последнее изменениеВторник, 31 Январь 2017 19:11
(4 голосов)
Прочитано 14892 раз

Поделиться

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены