Как работает датчик звука KY-038 и как его подключить к ESP32


В данной статье мы рассмотрим основные принципы работы датчика звука (sound sensor) KY-038 и его подключение к модулю ESP32, который является в настоящее время одним из самых популярных микроконтроллеров с поддержкой технологий WiFi и Bluetooth. Датчик KY-038 представляет собой микрофон конденсаторного типа, способный улавливать звуковые волны, и отличается надежностью и стабильностью работы. С минимальными усилиями вы можете превратить данный проект в какое-нибудь полезное для вас устройство: детектор звукового загрязнения, систему охранной сигнализации и т.п.

Проект подключения датчика звука KY-038 к модулю ESP32

Ранее на нашем сайте мы рассматривали следующие проекты с использованием микрофона для обнаружения/измерения звука:

Необходимые компоненты

  1. Модуль ESP32 (купить на AliExpress).
  2. Датчик звука KY-038 (купить на AliExpress).
  3. OLED дисплей, работающий по протоколу I2C (купить на AliExpress).
  4. Светодиоды (3 шт.) (купить на AliExpress).
  5. Резисторы (3 шт.) (купить на AliExpress).

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

Распиновка датчика звука KY-038

Датчик KY-038 содержит 4 контакта: VCC, GND, цифровой выход (Digital Out) и аналоговый выход (Analog Out). Его распиновка показана на следующем рисунке.

Распиновка датчика звука KY-038

Назначение контактов:

VCC – контакт для подачи питания на датчик, можно подключать к 3.3V или 5V. Уровень напряжения на аналоговом выходе будет зависеть от величины приложенного питающего напряжения.

GND – контакт общего провода (земли) датчика.

DOUT – цифровой выход датчика, низкий уровень означает что датчик не обнаруживает никакого звука, высокий – датчик обнаруживает присутствие звука.

AOUT – аналоговый выход датчика.

Как работает датчик звука KY-038

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

Принцип работы датчика звука KY-038

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

Компоненты датчика звука KY-038

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

Компоненты датчика звука KY-038

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

Наиболее часто задаваемые вопросы о датчике звука KY-038

Какие основные типы датчиков звука существуют?
Существуют датчики звука с использованием различных типов микрофонов: динамических, конденсаторных, ленточных, угольных и т.д.

Какие основные преимущества датчиков звука?
Датчики звука находят широкое применение в охранных системах, также часто они работают в связке с программами распознавания речи, которые преобразуют речь человека в текст. Во многих случаях это намного более быстрый способ набора текста по сравнению с использованием клавиатуры.

Какой диапазон действия у датчика звука?
Датчик способен обнаруживать звук с уровнем до 100 дБ с частотами в диапазоне от 3 до 6 кГц.

Схема датчика звука KY-038

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

Схема датчика звука KY-038Ключевым компонентом данной схемы является операционный усилитель LM393, который можно запитывать от 3.3V или 5V. Необходимо помнить о том, что уровень напряжения на аналоговом выходе датчика зависит от величины поданного на датчик питающего напряжения. Потенциометр используется для установки опорного напряжения для операционного усилителя и формирования опорного напряжения для аналогового выхода датчика.

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

Схема проекта

Схема подключения датчика звука KY-038 к модулю ESP32 представлена на следующем рисунке.

Схема подключения датчика звука KY-038 к модулю ESP32Соединения в схеме очень простые, достаточно запитать модуль от 3.3V и подключить его аналоговый контакт к модулю ESP32. Обрабатывать аналоговый сигнал с выхода мы будем с помощью АЦП модуля ESP32. Также в схеме мы использовали 3 светодиода для индикации интенсивности звука, а измеренный уровень звука в децибелах мы будем отображать на экране OLED дисплея, который подключен к модулю ESP32 по интерфейсу I2C, более подробно об особенностях подобного подключения дисплея можно прочитать в этой статье.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение кода программы для модуля ESP32

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

Первым делом в коде программы мы подключим все необходимые нам библиотеки: Wire.h, Adafruit_GFX.h и Adafruit_SSD1306.h. Также зададим ширину и высоту экрана OLED дисплея в пикселях.

Затем объявим объект для работы с OLED дисплеем.

Далее объявим две переменные для хранения данных с выхода АЦП.

После этого дадим осмысленные имена всем используемым контактам.

Затем, в функции setup(), мы зададим режимы работы для всех используемых контактов. Также на все контакты, к которым подключены светодиоды, мы подадим уровень LOW, и инициализируем последовательную связь.

Далее, в функции loop, мы будем считывать данные с выхода АЦП и сохранять его в двух переменных (минимальный и максимальный уровень).

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

Затем с помощью условий if мы будем проверять полученное значение и в зависимости от этого зажигать соответствующий светодиод, индицирующий интенсивность звука. Также мы будем выводить уровень интенсивности звука на экран дисплея (Moderate, High).

Исходный код программы

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
967 просмотров

Комментарии

Как работает датчик звука KY-038 и как его подключить к ESP32 — 6 комментариев

  1. После слов что lm393 операционный усилитель перестал читать. lm393 - компаратор!!!

  2. Здравствуйте. подскажите плиз, зачем нужно условие
    if (sample < 1024)
    Разве функция analogRead может выдать значение больше 1024?
    Также поясните плиз строку
    int db = map(peakToPeak, 0, 900, 49, 90);
    Почему именно 900?

    • Добрый вечер, у модуля ESP32 разрядность АЦП составляет 12 бит, а не 10 как у платы Ардуино Уно, поэтому и диапазон значений на его выходе составляет от 0 до 4095. Значение 900 получается в результате вычитания минимального значения из максимального, точнее это максимально возможная разница между этими значениями. Возможно, она определена автором проекта экспериментально

      • Извините, все равно не понимаю. Если максимальное значение, которое может выдать функция analogRead на ESP32 составляет 4095, то почему считанное значение сравнивается с 1024...? А если analogRead выдаст больше 1024 - то что?

        • Это будет свидетельствовать об очень громком звуке, который в программе мы не будем обрабатывать

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

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