Графический анализатор звука на Arduino

Разработка проекта

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

Какие проекты можно создавать на Arduino?

Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

  • Сборка кубика Рубика (система справляется за 0,887 с);
  • Контроль влажности в подвальном помещении;
  • Создание уникальных картин;
  • Отправка сообщений;
  • Балансирующий робот на двух колесах;
  • Анализатор спектра звука;
  • Лампа оригами с емкостным сенсором;
  • Рука-робот, управляемая с помощью Ардуино;
  • Написание букв в воздухе;
  • Управление фотовспышкой и многое другое.

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

Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

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

При составлении проекта стоит учесть следующее:

  • КРЫЛЬЦО. Включение света производится в двух случая — приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
  • САНУЗЕЛ. В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
  • ПРИХОЖАЯ. Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
  • КОМНАТА. Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
  • КУХНЯ. Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

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

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

Стоит обратить внимание, что если в доме планируется установка умных розеток, то для управления ими лучше использовать приложения на мобильных устройствах, WIFI или через SMS сообщения. Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта http://flprog.ru/

Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта http://flprog.ru/.

Что такое зуммер и как он работает на Arduino?

Графический анализатор звука на Arduino

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

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

Очень практичный пример применим, когда вы используете датчик температура и хотите получать уведомления, когда оно превышает 100 градуса Цельсия . Когда датчик определяет эти уровни температуры, зуммер издает звуковой сигнал. Кроме того, есть много других приложений, в которых этот элемент может быть полезен вместе с Ардуино. Таким образом, вы можете оставляйте место для фантазии и разрабатывайте всевозможные интересные проекты .

Управление устройствами с помощью хлопков

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

В данном проекте для управления питанием устройств используется одноканальный модуль реле, который будет коммутировать переменное напряжение сети 220 В.

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

Схема соединений в этом проекте очень проста.

Предупреждение:
Данная схема взаимодействует с ВЫСОКИМ переменным напряжением сети 220 В. Неправильное подключение или использование может привести к серьезным травмам или смерти. Поэтому данный проект предназначен для людей, имеющих опыт работы и знающих о мерах техники безопасности при работе с высоким переменным напряжением.

Сначала необходимо подать питание на датчик и модуль реле. Подключите их выводы VCC к выводу 5V на Arduino, и выводы GND к выводу GND на Arduino.

Затем подключите выходной вывод (OUT) звукового датчика к цифровому выводу 7 на Arduino, а управляющий вывод (IN) на модуле реле к цифровому выводу 8 Arduino.

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

Схема соединений показана на следующем рисунке.

Графический анализатор звука на ArduinoРисунок 7 – Схема подключения датчика звука и модуля реле к плате Arduino

Код Arduino

Ниже приведен скетч для управления устройствами с помощью хлопков.

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

Популярные статьи  Как делать силиконовые прокладки любой формы под любые нужды

Объяснение

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

В начале мы объявляем вывод Arduino, к которому подключен вывод управления реле (IN). Мы также определили новую переменную для хранения состояния реле.

В функции мы настраиваем вывод как выходной.

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

Шаг за шагом научитесь воспроизводить звуки с помощью зуммера или динамика с Arduino

Графический анализатор звука на Arduino

Воспроизведение звуков с помощью обычного зуммера или пассивного модуля для Arduino проще, чем кажется. Тебе просто нужно подключиться и написать простой код в Arduino IDE (хотя имейте в виду, что база будет зависеть от того, чего вы хотите достичь). Arduino выполняет две основные функции которые помогают пользователю легко генерировать электрические сигналы для преобразования в звук через один из доступных цифровых выходов. Эти функции tone () и noTone ().

Как следует из названия, они отвечают за генерацию или остановку тонального сигнала на контакте:

  • активный тон определенной частоты на данном контакте
  • упоры сосновая смола

Стоит отметить, что благодаря функции tone () можно указать длительность генерируемого звука:

tone(pin, frequencia, duracion): активировать тон определенной частоты и продолжительности на данном шпинделе

