Меню

Arduino датчик шума ky 037

Датчик звука

Датчик позволяет через микрофон определить звук (шум), который превысит заданный уровень. Например, определить момент включения мотора, плача ребёнка и другие источники звука. Уровень шума определяется подстройкой потенциометра на модуле. Кроме того, на модуле есть светодиод, который начинает светиться при обнаружении звука. Также есть второй светодиод, показывающий питание. Иногда встречается название — датчик хлопков, такое определение точнее отражает характер работы.

Подстройка производится экспериментальным путём. Крутите отвёрткой в нужную сторону, пока не добьётесь желаемого результата.

Подключение очень простое — у модуля три вывода: питание 5В, земля и цифровой вывод.

Запустите скетч, откройте Serial Monitor и начинайте говорить. При обнаружении звука на экране появится надпись «Alarm! Alarm!». Данный скетч можно применять для определения ночного тыгыдыка кота в квартире. В реальной жизни чувствительность датчика желает лучшего, на хлопок реагирует, а на голос практически нет.

Модули с цифровым и аналоговым выводами

Также можно встретить модули, у которых четыре вывода: питание, земля, цифровой и аналоговый выводы. К ним относятся модели KY-030 (устар.), KY-037 (микрофон с высокой чувствительностью), KY-038 (конденсаторный микрофон).

Подключение у модулей одинаковое.

На модуле датчика должен загореться индикатор питания L1. Необходимо сначала подкрутить подстроечный резистор, настроив чувствительность датчика. В настройке чувствительности поможет индикатор L2. Если индикатор L2 при включении модуля тоже загорается, крутим подстроечный резистор против часовой стрелки до тех пор, пока не дойдём до момента затухания индикатора. Если же индикатор L2 находится в выключенном состоянии при включении модуля, значит крутим подстроечный резистор по часовой стрелке, пока не дойдём до момента, когда индикатор начнёт загораться. В итоге, нужно поймать момент, где чуть повернув подстроечный резистор в одну или другую сторону, индикатор стремиться потухнуть или загореться, и затем нужно повернуть совсем немного против часовой стрелки, чтобы индикатор L2 потух, но при хлопках в ладоши пытался загораться.

Скетч для цифрового вывода смотри выше. Для аналогового вывода напишите самостоятельно.

Включить по хлопку и выключить через несколько секунд

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

Включить и выключать поочерёдно по хлопку

Напишем новый скетч с другой логикой — по первому хлопку включить светодиод, по повторному хлопку светодиод выключим.

Включаем светодиод по двойному хлопку

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

Источник

Датчик звука KY-037. Ардуино проект.

Сегодня в обзоре Датчик звука KY-037. Это продолжение серии про бесконтактные выключатели которые можно посмотреть на моём канале https://www.youtube.com/Ардуинодляначинающих .
Собранное устройство позволяет обнаружить звук и подать сигнал на Ардуино.

Звук должен быть довольно громким, и не верьте тем кто говорит, что можно на этом датчике построить сигнализацию или поставить в коридор и она услышит что кто-то идёт и включит свет. Враньё.
В своём видео я показал два примера использования датчика KY-037.
Первый это включение светодиода, а во втором я подключил реле и включаю лампу на 220 вольт.
Ещё я пробовал использовать этот датчик как просто микрофонный усилитель, но не достиг хороших результатов. Единственное что у меня получилось это подключить Аналоговый вход и землю от датчика. Так я смог делать записи в довольно средненьком качестве. А так как Аналоговый вход на датчике – это простое подключение к микрофону, то получилось, что я просто подключил микрофон на вход.

В видео также даны схемы подключения датчика к Ардуино, Показана распиновка модуля, и описание скетчей.
Так что если интересно, то обязательно посмотрите это видео.

Датчик звука KY-037. Ардуино проект.
Сегодня я сделаю обзор, про так называемый Датчик звука для Ардуино. А конкретно про датчик KY-037, который реагирует на звук. Это второе видео из серии «Бесконтактная кнопка или бесконтактный выключатель».
Собранное устройство позволяет обнаружить звук и подать команду на Ардуино. Правда — это должен быть довольно громкий звук, и находиться он должен на близком расстоянии от микрофона. Я пересмотрел много видео про этот датчик. Не верьте тем, кто говорит, что его можно использовать в качестве охранного устройства или реагировании на шум в комнате. Шум должен быть, ну очень, громкий.
Вот посмотрите простой пример включения лампы от щёлканья пальцами. Позже мы разберём этот пример.
Я пробовал использовать датчик вместо обычного микрофона, и качество записи с него получилось средненькое. Если заинтересовались, то давайте посмотрим примеры работы.

