- Digitrode
- цифровая электроника вычислительная техника встраиваемые системы
- Музыкальный проигрыватель на Arduino своими руками
- Музыка на Arduino с модулем MP3 и WAV
- Формирование звука на Arduino
- Плеер для Ардуино
- Модуль МР3 для ардуино
- Урок 19. Делаем MP3-плеер на DFPlayer Mini и Arduino.
- Пример MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости.
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Музыкальный проигрыватель на Arduino своими руками
Музыкальный проигрыватель сегодня вполне возможно сделать самостоятельно. Хотя такое устройство на первый взгляд не представляет собой что-то очень простое, тем не менее, благодаря развитию экосистем быстрого прототипирования, и в первую очередь, Arduino, собрать музыкальный плеер своими руками теперь можно довольно легко.
Проект, представленный здесь, представляет собой простую систему музыкального плеера на базе платы Arduino Uno и модуля SD-карты. Поскольку все мы знаем, что Arduino может иметь дело только с цифровым сигналом или прямоугольные сигналом (меандром), то, если мы хотим работать с синусоидальной волной, мы должны использовать дополнительную схему обработки.
Звуковой сигнал является синусоидальной волной, поэтому мы использовали выход ШИМ и операционный усилитель для организации аудиовыхода. Чтобы генерировать чистый звуковой сигнал (синусоида), мы должны задействовать некоторый дополнительный компонент (в данном случае усилитель), потому что выход Arduino – это ШИМ (сигнал прямоугольной формы с возможностью изменения скважности), а не синусоидальная волна.
Схема музыкального проигрывателя на базе Arduino показана на рисунке, приведенном ниже. Среди других важных элементов присутствуют SD-карта, модуль SD-карты, операционный усилитель (LM386) и несколько других компонентов, такие как резисторы, конденсаторы и т.п. Плата Arduino Uno считывает и обрабатывает аудиофайл с SD-карты и производит звуковой сигнал через вывод ШИМ (контакт 9). Таким образом, в этом проекте, мы использовали только цифровые контакты.
Аудиофайл сначала преобразуется в формат .wav, потому что Arduino не может напрямую обрабатывать файл MP3. Чтобы воспроизводить MP3-файл, мы должны использовать MP3-шилд. Для хранения аудиофайла (звукового файла .wav) мы использовали SD-карту. SD-карта не может быть напрямую связана с Arduino Uno, поэтому мы использовали модуль SD-карты. Четыре вывода SD-карты CS, MOSI, MISO и SCK SD-карты подключаются к цифровым выводам 4, 11, 12 и 13 платы Arduino Uno соответственно, как показано на электрической схеме.
Аудиовыход берется с цифровой линии 9 платы Arduino и очень слаб, поэтому без последующей обработки он не слышен. В результате мы должны усилить выходной сигнал. Для усиления мы использовали LM386, который представляет собой низковольтный аккумуляторный усилитель мощности, предназначенный для применения, где основной проблемой является низкая мощность. Коэффициент усиления данной топологии усилителя равен 200. Для портативности и простоты использования мы запитали этот усилитель от 5 В, что подается напрямую с Arduino. Данное напряжение также отвечает за громкость. Например, если вы хотите увеличить громкость, вам нужно увеличить напряжение питания, и если вы хотите уменьшить громкость, вам необходимо уменьшить напряжение питания. Для лучшего звучания рекомендуется 8-омный динамик.
Код (скетч) для работы музыкального проигрывателя на основе 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 «+» и «–», то можно воспроизводить звуковые файлы, записанные на флэш-карте.
Источник
Урок 19. Делаем MP3-плеер на DFPlayer Mini и Arduino.
Как воспроизвести аудиофайлы в формате wav я уже рассказывал в уроке: Arduino SD карта. Воспроизводим звуки и музыку в wav формате. Данный способ подходит, когда нужно воспроизвести файлы не очень высокого качества, например, уведомления, оповещение и пр. Если же надо воспроизводить файлы в формате mp3, нам поможет модуль DFPlayer Mini.
MP3-плеер DFPlayer Mini позволяет воспроизводить аудиофайлы, записанные на карту памяти формата microSD. С помощью этого плеера можно управлять музыкой: приостановка и возобновление воспроизведения аудиофайла. А также можно установить громкость из 30-ти уровней громкости и одни из 6-ти режимов эквалайзера.
DFPlayer отлично подходит для Arduino проектов, в которых нужно воспроизводить уведомления или оповещения, а также для музыкального сопровождения с автоповтором выбранного трека, воспроизведением всех треков, или случайное воспроизведение треков.
Характеристики DFPlayer MP3 mini:
- Напряжение питания: 3,3–5 В
- Количество каналов: 1 моно, 3 Вт + 2 стерео, без усилителя
- Поддерживаемые частоты дискретизации: 8, 11, 12, 16, 22, 24, 32, 44,1, 48 кГц
- Разрядность ЦАП: 24 бита
- Поддерживаемые файловые системы: FAT16, FAT32
- Максимальный объём SD-карты: 32 ГБ
- Количество каталогов композиций: до 100
- Количество композиций в каталоге: до 255
- Форматы аудиофайлов: MP3, WAV, WMA
- Кол-во уровней громкости: 30
- Режимов эквалайзера: 6 (Normal/Pop/Rock/Jazz/Classic/Base)
Для реализации самого простого плеера не нужно подключать DFPlayer к Arduino. Достаточно подключить несколько кнопок вот по такой схеме.
Но у нас уроки про Arduino, поэтому рассмотрим простой пример подключения MP3-плеер к Arduino, который подключается по аппаратному или программному UART порту (пины RX и TX) Ардуино.
Код с выводом отладочной информацией будет вот таким. Данный код взят с сайта библиотеки DFRobotDFPlayerMini. Также нам понадобится библиотека для работы спрограммным UART портом SoftwareSerial.Скачать библиотеки можно внизу статьи, в разделе материалы для скачивания.
Для воспроизведения аудиофайла необходимо поместить на карту памяти microSD один трек. Файлы рекомендуется помещать в папку mp3 и называть порядковыми номерами вот в таком формате 0001.mp3. Мой опыт показывает, что можно скидывать файлы с любым названием и помещать в корень флешки, но воспроизводиться файлы будут в том порядке, в каком их загрузилина карту памяти. При пакетной загрузке одни файлы загружаются быстрее, а другие медленнее, из-за чего воспроизведение треков идет в хаотичном порядке.
Пример MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости.
Давайте сделаем полноценный MP3-плеера на Arduino. Для этого нам понадобится:
5. Динамик. Я использую от ноутбука.
6. 2 резистора на 10 кОм.
Все компоненты нашего будущего MP3-плеера на DFPlayer соединяем по схеме.
Загрузим файлы с треками на карту памяти microSD, я использую 3 трека с YouTube, чтобы можно было воспроизводить музыку в видеоролике и не получить бан. Архив с треками можно скачать внизу статьи, в разделе материалы для скачивания.
Код для MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости будет вот такой.
У платы Arduino NANO всего один аппаратный Serial Port, поэтому будем использовать программный порт. Для этого нужно установить и подключить библиотеку SoftwareSerial.h.
Чтоб проверить, подключен или нет DFPlayer используется условие:
Если в мониторе порта мы видим надпись «DFPlayer Mini online.» все подключено правильно и работает.
Данные строки кода
Включают первый трек. И выводят в монитор порта информацию об этом.
Строки ниже выводят в монитор порта полезную информацию о статусе работы.
Первая строчка выводит статус: цифра с кодом.
Вторая строчка выводить уровень текущей громкости от 0 до 30
Третья выводит настройки эквалайзера, также в цифровом значении.
Четвертая выводит, сколько треков найдено на карте памяти.
Последняя стока выводит, какой трек воспроизводится сейчас.
В мониторе порта это будет выглядеть вот так:
В основном цикле loop выводим условия проверки нажатия той или иной кнопки. И выполняем нужную команду.
Это одно условие для примера, остальные устроены аналогично, их рассматривать не будем. Список команд для работы с DFPlayer Mini myDFPlayer.next(); // Воспроизвести следующий mp3
Как видите, не так много кода и алгоритм работы достаточно несложный. Планирую реализовать пару проектов с использованием модуля DFPlayer Mini и Arduino, ESP8266, ESP32 для публикации на сайте. Благо, опыт работы с этим модулем и данными платформами есть.
Пишите ваши предложения и пожелания в комментариях. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Источник