Модули KY-038 и KY-037 представляют собой датчики звука. Отличие версии 037 от 038 лишь в размере микрофона. Эти модули находят свое применение в различных системах управления. Например, такие модули часто устанавливают в подъездах для включения освещения при звуке шагов, что позволяет значительно сэкономить электроэнергию. Также с помощью этих модулей можно управлять роботом посредством хлопков или других звуков.
Модуль состоит из микрофона и потенциометра, позволяющего регулировать чувствительность датчика. Также в модуле имеется компаратор – устройство, посылающее цифровой сигнал при достижении аналоговым сигналом на входе определенных значений.
Характеристики:
- Питание: 3,3-5 В постоянного тока
- Потребляемый ток: 10 мА
- Выходной сигнал: цифровой и аналоговый
Модуль имеет 4 вывода:
”+” – питание
“G” – “земля”
“A0” – аналоговый выход, передающий выходное напряжения на микрофоне
“D0” – цифровой выход, посылающий логическую единицу при достижении порогового уровня громкости
Подключение к Arduino:
Для подключения датчика нам необходимы:
- Любая Arduino-совместимая плата
- Компьютер с установленной средой Arduino IDE.
- USB кабель для подключения Arduino к персональному компьютеру
В примере мы будем рассматривать подключение при помощи проводов типа папа-папа и макетной платы для соединения без пайки.
1) Для начала просто подключим датчик к плате, для анализа выходных сигналов.
Принципиальная схема подключения компонентов:
Скетч:
const int digital = 2; // Цифровой вход пин 2 const int analog = A0; // Аналоговый вход пин A0 void setup() { pinMode(digital, INPUT); Serial.begin(9600); } void loop() { Serial.print("Digital: "); Serial.print(digitalRead(digital)); // Цифровой сигнал с датчика Serial.print(", Analog: "); Serial.println(analogRead(analog)); // Аналоговый сигнал с датчика delay(50); }
После того как этот скетч загрузится в плату, откройте монитор порта и наблюдайте за получаемыми значениями в тишине и при возникновении шума.
Попробуйте изменить чувствительность датчика, вращая винт потенциометра и повторите наблюдение.
2) Теперь добавим в нашу схему светодиод и попробуем управлять им с помощью хлопков.
Для подключения светодиода необходим резистор номиналом около 220 Ом.
Принципиальная схема подключения компонентов:
Скетч:
const int digital = 2; // Цифровой вход пин 2 const int analog = A0; // Аналоговый вход пин A0 const int led = 9; // Светодиод void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { Serial.print("Digital: "); Serial.print(digitalRead(digital)); // Цифровой сигнал с датчика Serial.print(", Analog: "); Serial.println(analogRead(analog)); // Аналоговый сигнал с датчика delay(50); if (analogRead(analog) < 625 || analogRead(analog) > 637){ //Диапазон значений устанавливайте самостоятельно из расчёта +-4 от показаний в тишине digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); } }
Комментарии
При хлопке каких то серьезных изменений нет. Если дунуть в него, то показания меняются сильно. Если кинуть ручку на стол рядом с датчиком, он не реагирует.
Это нормально? Они так и работают?
if (analogRead(analog) < 625 || analogRead(analog) > 637), подгоняя под нужное значение, например:
if (analogRead(analog) > 450)
Можно просто D9 слушать, когда там "1", например:
if (digitalRead(digital)) digitalWrite(led, HIGH);
Можно вообще без контроллера обойтись и зажигать светодиод прямо с ноги датчика D0.
P.S. Почему-то значки больше/меньше не отображаются((