Датчик звука. Подключение к Ардуино.
Давайте рассмотрим две схемы подключения датчика звука KY-037.
Первая для включения светодиода, а вторая чуть посложнее. Она будет включать реле, которое будет включать лампу на 220 вольт.
Светодиод я подключил к 13 пину Ардуино, так как не хотел искать резистор. И написал скетч включения и выключения светодиода от хлопка в ладоши или щёлкнув пальцами. Я даже не написал, а просто взял готовый скетч из урока про Кнопки. Кто не смотрел, советую посмотреть. Ведь уметь работать с кнопками – это почти основное в Ардуино.

Читайте также:  Двигатель qg15 расположение датчиков

На этой схеме я подключил реле, и теперь можно управлять мощными нагрузками. Как это работает вы уже видели в примере.
Если вы хотите управлять устройствами постоянного тока на 12 — 40 вольт, то вместо реле можно использовать транзистор. Он меньше в размере и потребляет значительно меньше. Если надо то я сниму видео как это сделать.

Ky-037 схема
Схема устройства.
микрофон датчика звука — электретный, большой чувствительности. Подключен к компаратору LM393.
Скачать даташит по датчику можно по ссылке в описании или на моём сайте.

Светильник с датчиком звука KY-037
Здесь показан скетч работы датчика звука для включения лампы. Так как мы будем подключать лампу на 220 вольт, то используем для этого модуль реле.
Для того чтобы свет зажегся надо хлопнуть в ладоши или щёлкнуть пальцами. Для выключения надо сделать тоже самое.
Как видите всё очень просто и собирается за несколько минут, а эффект очень большой. Вы сможете всех удивить таким необычным включением света.

Ну вот мы изучили ещё один датчик для Ардуино. Как оказалось – это совсем не сложно.
Если вам понравилось это видео, то поставьте, пожалуйста лайк. Это очень сильно помогает в продвижении канала на ютуб. А я буду видеть, что мои видео нравятся, и буду стараться выпускать их почаще и искать интересные модули и их применение.

Источник

Датчик звука KY-037. Датчики. Ардуино

Привет! Вы наверняка видели светильники, которые включаются от хлопков в ладоши. И если вы хотели такой же, этот обзор для вас. Потому что, сегодня рассмотрим датчик звука KY-037 для Ардуино, который поможет нам сделать такой же переключатель.

В прошлый раз мы рассматривали другой датчик для Ардуино. Датчик препятствий KY-033, так что, посмотрите этот обзор, если пропустили или уже забыли.

Датчик звука KY-037 — это небольшая плата с микрофоном, усилителем и переменным резистором, чтобы настроить чувствительность вручную.

Микрофон преобразует колебания звука в электрический сигнал. Его необходимо усилить с помощью компаратора, чтобы считать на Ардуино.

Как видно, датчик имеет 4 контакта. А значит два вида сигналов — аналоговый и цифровой. Разумеется, мы сможем их использовать в программе, так как при срабатывании датчика на выходе появится логическая 1 или значение близкое к 1024 на аналоговом выходе.

Технические характеристики

  • Напряжение питания: 3,3 — 5 В
  • Цифровой и аналоговый вывод
  • Максимальное расстояние обнаружения – 5 м
  • Размер модуля: 32×17×15 мм
  • Общий вес: 12.5 г

Датчик звука KY-037

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

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

Для того, чтобы выполнить этот урок нам понадобиться.

Программа

Как видно, программа достаточно проста. Мы считаем данные с цифрового и аналогового порта. Выведем их в монитор последовательного порта. Так же используем плоттер для построения графиков. И настроим включение светодиода на хлопок в ладоши.

Монитор последовательного порта

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

Монитор плоттера построения графиков

В результате, на мониторе плоттера видно небольшие отклонения графика. Это и есть хлопки в ладоши рядом с микрофоном.

Датчик звука срабатывает на хлопок в ладоши

Полный текст программы

Заключение

Мы рассмотрели еще один датчик для Ардуино. Датчик звука KY-037. С его помощью можно делать различные переключатели или системы оповещения реагирующие на звук. Также мы попробовали использовать встроенный в IDE плоттер для построения графиков. Отдельный урок о нем сделаем в будущем.

Источник

Подключаем датчик звука к Arduino

