Представляю вам образовательный проект — “Детектор звука”, разработанный в рамках учебно-методического комплекса на базе одноплатного компьютера Repka PI 4.
Данный проект предназначен для мониторинга уровня звука в окружающей среде с наглядной индикацией результатов на OLED-дисплее. В качестве основного сенсора используется микрофонный модуль MAX9814, обеспечивающий чувствительное измерение уровня громкости.
Аналоговый сигнал с микрофона поступает на АЦП ADS1115, который преобразует его в цифровое значение для последующей обработки на одноплатном компьютере Repka Pi 4. В зависимости от зафиксированной громкости, проект управляет RGB-светодиодом, изменяя цвет подсветки:
— синий при низком уровне шума,
— зелёный при среднем,
— красный при высоком уровне звука.
Параллельно цифровые значения и соответствующий уровень громкости отображаются на OLED-дисплее 0.96" с интерфейсом I2C, позволяя в реальном времени отслеживать изменение звуковой среды.
Проект “Детектор звука” отлично подходит для изучения работы с аналоговыми датчиками, АЦП, OLED-дисплеем и основами визуальной индикации, а также может быть использован как элемент более сложных систем мониторинга или автоматизации.
Проект будет собираться с использованием “Учебно-методический комплекс REPKA”. Схему сборки можно найти в разделе "Примеры готовых проектов" учебного пособия УМК “REPKA”.
Также все необходимые материалы и схемы подключения доступны в репозитории на платформе Gitflic.
Компоненты проекта
1. Потребуется аналогово-цифровой преобразователь (далее АЦП) модели ADS1115 для считывания показаний с микрофона, см. рисунок 1.
2. Микрофонный модуль MAX9814, предназначенный для улавливания звуков из окружающей среды и формирования аналогового сигнала, пропорционального уровню громкости, см. рисунок 2.
3. Дисплей OLED 0.96″ I2C для отображения значений цифрового сигнала, см. рисунок 3.
4. Четырехконтактный светодиодный RGB модуль (RGB LED) для визуализации уровня громкости, см. рисунок 4.
Вы можете приобрести все необходимые компоненты отдельно от "Учебно-методический комплекс REPKA". Ссылки на модули приведены в таблице ниже.
Компонент | Ссылка на приобретение |
---|---|
Монтажная/макетная плата | Ссылка |
Шлейф | Ссылка |
Переходник с шлейфа на макетную плату | Ссылка |
Соединительные провода | |
АЦП (ADS1115) | Ссылка |
ЖК дисплей (1602 I2C) | Ссылка |
Микрофонный модуль (MAX9814) | Ссылка |
Дисплей OLED 0.96″ I2C | Ссылка |
Подготовительный этап
1. Подключим дополнительное питание 5V к макетной плате:
2. После чего выведем дополнительное питание на макетную плату:
3. Подключим переходник с шлейфа на макетную плату:
4. Соединим шлейф с переходником для подключения к макетной плате и Repka Pi 4:
5. Итоговый результат должен выглядеть таким образом:
Сборка проекта
Во время сборки проекта будем регулярно обращаться к электрической принципиальной схеме и монтажной схеме, представленными в учебном пособии (см. рисунки 5 и 6). Эти схемы будут служить основным ориентиром на всех этапах подключения компонентов, обеспечивая точность и правильность сборки устройства.
Для разработки кода будет использоваться текстовый редактор Geany, который входит в состав стандартного ПО Репка ОС.
Электрическая принципиальная схема #
Монтажная схема #
- Подключение АЦП (ADS1115).
Как видно из рисунков 5 и 6 АЦП подключается через интерфейс I2C и питается от 5V.
1.1. Подключим АЦП (ADS1115) к макетной плате согласно таблице 1:
Макетная плата | АЦП (ADS1115) |
---|---|
5V | V |
GND | G |
SCL1 | SCL |
SDA1 | SDA |
Таблица 1. Подключение АЦП (ADS1115) к макетной плате.
1.2. Результат подключения будет выглядеть следующим образом, см. рисунок 6:
Проверку работоспособности АЦП будем проводить после подключения микрофона, чтобы убедиться в правильности считывания аналогового сигнала и корректности преобразования данных.
2. Подключение микрофона (MAX9814).
Как видно из рисунков 6 и 7, микрофон подключается к аналоговым входу A0 внешнего АЦП, что позволяет считывать с него значения. Питание модуля осуществляется от линии 5V.
2.1. Подключаем микрофон к к макетной плате согласно таблице 2.
Макетная плата | MAX9814 | АЦП |
---|---|---|
5V | VDD | |
GND | GND | |
OUT | A0 |
Таблица 2. Подключение MAX9814 к макетной плате.
2.2. Результат подключения будет выглядеть следующим образом, см. рисунок 7.
3. Выполним проверку подключения устройств АЦП и микрофона. Для этого будем использовать python скрипт из репозитория repka-pi_iot-examples.
3.1. Клонируем репозиторий:
git clone git@gitflic.ru:repka_pi/repka-pi_iot-examples.git
3.2. Переходим в репозиторий:
cd repka-pi_iot-examples/
3.3. Выполним установку зависимостей.
3.3.1. Если хотите установить зависимости только для микрофона, выполните:
make setup-max9814
3.3.2. Если хотите установить зависимости для всех датчиков и проектов, выполните:
make setup-all
3.4. Запускаем скрипт для проверки работоспособности прибора:
make max9814
3.5. Если на этапе 3.4. возникает ошибка, необходимо внести изменения в Python-скрипт, расположенный по пути devices/input-output/max9814_example/py, корректируя номер – i2c = I2C("/dev/i2c-1") и адрес шины – ADS1115_ADDR. В случае отсутствия ошибок, данный шаг нужно пропустить.
#Адрес устройства ADS1115 на шине I2C (по умолчанию 0x48)
ADS1115_ADDR = 0x48
# Создаём объект для работы с шиной I2C на Repka Pi ("/dev/i2c-1" — это стандартный порт)
i2c = I2C("/dev/i2c-1")
3.6. Из рисунка 8 видно, что скрипт был успешно выполнен, и данные считываются с микрофона корректно.
4. Выполним подключение OLED дисплея.
Как видно из рисунков 5 и 6 устройство подключается через интерфейс I2C и питается от 5V.
4.1. Подключим дисплей OLED 0.96″ I2C к макетной плате согласно таблице 3.
Макетная плата | Дисплей OLED 0.96″ I2C |
5V | VDD |
GND | GND |
SCL1 | SCK |
SDA1 | SDA |
Таблица 3. Подключение дисплея OLED 0.96″ I2C к макетной плате.
4.2. Результат подключения будет выглядеть следующим образом, см. рисунок 9.
5. Аналогично пункту 3 выполним проверку подключения устройства.
5.1. Если ранее не устанавливали все зависимости командой setup-all, то установим зависимости для дисплей модуля, выполнив:
make setup-OLED-SSD1306
5.2. Запустим python скрипт:
make OLED-SSD1306
5.3. Из рисунка 10 видим, что скрипт успешно выполнился, тестовый текст появился на дисплее.
6. Подключение четырехконтактного светодиодного RGB модуля (RGB LED)
Обратимся к рисункам 5 и 6. Из них видно, что устройство подключается через GPIO17, GPIO27, GPIO22.
6.1. Подключим RGB LED к макетной плате согласно таблице 4:
Макетная плата | RGB LED |
GPIO23 | R |
GPIO24 | G |
GPIO25 | B |
GND | GND |
Таблица 4. Подключение RGB LED к макетной плате.
6.2. Результат подключения будет выглядеть следующим образом, см. рисунок 11.
7. Выполним проверку подключения модуля.
7.1. Если ранее не устанавливали все зависимости командой setup-all, то установим зависимости для RGB модуля, выполнив:
make setup-rgb-led
7.2. Запустим python скрипт:
make rgb-led
7.2.1. Если нет никакой реакции или появляется ошибка, то проверьте номер GPIO указанный в скрипте по пути devices/input-output/RGB_led_example/py.
PIN_R = 111 # Красный — GPIO17
PIN_G = 112 # Зелёный — GPIO27
PIN_B = 113 # Синий — GPIO22
7.2.2. Как видно из скрипта, для управления RGB-светодиодом используются уникальные числовые идентификаторы GPIO-портов, отличающиеся от стандартных номеров выводов. Чтобы правильно соотнести номера GPIO с их фактическими идентификаторами, обратимся к пособию УМК “REPKA”, в котором приведена подробная распиновка одноплатного компьютера Repka Pi 4 (см. рисунок 12).
Согласно этой распиновке, порты GPIO 23, GPIO 24 и GPIO 25 имеют следующие уникальные идентификаторы:
GPIO 23 — 354
GPIO 24 — 355
GPIO 25 — 359
7.2.3. Внесем правки в код и выполним скрипт.
PIN_R = 354 # Красный — GPIO17
PIN_G = 355 # Зелёный — GPIO27
PIN_B = 359 # Синий — GPIO22
7.3. Если все подключено верно, то в консоли появится выбор работы программы, см. рисунок 13.
7.4. Выберем только зеленый цвет и оценим результат, см. рисунок 14.
Запуск проекта
Теперь, когда все компоненты подключены, можно запустить проект "Детектор звука". Для этого в репозитории repka-pi_iot-examples выполняем команду:
make volume-detector
После запуска программы на OLED-дисплее отображается текущее цифровое значение, полученное с микрофона. По мере увеличения уровня громкости это значение возрастает, что сопровождается изменением цвета RGB-светодиода в соответствии с заданными порогами. Таким образом, пользователь может одновременно наблюдать как числовой уровень звука, так и его визуальную индикацию, см. рисунок 15.
Практическая значимость проекта
Проект "Детектор звука" имеет практическую значимость как в образовательной, так и в прикладной сфере. Его можно использовать для мониторинга уровня шума в помещениях, таких как классы, библиотеки, офисы или дома, где важно поддерживать акустический комфорт. Устройство может стать частью системы умного дома — например, включать свет или подавать сигнал при обнаружении громкого звука.
Также проект может применяться в системах безопасности, где резкие звуки (например, хлопок или разбитие стекла) запускают сигнал тревоги. В быту он может быть полезен для контроля тишины в ночное время, особенно в многоквартирных домах.
Кроме того, такой детектор можно использовать для помощи людям с нарушением слуха, заменяя звуковые сигналы на визуальные с помощью RGB-подсветки. На производстве проект может применяться для контроля уровня шума и своевременного оповещения о превышении допустимых значений.
Таким образом, "Детектор звука" — это не только учебный проект, но и функциональное устройство, которое может найти применение в реальных жизненных ситуациях.
Расширение проекта
Проект “Детектор звука” может быть легко модифицирован и масштабирован в различных направлениях. Одним из возможных расширений является реализация системы звуковой сигнализации — например, добавление зуммера или сирены, срабатывающей при превышении заданного порога громкости.
Также возможно вести логирование уровня шума с сохранением данных во внешнюю память или отправкой их по сети (например, по Wi-Fi или Bluetooth), что превращает устройство в полноценную систему мониторинга акустической обстановки. Подключение модуля времени (RTC) позволит привязывать измерения к реальному времени.
Дополнительно можно реализовать графическое отображение истории изменений уровня звука на дисплее, визуализируя данные в виде столбиковой диаграммы или кривой.
Проект может быть расширен до многосенсорной платформы, включающей, помимо микрофона, датчики температуры, освещённости или движения — для построения комплексных систем "умной среды" или мониторинга окружающей среды.
Таким образом, “Детектор звука” не только выполняет учебные задачи, но и служит прочной основой для построения более сложных инженерных решений в рамках IoT и автоматизации.
Видеообзор проекта
Для более детального ознакомления с проектом, вы можете посмотреть видеообзор на платформе Rutube.
Пример использования с Python
Проект полностью реализован на языке Python. Код для работы с детектором звука можно найти в репозитории на платформе Gitflic.