Однако вы должны учитывать, что из-за своей простоты при использовании функций для генерации тона существуют некоторые важные ограничения, которые мы указываем ниже:

  • Tone используй это Таймер 2 , то есть пока он запущен, вы не можете использовать выходы PWM на контактах 3 и 11 из Ардуино Нано et Arduino Uno (контакты 9 и 10 на Arduino Mega).
  • Вы не можете использовать функцию tone () на двух выводах одновременно . Поэтому в этих случаях вы должны деактивировать гудок с помощью функции Не один () перед использованием на другом шпинделе.
  • Пляжи которые можно использовать в диапазоне функций тона от 31 Гц до 65535 Гц .

Чтобы дать вам более ясное объяснение, мы делимся некоторыми простыми примерами кода, в которых применяются указанные выше функции:

Пример 1

С помощью этого кода, который мы вам покажем, зуммер издаст звук на 1 секунду и остановится .

Затем он снова начинает производить 1 секунду и так далее:

Пример 2

в этом второй случай , зуммер или громкоговоритель подключенный к Pin9, используется для генерации функции 440 Гц на срок Второй , The остановка на 500 мс и наконец, воспроизводить тон 523 Гц в течение 300 мс .

Затем повторите программу после паузы в 500 мс:

Пример 3

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

Посмотрим:

Датчик звука (микрофон) для Arduino

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

Датчик звука Arduino для слежения за уровнем шума

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

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

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

Резистор используемый в ней, берется номиналом в 220 Ом. Основная функциональность выражается в зажигании светодиода при обнаружении громких звуков и гашения его в случае тишины. Скетч:
Изменяя время задержки, между включением и гашением светодиода, а также пробным путем выведя значения «тишины» SilenceMax и SilenceMin, можно добиться работы приведенной схемы в роли детектора движения по звуку. Конечно, качество определения у него будет низкое, но вполне позволяющее применять конструкцию в цепях управления освещением темных мест. Достаточно добавить фоторезистор для определения текущего уровня видимости, в роли которого можно использовать специальную плату Arduino или обычный радиоэлектронный компонент, подключаемый через делитель.

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

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

5Скетч «эквалайзера»

Немного модифицируем скетч. Добавим светодиоды и пороги их срабатывания.

const int micPin = A0;
const int gPin = 12;
const int yPin = 11;
const int rPin = 10;

void setup() {
    Serial.begin(9600); 
    pinMode(gPin, OUTPUT);
    pinMode(yPin, OUTPUT);
    pinMode(rPin, OUTPUT);
}

void loop() {  
    int mv = analogRead(micPin) * 5.0 / 1024.0 * 1000.0; // значения в милливольтах
    Serial.println(mv); // выводим в порт
    /* Пороги срабатывания светодиодов настраиваются
       вами экспериментальным методом: */
    if (mv }

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

Полезный совет

Значения порогов, после которых загораются соответствующие светодиоды, зависят от чувствительности микрофона. На некоторых модулях чувствительность задаётся подстроечным резистором, на моём модуле его нет. Пороги получились 2100, 2125 и 2150 мВ. Вам для своего микрофона придётся определить их самим.

Подключение входа

Есть несколько способов подачи аудиовхода в этот анализатор спектра. Вы можете вывести аудиовыход из LINE
из музыкальной системы/усилителя. Другой вариант — получить звук через выход для наушников мобильной/музыкальной
системы. Я не предлагаю использовать другой микрофон для приема звука, так как уровень сигнала и частотная
характеристика будут зависеть от многих факторов.

Популярные статьи  Мини-ЧПУ из DVD-приводов и степлера

Ниже приведена примерная схема подключения LINE out усилителя/музыкальной системы к анализатору спектра.

Графический анализатор звука на Arduino

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

Графический анализатор звука на Arduino

Простой пример: обнаружение звука

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

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

Если всё в порядке, то при обнаружении хлопка вы должны увидеть вывод в мониторе последовательного порта, похожий на приведенный ниже.

Графический анализатор звука на ArduinoРисунок 6 – Вывод работы скетча обнаружения хлопков

Объяснение

Скетч начинается с объявления вывода Arduino, к которому подключен вывод OUT датчика.

Затем мы определяем переменную с именем , которая хранит время с момента обнаружения хлопка. Это поможет нам устранить ложные срабатывания.

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

В функции мы сначала читаем состояние цифрового вывода датчика.

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

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

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

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

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

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

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

Звук на Arduino

Графический анализатор звука на ArduinoВ этой статье я рассмотрю примеры работы со звуков на контроллере Arduino

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

Подключение пьезоизлучателя к Arduino

На самом деле подключение очень простое:

  • 1 вывод пьезоизлучателя подключаем к 9 дискретному пину Arduino
  • 2 вывод пьезоизлучателя подключаем к GND Arduino

Графический анализатор звука на Arduino

Функция tone()

Генерирует сигнал прямоугольной формы с заданной частотой. Длительность может быть задана параметром. Без указания длительности сигнал генерируется пока не будет вызвана функция noTone(). К порту Arduino может быть подключен к пьезо или другой высокоомный динамик для воспроизведения сигнала. Одновременно может воспроизводиться только один сигнал.

Обзор аппаратного обеспечения

Звуковой датчик представляет собой небольшую плату, которая объединяет микрофон (50 Гц – 10 кГц) и схему обработки для преобразования звуковых волн в электрические сигналы.

Этот электрический сигнал подается на встроенный высокоточный компаратор LM393 для его оцифровки и выводится на выход (вывод OUT).

Графический анализатор звука на ArduinoРисунок 2 – Регулировка чувствительности датчика звука и компаратора

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

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

Эта настройка очень полезна, когда вы хотите запустить какое-то действие при достижении определенного порога. Например, когда амплитуда звука пересекает пороговое значение (при обнаружении стука), вы можете активировать реле для управления освещением. Вот вам идея!

Совет: поворачивайте движок потенциометра против часовой стрелки, чтобы увеличить чувствительность, и по часовой стрелке, чтобы ее уменьшить.

Графический анализатор звука на ArduinoРисунок 3 – Светодиодные индикаторы питания и состояния

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

Step 4: Coding

Графический анализатор звука на Arduino

This spectrum analyzer is made of two parts: the Processing part that does a Fast Fourier Transformation (FFT) on the stereo mix of the computer and splits the audio into 16 frequency bands and finds their amplitudes and sends this data to the Arduino; then there is the Arduino part that takes the data from the Processing half and lights up the LEDs on the display according to the amplitude of each frequency band. Processing: In the processing code, you can define your own frequency band ranges and amplitude ranges that correspond to the # LEDs on the display. The code I am including makes 16 bands that are 2 bars wide each to fill the display’s range. This also quicker than sending 32 bands to the Arduino. The more data sent to the Arduino, the more lag the display has. Arduino: you need to extract the included libraries into you \Documents\Arduino\libraries    folder. If the libraries folder doesn’t exist, make one labeled exactly «libraries». The first library ht1632c is for the display like mine. I have also included the ledControl library that is used with the MAX7219. there are two important lines needed in this program: #include <ht1632c.h> ht1632c dotmatrix = ht1632c(PORTD, 7, 6, 4, 5, GEOM_32x16, 2); the first line tells the compiler to include the ht1632c library. The second then makes a new structure called dotmatrix. anytime you want to call a function from the library, you need to call it with dotmatrix.’whatever’. The numbers and phrases in the parenthesis are: PORTD, DATA_pin, WR_pin, CS_pin, CLK_pin, GEOM_32x16, #ofdisplayschained. Here is where you can change which pins the display is connected to the Arduino. The #displayschained needs to be 2 unless you have more than two displays. More info about the libraries can be found on the Sources page. I am including the codes that are being used in my setup. If its not clear, the .pde is for Processing, the .ino is for Arduino. You can run both of the codes as is if you have the same display and setup as I have. You may need to make some changes to accommodate your setup.

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

Attachments

  • Audio_Spectrum_to_Arduino3216_doublebar_pde.pdeDownload
  • libraries.zipDownload
  • Audio_Spectrum_from_Processing_3216_double_bar_ino.inoDownload

Описание и схема работы зуммера

Зуммер, пьезопищалка – все это названия одного устройства.  Данные модули используются для звукового оповещения в тех устройствах и системах, для функционирования которых в обязательном порядке нужен звуковой сигнал. Широко распространены зуммеры в различной бытовой технике и игрушках, использующих электронные платы. Пьезопищалки преобразуют команды, основанные на двухбитной системе счисления 1 и 0, в звуковые сигналы.

Пьезоэлемент “пищалка”

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

Устройство пьезодинамика пищалки

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

Модуль пищалки для Ардуино

Если сравнивать с обыкновенными электромагнитными преобразователями звука, то пьезопищалка имеет более простую конструкцию, что делает ее использование экономически обоснованным. Частота получаемого звука задается пользователем в программном обеспечении (пример скетча представим ниже).

Особенности проектов

Большинство электронщиков предпочитают создавать свои проекты на основе микроконтроллера Аrduino Uno, о которой и мы писали уже несколько раз.

Для начала стоит познакомиться с функционалом микропроцессора Ардуино уно, на котором строится большинство проектов, а также рассмотреть причины выбора данного приспособления. Ниже описаны факторы, по которым начинающему изобретателю стоит остановиться на Аrduino uno:

  1. Довольно простой в использовании интерфейс. Понятно, где какой контакт, и к чему прикреплять соединительные провода.
  2. Чип на плате подключается прямо к USB-порту. Преимущество этой установки заключается в том, что последовательная связь – это очень простой протокол, который проверен временем, а USB делает соединение с современными компьютерами очень удобным.
  3. Легко найти центральную часть микроконтроллера, которая представляет собой чип ATmega328. Он имеет больше аппаратных функций, таких как таймеры, внешние и внутренние прерывания, пины PWM и несколько режимов ожидания.
  4. Устройство с открытым исходным кодом, поэтому большое количество радиолюбителей могут исправить баги и неполадки в программном обеспечении. Это облегчает отладку проектов.
  5. Тактовая частота равна 16 МГц, что достаточно быстро для большинства приложений и не ускоряет работу микроконтроллера.
  6. Очень удобно управлять мощностью внутри него, и она имеет функцию встроенного регулирования напряжения. Также микроконтроллер можно отключить от USB-порта без внешнего источника питания. Можно подключить внешний источник питания до 12 В. Причем микропроцессор сам определит нужное напряжение.
  7. Наличие 13 цифровых контактов и 6 аналоговых контактов. Эти пины позволяют подключать оборудование к плате Arduino uno со стороннего носителя. Контакты используются в качестве ключа для расширения вычислительной способности Arduino uno в реальном мире. Просто подключите свои электронные устройства и датчики к разъемам, которые соответствуют каждому из этих контактов.
  8. Имеется в наличии разъем ICSP для обхода USB-порта и сопряжения с Arduino напрямую в качестве последовательного устройства. Этот порт необходим, чтобы перезагрузить чип, если он поврежден и больше не может использоваться на вашем компьютере.
  9. Наличие 32 КБ флэш-памяти для хранения кода разработчика.
  10. Светодиод на плате подключается к цифровому контакту 13 для быстрой отладки кода и упрощения этого процесса.
  11. Наконец, у него есть кнопка для сброса программы на чипе.

Arduino был создан в 2005 году двумя итальянскими инженерами – Дэвидом Куартиллесом и Массимо Банзи с целью, чтобы ученики научились программировать микроконтроллер Arduino uno и улучшить свои навыки в области электроники и использовать их в реальном мире.

Arduino uno может воспринимать окружающую среду, получая вход от различных датчиков, и способен влиять на окружающую среду, контролируя свет, двигатели и другие исполнительные механизмы. Микроконтроллер запрограммирован с использованием языка программирования Arduino (на основе проводки) и среды разработки Arduino (на основе обработки).

Оцените статью
( Пока оценок нет )
Добавить комментарий