Физическое окружение человека все время «умнеет», подстраиваясь под запросы и требования хозяина. Речь, конечно же идет об автоматизированных и роботизированных вещах, облегчающих труд и выполняющих все те функции, которые существу разумному делать слишком долго, тяжело или нудно. Большая часть техники такого рода работает с управлением на основе микроконтроллеров, которые в свою очередь, можно назвать миниатюрными компьютерами, ориентированными на контроль другого, более простого оборудования.

Читайте также:  Как замаскировать датчик движения

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

Единственный вопрос становящийся перед проектировщиками «умных» устройств, использующих микроконтроллеры – легкое ими управление человеком, то есть обеспечение простого интерфейса контроля. Одно из наиболее логичных из приходящих на ум решений – человеческий голос, отдавая команды, которыми пользователь абсолютно вербальным образом сможет управлять работой логического выключателя, конечно в рамках заложенной в того программы. Только сразу встает проблема получения голосовых последовательностей устройством. Что ж, есть и решение – платы захвата звука, среди которых в разрезе технологии Arduino сразу вспоминаются KY-037 и KY-038, унифицированные и отличающиеся только размером микрофона.

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

Характеристики

Характеристики у обоих устройств KY-037 и KY-038 достаточно скромные, и отличающихся, как было сказано ранее, между собой только размером микрофона.

  • питание — 3,5–5В;
  • цифровой выход — есть, однобитный, работающий в режиме индикации наличия звука или тишины;
  • аналоговый — присутствует, с градацией получаемого сигнала в 1024 уровня;
  • вес — в среднем 12..13 грамм;
  • предел чувствительности — до 5 метров;

Принципиальная схема и выводы устройства:

Сразу хочется заметить, что названые детекторы, регистрируют только достаточно громкие звуки и не очень чувствительны к их переходным состояниям, к примеру, используемым в словах или фразах. То есть, сделать выключатель или активатор реагирующий на хлопок и свист гораздо проще, чем запрограммировать систему распознавания голосовых команд с применением KY-037 или KY-038. Некоторые идеи по осуществлению требуемой функциональности будут представлены далее.

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

Простые схемы использования

Чтобы продемонстрировать работу датчиков звука с Arduino можно собрать простую схему:

Резистор используемый в ней, берется номиналом в 220 Ом. Основная функциональность выражается в зажигании светодиода при обнаружении громких звуков и гашения его в случае тишины. Скетч:

// Диапазон минимальных и максимальных показателей, устанавливается
// для определения значения аналогового сигнала в тишине у платы
// захвата звука, все что будет отличаться служит указателем
// наличия изменений звукового фона. Определяется опытным путем.
const int SilenceMin = 625;
const int SilenceMax = 637;
// Задание портов IN_DIG цифровой вход с KY-037/038,
// IN_ANALOG аналоговый с нее же и OUT_LED пин управляющий светодиодом
const int OUT_LED = 9;
const int IN_ANALOG = A3;
const int IN_DIG = 1;
void setup() <
pinMode(OUT_LED, OUTPUT);
pinMode(IN_ANALOG, INPUT);
pinMode(IN_DIG, INPUT);
>
void loop() <
// Примечание от составителя: если использовать нижеприведенную
// конструкцию, светодиод будет включаться при любом изменении
// звукового фона. Для определения наличия именно команды
// стоит изменить строку на if (AnalogRead(IN_ANALOG) > SilenceMax) <
if (AnalogRead(IN_ANALOG) > SilenceMax || AnalogRead(IN_ANALOG)
Изменяя время задержки, между включением и гашением светодиода, а также пробным путем выведя значения «тишины» SilenceMax и SilenceMin, можно добиться работы приведенной схемы в роли детектора движения по звуку. Конечно, качество определения у него будет низкое, но вполне позволяющее применять конструкцию в цепях управления освещением темных мест. Достаточно добавить фоторезистор для определения текущего уровня видимости, в роли которого можно использовать специальную плату Arduino или обычный радиоэлектронный компонент, подключаемый через делитель.

Как видно по схеме, в ней используются два резистора – R1 на 10 кОм и R2 220 Ом. Светодиод LED в финальном варианте можно заменить на релейную группу, для подачи питания на «взрослые» лампы 220В. Скетч, управляющий всем перечисленным хозяйством:

#DEFINE D1 1
#DEFINE D3 3
#DEFINE A2 2
#DEFINE A4 4
// Характеристики «тишины»
const int SilenceMin = 625;
const int SilenceMax = 637;
// Задание портов: IN_DIG цифровой вход с KY-037/038, IN_ANALOG аналоговый с нее же
// OUT_LED пин управляющий светодиодом, IN_FLASH сигнал от фоторезистора.
const int IN_DIG = D1;
const int OUT_LED = D3;
const int IN_LIGHT = A2;
const int IN_ANALOG = A4;
void setup() <
pinMode(OUT_LED, OUTPUT);
pinMode(IN_ANALOG, INPUT);
pinMode(IN_DIG, INPUT);
pinMode(IN_LIGHT, INPUT);
>
void loop() <
if ( DigitalRead(IN_DIG) == HIGH && DigitalRead(IN_LIGHT) == LOW ) <
// При подключении фоторезистора, как на схеме в темноте он будет давать
// минимальный сигнал, так-как его сопротивление во мраке максимально.
// На свету будет поступать высокий уровень на вход Ардуино и этот
// блок кода не сработает
DigitalWrite(OUT_LED, HIGH);
delay(10000); // долгая задержка
DigitalWrite(OUT_LED, LOW);
>

Читайте также:  Форд фьюжн 1 4 дизель датчик топлива

Задержка подбирается экспериментально, в зависимости от конкретной чувствительности KY-037 или KY-038, а также их настроек, производимых регулятором на плате устройства.

Некоторая информация о голосовом распознавании

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

Первое, что нужно учесть при проектировании – обращение к самому конкретному устройству, чтобы его функционирование не начиналось или прерывалось от случайно сказанного слова. То есть, перед отдачей команды нужно будет произносить не похожий на нее идентификатор конкретного контролера. К примеру: «К7 Включение». Описанное, кстати хорошо тем, что нет похожести согласно произносимых звуков.

Структура слова

Основное, на что нужно обратить внимание при проектировании систем распознавания звука – сама фонетика языка. В русском, есть гласные и согласные буквы. Последние еще и бывают шипящего, звонкого и глухого произношения. Устройства улавливающие звуковые волны, наиболее слышат, как раз, первые, вторые и третьи, а вот к последним «глуховаты». Поэтому, собственно и программировать конечный аппарат требуется именно на их определение, а не слова в целом. Опять же. Каждый человек обладает определенной дикцией и высотой тона голоса. Посудите сами, послушав, как одно и то же слово произносится мужчиной или женщиной. К тому же некоторые люди быстро проговаривают текст, другие медленнее. Все названые факторы требуется учесть при написании скетча обработки.

Еще одно ограничение, накладываемое платам KY-037 и KY-038 – падение уровня улавливаемого сигнала в зависимости от расстояния до его источника. То есть, нужно предусмотреть сравнение именно разниц поступающих пиков, а не конкретных значений.

Некоторые рекомендации

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

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

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

#DEFINE D1 1
#DEFINE D3 3
#DEFINE A2 2
#DEFINE A4 4
// Характеристики «тишины»
const int SilenceMin = 625;
const int SilenceMax = 637;
const int IN_DIG = D1;
const int IN_ANALOG = A4;
// команда «включение» последний байт для блокирования ошибки
const int command_on[]=<857, 704, 740, 720, 740, 0>;
int tPOS=0; // текущее положение в разбираемом слове
void loop() <
int flag=0, GFONEM=ReadAnalog(IN_ANALOG), FOUND_COMMAND_ON = 0;
if (GFONEM==command_on[0]) < // совпадение первого звука последовательности, разбираем
flag=1;
while (flag>0) <
Delay(50); // пауза между произносимыми звуками, подбирается экспериментально
GFONEM=ReadAnalog(IN_ANALOG);
if (GFONEM>MinFONEM) < // ограничитель уровня именно гласных и шипящих,
// они будут выше, чем согласные
if (GFONEM==command_on[tPOS] || GFONEM==command_on[tPOS+1]) <
// все ок, идем по команде «включение», проверяя
// текущий звук или возможно следующий
FOUND_COMMAND_ON = 1;
> else <
FOUND_COMMAND_ON = 0;
flag = 1;
>
if ( tPOS == 5 ) < flag = 1 ); // найден последний звук, можно выходить
tPOS++;
>
>
>
if (FOUND_COMMAND_ON == 1) <
// выполнение действий при команде «включение»
// .
>
>

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

  1. Разделить фразу на отдельные слова, отслеживая промежутки тишины;
  2. Разложить запись каждого отдельного слово в ряд Фурье — таким образом определятся коэффициенты, соответствующие отдельным частотным составляющим;
  3. Пропустить вычисленные в п.2 коэффициенты через нейросеть, которая на выходе даст значение слов.

Чтобы такая нейросеть могла «распознавать» слова, подаваемые на её вход, предварительно она должна быть обучена!

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

Видео по теме

Источник

Adblock
detector