Как подключить датчик звука к Ардуино

Расскажем, как подключить датчик звука к Arduino, разберем скетч для включения света от хлопка в ладоши и получения показаний датчика на мониторе порта.

Рассмотрим на этом занятии аналоговый датчик звука для Ардуино. Расскажем, как подключить датчик звука к Arduino, разберем скетч для автоматического включения света от хлопка в ладоши и получения показаний датчика звука на мониторе порта. Рассмотрим логический тип данных boolean в языке программирования C++.

Датчик звука (микрофон) для Arduino

Состоит датчик из платы (смотри картинку ниже) на котором смонтированы порты подключения к Arduino Nano, усилитель звука, подстроечный резистор и электронный микрофон, чувствительный к звуку, приходящему во всех направлениях. Регулятором чувствительности (переменным резистором) можно настраивать чувствительность микрофона и выбирать от какого уровня шума будет срабатывать датчик.

Датчик звука Arduino для слежения за уровнем шума
Датчик звука Arduino для слежения за уровнем шума

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

Как подключить датчик звука к Arduino

Датчик звука для Ардуино имеет на плате подписанные выходы (обозначение у каждого производителя может отличаться), но проблем с подключением датчика к Ардуино возникнуть не должно. Питание датчика производится от 5V, выход (OUT, S или AO) подключается к любому аналоговому входу на Arduino Uno, а выход DO к Pin 2, если требуется получать цифровой сигнал на Ардуино с датчика микрофона.

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • датчик звука (микрофон);
  • 1 светодиод и 1 резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».
Фото. Как подключить датчик звука к Arduino UNO
Фото. Как подключить датчик звука к Arduino UNO

Чтобы сделать своими руками светильник, который будет включаться по хлопку в ладоши необходимо собрать электрическую схему из следующих элементов: светодиод с резистором, плата Arduino и датчик звука для включения света своими руками. Светодиод можно подключить к любому выходу, в скетче мы использовали Pin 11. Датчик может отправлять цифровой (Pin 2) и аналоговый сигнал (Pin A0).

После сборки схемы, подключите Ардуино к компьютеру и загрузите скетч.

Скетч для включения света по хлопку

boolean statuslamp; // состояние лампы: true - включено, false - выключено

void setup() {
   pinMode(12,OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output»)
   pinMode(A0,INPUT); // к аналоговому входу A0 подключим датчик (англ. «intput»)
   statuslamp=false; // начальное состояние - лампа выключена
   Serial.begin(9600); // подключаем монитор порта
}

void loop() {
   Serial.println (analogRead(A0)); // выводим значение датчика на монитор
  
   if(analogRead(A0)>60) {
      statuslamp=!statuslamp; // меняем статус лампы при регистрации хлопка
      digitalWrite(12,statuslamp); // переключаем светодиод на выходе 12
      delay(20); // задержка, "дребезга" хлопков
   }
}

Пояснения к коду:

  1. спецификатор boolean используется для объявления логических значений (истина/ложь) в языке программирования C++;
  2. ключевое слово true представляет собой логическую константу, имеющую значение «истина». Ключевое слово false имеет значение «ложь»;
  3. В строчке statuslamp=!statuslamp; мы меняем статус лампы при хлопке;
  4. В строчке if(analogRead(A0)>60) вместо значения 60 можно подставить любое значение. Узнайте показания датчика звука при хлопке в ладоши на мониторе порта и поставьте свои значения в скетч, при необходимости.
1 Star2 Stars3 Stars4 Stars5 Stars (67 votes, average: 4,82 out of 5)
Загрузка...

24 комментариев для “Пример: Как подключить датчик звука к Ардуино”

  1. А можно сделать чтобы светодиод при хлопке выключался сам через некоторое время?

    1. Конечно можно. Для этого следует добавить паузу в условии при срабатывании датчика (поставил 2 секунды для примера).

      void loop() // процедура loop
      {
      Serial.println (analogRead(A0)); // выводим значение на монитор
      if(analogRead(A0)>60) // регистрация хлопка на датчике

      {
      statuslamp=!statuslamp; // меняем статус лампы при хлопке
      digitalWrite(12,statuslamp); // переключаем светодиод на выходе 12
      delay(20); // задержка, «дребезга» хлопков

      delay(2000); // задержка в 2 секунды
      statuslamp=!statuslamp; // меняем статус лампы
      digitalWrite(12,statuslamp); // переключаем светодиод на выходе 12
      }

      }

      Но если необходима большая задержка, то следует переделать весь скетч. Иначе необходимо будет долго ждать , когда после срабатывания датчика звука будет включаться лампа на Ардуино.

        1. Спасибо. Исправил ошибку, но немного по-своему. В вашем примере выключение лампы происходило не в условии, а в процедуре loop. То есть лампа бы постоянно сама включалась/выключалась без хлопков.

  2. void loop() {

    //собираем 10 значений через каждые 2 миллисекунды
    for(byte b = 0; b < 10; b++){
    valueArray [b] = analogRead(micro);
    delay(2);
    }
    //суммируем все полученные значения
    for(byte b = 0; b < 10; b++){
    mValue = mValue + valueArray [b];
    }
    //находим среднее значение
    mValue = mValue/ 10;

    Serial.println(mValue);
    }

    вот работающий скетч. все остальное что нашел по первым трем результатам поисков работает только на "есть сигнал" \ "нет сигнала"

  3. Можно ли этот датчик звука использовать для создания детектора азбуки Морзе?

  4. А можно сделать так чтоб световой индикатор был L (который уже в ардуинке)?

  5. А как можно сделать так чтобы серво привод поворачивался при хлопке на 90° а через 30сек. вставал в обратное положение

  6. Здравствуйте, какой будет скетч для Arduino nano с датчиком звука, и еще другие датчики надо подключить

    1. Здравствуйте. Для Arduino Nano скетч и схема подключения датчика звука ничем не отличается.

  7. Здравствуйте, опишите подробнее как и куда подключать светодиод и транзистор?

  8. А можно ли сделать так чтобы сказанное в микрофон воспроизводилось в динамике?

    1. К сожалению нет, так как датчик звука отправляет на микроконтроллер электрические импульсы, сила которых зависит от громкости звука. Записи звука не происходит.

  9. Здравствуйте! А можно изменить то, на что реагирует датчик? Например, на определённый диапазон частот(40-50 Гц) или на определённый диапазон громкости? И загорался разными диодами? Например, красным на 40-50 Гц, зелёным-на 50-70?

  10. С тем модулем, что на картинке так работать не будет. У него на аналоговом выходе что-то типа опорного напряжения (регулируется потенциометром на плате), с которым сравнивается сигнал с микрофона. При превышении заданного порока на цифровом выходе появляется лог.1

    1. На данном датчике звука два выхода — цифровой и аналоговый. Если требуется использовать принципиально цифровой выход, то следует поменять условие if(digitalRead(2)=HIGH)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *