Учимся создавать простую звуковую панель на arduino arduino+

УРОКИ ARDUINO: БАЗОВЫЙ УРОВЕНЬ

15.01.2019 конспект был обновлён: поправлено оформление и добавлена информация!

Добро пожаловать в цикл “Уроки Ардуино с нуля, для чайников и школьников”, это официальная страница проекта “Заметки Ардуинщика“. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.

Урок #0 – что такое Arduino? Возможности

Урок #0.5 – первые шаги, подключение и настройка

Урок #1 – структура скетча и типы данных

Урок #1.1 – операции с переменными и константами

Урок #2 – работа с последовательным портом

Урок #3 – условный оператор и оператор выбора

Урок #4 – функции времени: задержки и таймеры

Урок #5 – цифровые порты и подключение кнопки

Урок #6 – флажки и расширенное управление кнопкой

Урок #7 – правильное подключение светодиодов

Урок #8 – подключение и управление реле

Урок #9 – подключение и управление мосфетом

Урок #10 – оцифровка аналогового сигнала

Урок #11 – ШИМ сигнал, плавное регулирование

Урок #12 – работа с циклами

Учимся создавать простую звуковую панель на Arduino

В этом эксперименте вы поймете, как работает пассивный зуммер и как вы можете создать простую звуковую панель с помощью Arduino. Используя несколько кнопок и выбрав соответствующий тон, вы сможете создать мелодию!

Шаг 1: Необходимые детали

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

  • плата Arduino
  • макетная плата
  • USB-кабель
  • 10 перемычек
  • 3 Кнопки (количество кнопок не является обязательным)
  • 3 резистора по 10 кОм

Шаг 2: Подключение кнопок

Во-первых, давайте начнем с кнопок. Для каждой кнопки выберите одну из её сторон. Вы увидите 2 контакта. Тот, который находится слева (вы можете поменять их), соединяется с землей Arduino (через макет) с резистором 10 кОм. Подключите одну и ту же строку к цифровому выводу 2, 3 или 4 Arduino (может быть сконфигурирован в коде).

Штифт с правой стороны каждой кнопки подключается к питанию 5 В. Вы можете использовать приведенное выше изображение для справки. Сделайте эти шаги для всех ваших кнопок.

Шаг 3: Подключение зуммера

Итак, на верхней части зуммера вы можете увидеть символ +. Он указывает на положительную сторону. Вам нужно подключить противоположный конец к земле, а этот – к цифровому выводу 8 Arduino (можно изменить позже).

Шаг 4: Загрузка и изменение кода

Код который мы будем использовать:

Всё зависит от вас и вы многое можете поменять – от номеров контактов до добавления дополнительных кнопок, но что более важно – вы можете изменить каждый индивидуальный тон. Вот небольшое объяснение:

tone(buzzPin, 1000, 300); // функция тона Arduino

buzzPin // это положительный вывод зуммера

1000 // это сам тон, в Гц (он может быть от 31 до 65535)

300 // продолжительность в мс (необязательно)

Шаг 5: Итоговый результат (видео)

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

Вот мы и получили самую простую звуковую панель с помощью Arduino. Надеемся вы теперь получили общие навыки и общее понимание того как это работает.

Музыка на Arduino с модулем MP3 и WAV

Модули Ардуино позволяют создать множество различных электронных устройств, которые будут работать по несложным программам. Одним из таких устройств является компактный плеер. Ардуино плеер, проигрывающий WAV и МР3 файлы, может быть реализован на базе любого контроллера (Uno, Nano, Mega и т.п.) с помощью адаптера micro-SD, который позволяет записывать и считывать музыкальные файлы.

Формирование звука на Arduino

Несмотря на то, что платформа Arduino, в основном, предназначена для работы с цифровыми устройствами, в архитектуру микроконтроллеров входят аналого-цифровой и цифро-аналоговый преобразователи и несколько каналов широтно-импульсной модуляции. Это позволяет осуществлять захват звуковых сигналов и их воспроизведение. Платформа Ардуино включает в себя как 8-битные AVR контроллеры, так и мощные 32 битные ARM процессоры. Принцип воспроизведения файлов Arduino MP3 не позволяет обеспечить высокое качество звука, поскольку с выхода контроллера снимаются импульсы прямоугольной формы (меандр), отличающиеся от идеального синусоидального сигнала.

Самым бюджетным модулем платформы Ардуино, является Arduino UNO с микроконтроллером ATmega 328, в котором интегрированы два 8-битных и один 16-битный счётчик, каждый из которых может быть использован для генерации ШИМ. Контроллеры получают сигналы от внешних источников и выдают свои собственные сигналы через порты ввода/вывода (GPIO). Теоретически порты микроконтроллера предназначены для работы с уровнями логического нуля и логической единицы, тем не менее, выводы GPIO позволяют оцифровывать аналоговые сигналы с ограничением по уровню и генерировать сигналы различной формы с помощью ШИМ и фильтра низких частот. Внешние данные могут поступать разными способами, но основным методом оцифровки звукового сигнала является использование АЦП.

Так же данные могут поступать на микроконтроллер через первый разряд порта ввода/вывода. Аналого-цифровой преобразователь позволяет точно оцифровывать входной сигнал с разрешением до 10 бит. Оцифровка может выполняться на более высокой скорости преобразования, но при этом уменьшается точность, так как два младших бита игнорируются. После того как входной сигнал был оцифрован и прошёл необходимые преобразования он может быть конвертирован в аналоговую форму через блок ШИМ. Амплитуда сигнала кодируется через соотношение длительностей логического нуля и логической единицы. Важным этапом обработки выходного сигнала является фильтрация, удаляющая высокочастотные компоненты модуляции. Так же фильтры ограничивают частотный диапазон звукового сигнала.

