Рубрики
Схемы на Arduino

Музыкальный фонтан на Arduino и акустическом датчике

Музыкальные фонтаны в настоящее время пользуются достаточно большой популярностью. Но мы в этом проекте решили сделать не совсем обычный музыкальный фонтан – он будет управлять потоками воды в зависимости от звуков внешней (окружающей его) музыки.

Основная идея этого музыкального фонтана на Arduino состоит в том, чтобы подавать на его вход звук от любого источника (компьютер, смартфон, музыкальный центр и т.д.), соотносить его с различными (заранее определенными) уровнями напряжения и в зависимости от этого управлять реле, к которому подключена водяная помпа (насос). Для разделения звуков по уровням напряжения мы будем использовать модуль акустического датчика (sound sensor) на основе конденсаторного микрофона. Измеренные уровни напряжения будут подаваться на вход операционного усилителя чтобы сравнить их с заранее определенными уровнями (границами). На основании этого сравнения будут формироваться сигналы управления для реле, к которому подключена водяная помпа.

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

  1. Плата Arduino Nano (купить на AliExpress).
  2. Модуль акустического датчика (Sound sensor Module) (купить на AliExpress).
  3. Модуль реле 12V (купить на AliExpress).
  4. Насос (помпа) постоянного тока (купить на AliExpress).
  5. Светодиоды (купить на AliExpress).
  6. Соединительные провода.
  7. Макетная или перфорированная плата.

Принцип работы акустического датчика

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

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

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

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

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

Как показано на схеме, акустический датчик запитывается с контакта 3.3V платы Arduino Nano, а выходной контакт модуля акустического датчика подключен к аналоговому контакту A6 платы Arduino Nano. Вы можете использовать любой аналоговый контакт платы Arduino Nano, но при этом не забудьте внести соответствующие изменения в программу. Модуль реле и насос (помпа) постоянного тока запитываются от внешнего источника питания с напряжением 12V. Вход модуля реле подключен к цифровому контакту D10 платы Arduino Nano. Для создания визуального цветового эффекта мы использовали светодиоды двух разных цветов, которые мы подключили к цифровым контактам D12 и D11 платы Arduino Nano.

Когда на вход модуля реле поступает сигнал высокого уровня (HIGH), контакт COM реле будет подключен к его контакту NO и реле включает насос, соответственно, включается поток воды. При подаче сигнала низкого уровня на вход реле оно закрывается и насос отключается от питания, соответственно, поток воды выключается. Импульсы HIGH/LOW на входе модуля реле формируются платой Arduino Nano в зависимости от уровня окружающего (внешнего) звука, измеряемого модулем акустического датчика.

После сборки всех компонентов схемы на перфорированной плате у нас получилась конструкция следующего вида:

Миниатюрный водяной насос, работающий от напряжения 5v (возможно, здесь опечатка, поскольку в схеме указан насос, работающий от 12 В, и модуль реле у нас также на 12 В — кто хорошо ориентируется в этих вопросах, просьба написать об этом в комментариях к статье), мы поместили в пластиковый контейнер. Этот насос и будет выполнять роль фонтана в нашем проекте. Аналогичный водяной насос мы уже использовали в проекте робота для борьбы с огнем на основе платы Arduino.

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

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Сначала в программе нам необходимо объявить используемые переменные и дать используемым контактам осмысленные названия. Также мы объявим константу REF (ее значение у нас будет равно 700), в которой будет храниться опорное значение для модуля акустического датчика.

Далее в функции void setup мы с помощью функции pinMode зададим режимы работы используемых контактов – на ввод или вывод данных (INPUT/OUTPUT).

Внутри бесконечного цикла loop мы будем использовать функцию analogRead для считывания значения напряжения с выхода модуля акустического датчика. Считанное значение мы будем сохранять в переменной sensor_value.

Далее мы будем сравнивать считанное значение напряжения с его опорным значением, заданном с помощью константы REF. Если считанное значение больше опорного, то на все выходные контакты подается сигнал высокого уровня (HIGH), соответственно, включаются светодиоды и водяной насос. Если считанное значение меньше опорного, то на все выходные контакты подается сигнал низкого уровня (LOW). Также мы используем задержку в 70 миллисекунд чтобы разграничить периоды включения и выключения реле.

Исходный код программы (скетча)

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

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

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