Точный измеритель децибел на ESP32 с регистратором данных


В этом проекте мы построим высокоточный измеритель децибел с использованием WiFi-модуля ESP32 и специального модуля датчика уровня звука. Наш измеритель децибел будет способен определять уровень звука от 35 дБ до 115 дБ. Он очень точен и не требует калибровки, поскольку он уже предварительно откалиброван.

Точный измеритель децибел на ESP32 с регистратором данных

Мы можем соединить датчик уровня звука с ESP32 с помощью протокола I2C. Устройство может измерять, определять уровень звука и точно контролировать уровень звука в децибелах. Обнаруженный уровень звука может отображаться на 0,96-дюймовом OLED-дисплее. Помимо отображения уровня звука на OLED, мы можем отправлять данные на любую платформу IoT и использовать их для графической визуализации и дальнейшего анализа. В этом примере мы будем отправлять данные на платформу Ubidots.

Ранее на нашем сайте мы рассматривали и другие проекты измерителей уровня звука (но попроще по возможностям чем данный проект):

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

  1. Модуль ESP32 (купить на AliExpress).
  2. Датчик уровня звука (SPL).
  3. Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Что такое децибеллометр?

Децибеллометр, также известный как измеритель уровня звукового давления (sound pressure level, SPL), — это устройство, предназначенное для измерения уровней звукового давления. Прибор использует микрофон для улавливания изменений звукового давления и преобразует их в электрический сигнал, который затем усиливается. Этот усиленный сигнал подвергается частотному и временному взвешиванию в соответствии с международными стандартами, обеспечивая стандартизированное измерение в децибелах (дБ).

Децибеллометр

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

Модуль измерителя уровня звука в децибелах

Модуль децибел-метра, предлагаемый компанией PCB Artists, представляет собой компактный, энергоэффективный и точный прибор для измерения уровня звукового давления в дБ SPL. Этот модуль децибел-метра можно легко соединить с оборудованием, таким как Arduino, ESP32, Raspberry Pi или аналогичными устройствами.

Модуль децибел-метра, предлагаемый компанией PCB Artists

Модуль децибелметра I2C можно подключить к любой системе с выходом питания 3,3 В и шиной I2C для связи с модулем звукового датчика. Он может определять уровень звука от 35 дБ до 115 дБ с точностью ±2 дБ SPL. Датчик также не требует калибровки, так как он откалиброван на заводе.

Подробнее о децибелметре PCB Artists читайте здесь: Руководство по программированию децибелметра I2C

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

Модуль измерителя уровня звука от компании PCB Artists имеет следующие характеристики:

  • Высокая точность  ±2 дБ SPL.
  • Диапазон измерений от 35 дБ до 115 дБ.
  • Диапазон частот от 30 Гц до 8 кГц.
  • Простота использования – стандартный  интерфейс I2C (адрес I2C 0x48).
  • Низкое энергопотребление, всего  5 мА при 3,3 В (измерение) и 100 мкА (спящий режим).
  • Выбираемый ответ –  взвешенный по шкале A , взвешенный по шкале C, взвешенный по шкале Z.
  • Регулируемое время усреднения в диапазоне от 10 мс до 10 000 мс.  Поддерживается
    125 мс (быстрый режим) и 1000 мс (медленный режим).
  • Пороговое обнаружение и прерывание.
  • Буфер на 100 чтений, позволяющий главному микроконтроллеру перейти в спящий режим.
  • Можно приклеить к любой поверхности с помощью отрывного клея.
  • Низкая стоимость и небольшой размер.

Распиновка датчика

Модуль измерителя уровня звука имеет 5 контактов. Контакт INT (прерывание) является необязательным и может быть оставлен открытым, если не используется в вашем приложении.

Распиновка модуля измерителя уровня звука

  1. 3V3 (входной контакт источника питания): подайте на этот контакт чистое стабилизированное питание 3,3 В. Модуль обычно потребляет 5 мА при 3,3 В.
  2. INT (контакт прерывания с открытым стоком, активный низкий): Функция прерывания отключена по умолчанию. Если включено, вывод INT переходит в низкий уровень, когда прерывание ожидает обработки.
  3. SCL (контакт SCL I2C с открытым стоком): стандартная линия SCL шины I2C, рекомендуемое подтягивающее сопротивление не менее 10 кОм.
  4. SDA (контакт SDA I2C с открытым стоком): стандартная линия SDA шины I2C, рекомендуемое сопротивление подтяжки не менее 10 кОм.
  5. GND (заземляющий контакт): Заземление модуля должно быть подключено непосредственно к заземлению источника питания системы или аккумулятора, если это возможно.

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

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

Схема подключения модуля измерителя уровня звука к плате ESP32

Подключите контакты VCC, GND, SDA и SCL модуля децибелметра к контактам 3.3V, GND, GP21 и GP22 ESP32 соответственно. Вы можете использовать макетную плату для сборки и перемычки для соединений.

Собранная на макетной плате конструкция проекта

Пример кода для работы с модулем измерителя уровня звука

Вот пример кода, который может считывать данные об уровне звука, считываемые модулем измерителя уровня звука с помощью ESP32. Код инициализирует протокол связи I2C для считывания значения данных датчика. Датчик имеет адрес I2C 0X48.