Для воспроизведения отдельных частот звукового диапазон можно использовать внутренний генератор Arduino. Для этого достаточно подключить к плате пьезоэлектрический динамик и задать простую функцию. Динамик подключается между контактами GND и «2» разъема Digital. Динамик нужно подключать через резистор 100 Ом. Далее задаётся конкретная функция. Выбирается контакт const byte dinPin = 2; Контакт настраивается как выходной pinMode (dinPin, output); //. Затем командой tone можно включить генератор с заданной частотой. Команда выглядит следующим образом: tone ( dinPin, 440 ) ; // Получился электронный камертон генерирующий ноту Ля первой октавы. Нота будет звучать до тех пор, пока генерация не прекратится командой noTone ( dinPin ); //

Плеер для Ардуино

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

  • Адаптер для карт памяти.
  • Соединительные провода.
  • Динамик 8 Ом.
  • Транзистор BC 546 B.

На транзисторе собран усилитель низкой частоты. Без него можно обойтись, подключив к плате Ардуино высокоомный пьезоэлектрический динамик, но он имеет ограниченный частотный диапазон и не обеспечит нормального качества звучания. Arduino wav-файлы воспроизводит нормально, а вот для чтения файлов в формате МР3 он не предназначен, поэтому все звуковые файлы нужно конвертировать в формат wav, используя программу Online-convert.com. Файлы записываются в формате wav pcm Mono 8 kHz 8 bit. SD-карту памяти нужно отформатировать и затем перенести на неё wav файлы с простыми идентификаторами типа “001.wav. Адаптер для чтения SD-карт имеет встроенный стабилизатор напряжения, поэтому обе платы можно питать от одного источника +5 В. Адаптер подключается к плате Ардуино следующим образом:

  • CS – 10 контакт.
  • MOSI –11 – “ – “.
  • MISO –12 – “ – “.
  • CLK – 13 – “ – “.
  • GND – земля.
  • 5 V – питание + 5 В.

Для работы устройства следует загрузить библиотеку TMRpcm-Arduino, которая предназначена для чтения файлов в формате wav непосредственно с карты памяти. Библиотека поддерживает все модули, выполненные на микроконтроллере ATmega328.

Модуль МР3 для ардуино

Более сложной модификацией плеера является вариант с использованием отдельного устройства, где датчик МР3 позволяет воспроизводить файлы именно в этом формате. Обычным носителем информации в мини плейерах является твердотельный накопитель информации или карата памяти micro-SD. На ней располагаются звуковые файлы определённого формата. Чаще всего используются карты с ёмкостью, не превышающей 32 Гб. Для подключения к Arduino удобно использовать DF Player Mini MP3. Он представляет собой компактную плату, на которой находятся следующие компоненты:

  • Слот для установки карты.
  • Усилитель звуковой частоты.
  • Дискретные элементы.

Питание модуля осуществляется от источника постоянного тока с напряжением 3,5-5,0 В. Плейер поддерживает форматы MP3, WAV, WMA и TF карты с системами FAT16 и FAT32. В устройстве имеется возможность управлять уровнями громкости от 0 до 30 и включать одну из 6 предустановленных настроек эквалайзера. Подключение плеера к ардуино выполняется следующим образом:

  • VCC – + 5 V
  • RX – RX
  • TX – TX
  • SPK 1 – динамик
  • SPK 2 – динамик
  • GND – GND

Линии RX и TX подключаются через резисторы 1 кОм. Для того чтобы устройство заработало нужно загрузить библиотеку Mini mp3 Arduino Library V2.0. Основной набор команд, выполняемых плеером:

  • Mp3_play (0002) – воспроизведение файла с указанным номером.
  • Mp3_stop – остановка воспроизведения.
  • Mp3_next – следующий файл.
  • Mp3_prev – предыдущий файл.
  • Mp3_set_volume – выбор уровня громкости.
  • Mp3_set_EQ (0-5) – выбор предустановки эквалайзера.

Если подключить к плееру USB порт через контакты USB «+» и «–», то можно воспроизводить звуковые файлы, записанные на флэш-карте.

Звук на Arduino

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

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

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

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

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

Генерация звуков на Arduino

Для генерации звуков на Arduino существует функция tone()

Функция tone()

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

Синтаксис функции tone()

  • tone(pin, частота)
  • tone(pin, частота, длительность)

Пример использования функции tone()

const int SoundPin = 9; // Пин подключения пьезоизлучателя – 9 дискретный
int DelaySound = 1000; // Пауза 1 секунда

void loop()
<
// Пример использования tone()
//tone(pin, частота)
tone(SoundPin, 1915); // Воспроизводим сигнал с частотой 1915 Гц
delay(DelaySound); // Пауза 1 секунда (1000 миллисекунд – значение переменной DelaySound ) – длительность воспроизведения сигнала

tone(SoundPin, 1700);
delay(DelaySound);

tone(SoundPin, 1519);
delay(DelaySound);

tone(SoundPin, 1432);
delay(DelaySound);

tone(SoundPin, 1275);
delay(DelaySound);

tone(SoundPin, 1136);
delay(DelaySound);

tone(SoundPin, 1014);
delay(DelaySound);

Источники:

http://arduinoplus.ru/zvukovaya-panel-arduino/

http://arduinomaster.ru/datchiki-arduino/arduino-mp3-wav-modul/

http://geekelectronics.org/arduino/arduino-ndash-generatsiya-zvukov.html

http://arduinomaster.ru/uroki-arduino/robot-mashinka-avtomobil-arduino/

Ссылка на основную публикацию