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

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

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

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

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

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

Для этого занятия потребуется:

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

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

Фото. Как подключить датчик звука к Arduino UNO
Фото. Как подключить датчик звука KY-037 к Arduino UNO

Чтобы сделать своими руками светильник, который будет включаться по хлопку в ладоши необходимо собрать электрическую схему из следующих элементов: светодиод с резистором, плата Arduino и датчик звука KY-037 для включения света своими руками. Светодиод можно подключить к любому выходу, в скетче мы использовали Pin 11. После сборки схемы, подключите Ардуино к компьютеру и загрузите скетч.

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

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. в строчке statuslamp=!statuslamp; мы меняем статус лампы при хлопке;
  3. в строчке if(analogRead(A0)>60) вместо значения 60 можно подставить любое значение. Узнайте показания датчика звука KY-037 при хлопке в ладоши на мониторе порта и поставьте свои значения в скетч, при необходимости.





22 Replies to “Как подключить датчик звука к Ардуино”

        1. После нужного события:
          1. включаете реле
          2. ставите задержку 10 секунд
          3. выключаете реле

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

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

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

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

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

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

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

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

  7. Вопрос . Модно ли сделать из нескольких датчиков шкалу подсветки что б от более громкого крика загоралось больше шкал а от менее громкого меньше шкал. Что то типа атракциона на крик. При этом шкалы от 1 до 24. Из 24 датчиков можно такое соорудить????

  8. Здравствуйте, а можно сделать так , чтобы по хлопку в ладоши звучала музыка? Дайте скетч с этой мелодией.

    #include «pitches.h»
    const int SPEAKER=9;

    int notes[] = {
    NOTE_G7,NOTE_E7,NOTE_D7,NOTE_C7,
    NOTE_C7,NOTE_C7,NOTE_C7,
    NOTE_D7, NOTE_D7,
    NOTE_E7,NOTE_E7,NOTE_E7,
    NOTE_G7,NOTE_G7,
    NOTE_A7,NOTE_A7,
    NOTE_G7,NOTE_E7,NOTE_E7,NOTE_D7,NOTE_G7,
    NOTE_C7,NOTE_C7,NOTE_C7,NOTE_E7,NOTE_E7,NOTE_E7,
    };
    int times[] = {
    400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,
    };
    void setup(){
    for (int i = 0; i < 27; i++){
    tone(SPEAKER, notes[i],times[i]);
    delay(times[i]);
    noTone(SPEAKER);
    }
    }
    void loop(){}

  9. Здравствуйте, подскажите пожалуйста как сделать что бы несколько светодиодов загорелось по хлопку, какой нужен скетч ?

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.