Скопируйте следующий код и загрузите его на плату ESP32. Для загрузки выберите ESP32 Dev Module и COM-порт, к которому подключена плата.

После загрузки кода откройте Serial Monitor (окно монитора последовательной связи) - в нем отобразится уровень звука в дБ (SPL).

Отображение уровня измеренного звука в окне монитора последовательной связи

В тихой комнате измеренное значение децибел будет около 35. Значения децибел увеличиваются с увеличением уровня шума. Вы можете включить музыку, чтобы протестировать работу датчика на разных уровнях звука. Это высокоточный децибел-метр, поскольку калибровка выполняется на заводе.

Создание ESP32 IoT децибелметра (SPL) с регистратором данных

Теперь, когда мы протестировали децибеллометр и считываем значения в мониторе последовательной связи, мы можем еще больше улучшить этот проект. Мы можем использовать 0,96-дюймовый I2C OLED-дисплей для отображения значений дБ в реальном времени. Мы также можем отправить значение на любую платформу IoT, такую ​​как Blynk, Thingspeak, Ubidots или любой другой сервер. Именно это мы сейчас и сделаем. Мы будем использовать Ubidots для регистрации данных и удаленного анализа в реальном времени.

Схема и соединения

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

Схема проекта измерителя уровня звука с подключенным OLED дисплеем

Подключите контакты VCC, GND, SDA и SCL OLED-дисплея SSD1306 0,96″ к контактам 3,3 В, GND, GP21 и GP22 ESP32 соответственно.

Собранная конструкция децибел метра с подключенным OLED дисплеем

Настройка учетной записи Ubidots

Для удаленного мониторинга данных нам необходимо отправить значение децибелов со звукового датчика с помощью ESP32 на учетную запись Ubidots. Итак, давайте настроим эту учетную запись.

Создайте учетную запись Ubidots или войдите в систему, используя эту ссылку: https://stem.ubidots.com/ .

Главная страница нашего проекта в Ubidots

Перейдите к устройству и нажмите Create («Создать»).

Начало создания нового устройства в Ubidots

Выберите пустое устройство и назовите его ESP32.

Ввод имени для создаваемого устройства в Ubidots

Таким образом, будет создано имя устройства ESP32.

Теперь нажмите на созданное устройство. Здесь вам нужно создать переменную.

Создание новой переменой для созданного устройства в Ubidots

Создайте необработанную переменную с именем Decibel meter (Измеритель децибел).

Создание необработанной переменной с именем Decibel meter

Теперь устройство и переменная созданы, поэтому возвращаемся к панели инструментов - нам нужно ее настроить.

Настройка панели инструментов в Ubidots

В списке Add Widget («Добавить виджеты») выберите два виджета: Gauge («Датчик») и Line Chart («Линейная диаграмма»).

Создание виджетов в панели инструментов в Ubidots

В Gauge и Line Chart выберите переменную Decibel Meter из ESP32. Теперь панель управления готова и выглядит так.

Наша настроенная панель инструментов в Ubidots

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

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

Вот полный код для этого проекта. Код будет отображать значение датчика звука dB SPL на OLED-дисплее. Он также будет отправлять данные в облако Ubidots.

В следующих строках измените SSID WiFi, пароль и токен Ubidots.

Для компиляции кода необходимо добавить библиотеку pubsubclient и библиотеку Adafruit SSD1306.

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

Тестирование децибелметра

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

OLED-дисплей начнет отображать значение в дБ SPL.

Тестирование уровня звука в тихом помещении

В тихом помещении уровень звука составляет около 34–35 дБ SPL.

Вы можете включить музыку и наблюдать рост уровня звука в соответствии с музыкальным ритмом.

Тестирование уровня звука от музыки со смартфона

Вы можете загрузить приложение Frequency Generator из Playstore, которое может воспроизводить различные звуки с переменной частотой.

Тестирование уровня звука с помощью Frequency Generator (часть 1)

Измените частоту звука и наблюдайте за показаниями на OLED-дисплее.

Тестирование уровня звука с помощью Frequency Generator (часть 2)

Те же данные можно считывать удаленно на платформе Ubidots.

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

Тестирование измерителя уровня звука на панели инструментов Ubidots

Графически зарегистрированные данные можно использовать для дальнейшего анализа.

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

Анализ лога уровня звука на панели инструментов Ubidots

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

Ссылка на видео на YouTube

Заключение

В заключение можно отметить что проект успешно демонстрирует создание высокоточного децибел-метра с использованием WiFi-модуля ESP32 и модуля датчика уровня звука. Этот измеритель, который не требует дальнейшей калибровки из-за своего предварительно откалиброванного состояния, обладает способностью определять уровни звука в диапазоне от 35 дБ до 115 дБ.

Используя протокол I2C, был создан эффективный интерфейс между ESP32 и датчиком уровня звука, обеспечивающий точное обнаружение и мониторинг уровней звука в децибелах (дБ SPL). Проект не только способствовал отображению обнаруженных уровней звука на 0,96-дюймовом OLED-дисплее, но и использовал платформу IoT Ubidots для передачи этих данных.

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

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

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