Блог о программировании, электронике и рыбалке

Подключение микрофонного модуля к Arduino

подключение микрофонного модуля к ArduinoВ этой статье я опишу процесс подключение микрофонного модуля к контроллеру Arduino.

Данный проект будет использоваться в качестве индикатора акустического шума.

Данный модуль я купил у китайцев достаточно давно, после чего успешно забыл о нем, но сегодня он мне попался на глаза и я решил с ним разобраться.

Назначение выводом микрофонного модуля

подключение микрофонного модуля к Arduino

Данный модуль имеет 4 вывода для подключения к внешним устройствам:

  • AD – выход аналогового сигнала
  • G – GND
  • + - +5V
  • D0 – выход дискретного сигнала

Принцип работы микрофонного модуля

На аналоговом выходе АО, в режиме реального времени, появляется напряжение, уровень которого зависит от уровня сигнала, принимаемого микрофоном.Когда уровень сигнала превышает порог, который устанавливается с помощью подстроечного резистора на плате модуля, то на дискретном выходе D0 появляется сигнала высокого уровня.

Подключение микрофонного модуля у контроллеру Arduino

  • AD на микрофонном модуле подключаем к аналоговому пину A0 Arduino
  • G на микрофонном модуле подключаем к GND Arduino
  • + на микрофонном модуле подключаем к +5V Arduino
  • D0 на микрофонном модуле подключаем к дискретному пину D9 Arduino (я его не буду использовать)

Внешне это будет выглядеть так:

подключение микрофонного модуля к Arduino

Проверочный скетч для работы с микрофонным модулем

В данном скетче реализована передача данных о аналоговом уровне сигнала в Монитор порта.

const int analogInPin = A0;
int sensorValue = 0;

void setup() {
Serial.begin(9600);
Serial.println("Microphone Test" );
}

void loop() {
sensorValue = analogRead(analogInPin);
Serial.print("Microphone value= ");
Serial.println(sensorValue);
delay(1000);
}

Присоединяйтесь к нашей группе в Telegram @GeekElectronics
  • keyboard_arrow_downПодключение микрофонного модуля к Arduino
    • Автор:
    • Миниатюра: Подключение микрофонного модуля к Arduino
    • Рубрика: Arduino от А до Я
    • Обновлено: 25.06.2019
    • Комментариев: 9
    • Просмотров: 37 051
  • Оцените пожалуйста статью
    1 Star2 Stars3 Stars4 Stars5 Stars
    Загрузка...
  • Поделитесь с друзьями
Geek Electronics

Комментариев: 9

  • Avatar for source
    Сергей:

    Что-то у меня монитор порта никак на звук не реагирует. Только на вращение потенциометра. Не знаете в чем может быть дело?

    • Avatar for source
      source™:

      проверьте подключение - действительно ли к A0 подключен аналоговый выход модуля. возможно, что его положение отличается от описанного варианта.
      установите резистор в среднее положение
      можете еще убрать из кода строку delay(1000); чтобы чаще обновлялись данные
      если не поможет, то видимо модуль неисправен.

  • Avatar for source
    Игемон:

    Та же проблема, что и у Сергея. Реакции от модуля добился только в непосредственной близости от модуля. И реакция идет не столько на шум, сколько на давление воздушного потока.

    Исходя из этого могу предположить, что сие творение способно регистрировать только очень громкий звук (типа фронта ударной волны). Видимо, полноценного усиления сигнала в модуле не происходит. По крайне мере голос человека с расстояния пары сантиметров, громкий звук от колонок и прочее он не воспринимает от слова совсем.

    • Avatar for source
      Иван:

      const int analogPin = A0;
      void setup() {
      Serial.begin(9600);
      }

      void loop() {
      int mn = 1024;
      int mx = 0;
      for (int i=0; i < 1000; ++i) {
      int val = analogRead(analogPin);
      mn = min(mn, val);
      mx = max(mx, val);
      }
      Serial.print("m=");
      Serial.print(mn);
      Serial.print(" M=");
      Serial.print(mx);
      Serial.print(" D=");
      Serial.print(mx-mn);
      Serial.println();
      }

  • Avatar for source
    Никита Ардуинщик:

    у меня ардуино уно все подключил правильно, но при подключении микрофона она нагревается и отключается. Кто с этим сталкивался и как с этим бороться?

  • Avatar for source
    UserD:

    Красавчик ;) Тото и дело у звука частота больше. Убираем к черту задержку и скорость 115200 и радуемся волнам)) Автор, поправь скетч
    void setup(){
    Serial.begin(115200);
    }

    void loop()
    {
    sensorVar=analogRead(A0);
    Serial.println(sensorVar);
    }

  • Avatar for source
    Денис:

    У меня вообще показывает 0 и всё, я блин ору на всю комнату, а он 0 показывает, подключил всё правильно...

  • Avatar for source
    alex:

    Осталось увеличить скорость до 250000, вставить в раздел setup() фрагмент из книги С. Монка "Программируем Arduino Профессиональная работа со скетчами" фрагмент, ускоряющий аналоговый ввод до 62 кГц (стр. 60) (можно вводить сигнал с двух (а если надо и с трёх микрофонов) и разделить ввод звукового сигнала (в отдельном цикле и сохранение в массиве) и вывод его на Монитор порта (второй цикл).

    const byte PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
    const byte PS_16 = (1 << ADPS2);
    const int size1 = 600;
    int signal1[size1];

    void setup() {
    ADCSRA &= ~PS_128; // сбросить масштаб 128
    ADCSRA |= PS_16; // добавить масштаб 16 (1 МГц)
    Serial.begin(250000);
    while (! Serial) {};
    Serial.println(PS_128, 2);
    Serial.println(PS_16, 2);
    for (int i = 0; i < size1; i ++)
    {
    signal1[i] = analogRead(A0);
    }
    for (int i = 0; i < size1; i ++)
    {
    Serial.print(i);
    Serial.print("\t");
    Serial.println(signal1[i]);
    }
    }
    void loop() {
    }
    При выводе на Плоттер первые две строки вывода на печать целесообразно закомментировать. Длительность записи при таком количестве отсчётов - порядка 10 мс. При необходимости записи более длинного фрагмента можно снизить частоту записи путём вставки в цикл микросекундных задержек или перейти к байтовому представлению чисел, поделив вводимые значения на 4 (сдвинув вправо на 2 разряда) и, соответственно, увеличить размер массива.

Добавить комментарий

arrow_upward