Подписаться YouTube

Как сделать качественный звук в Arduino, mp3 плеер WT2003M02

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

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

Начну, пожалуй, с технической спецификации.

Управлять этим модулем можно по UART, на скорости 9600 бод.

Напряжение питания заявлено от 3 до 5.5 вольт. Что довольно удобно. Получается, что его можно напрямую запитать от li-ion аккумулятора 18650. Напряжение на этом аккумуляторе колеблется от 4,2 до 2,9 вольта в зависимости от уровня заряда аккумулятора. Я подробно рассказывал об этом в видео про то, как измерить заряд аккумулятора.

Потребляемый ток колеблется от 20 до 250 миллиампер в зависимости от нагрузки.

Уровень логики 3,3 вольта. Есть опорное напряжение для конвертора уровня логики на 14 контакте.

Поддерживает аудиофайлы MP3 с частотой дискретизации 8 ~ 48 кГц и битрейтом 8 ~ 128 кбит/с.

Максимальное качество как раз соответствует самым популярным настройкам сжатия mp3.

Поддерживает аудиофайлы WAV с частотой дискретизации 8 ~ 44,1 кГц

Скорость работы встроенной FLASH памяти от 8 Мбит до 128 Мбит в секунду, как при работе через SPI интерфейс, так и при копировании данных с компьютера.

Диапазон рабочих температур от -40 до 85 градусов Цельсия. Т.е. его вполне можно использовать на улице.

Динамик рекомендуют подключать мощностью 1 ват с внутренним сопротивлением 8 ом.

При подключении к компьютеру данный модуль определяется как флешка. Это очень удобно. На эту флешку можно просто скопировать нужные MP3 файлы и начинать ей пользоваться.

Объемом флешки 4 мегабайта или 32 мегабита. Объем флешки на алиэкспресе почему-то был указан в мегабитах. Это не очень то много, но этого вполне хватит, чтобы сделать качественную озвучку для какого-нибудь механизма. 10 файлов с китайской озвучкой занимают всего 741 килобайт.

Самый простой пример использования этого модуля выглядит вот так. Достаточно подать на него питание, от 3 до 5 вольт, к контактам 3 и 4 подключить динамик и кратковременно подключить 13 контакт к земле. Модуль сразу начнет воспроизводить первый трек из своей память, если он там конечно есть.

WT2003M02 простой пример

Данный модуль называется WT2003M02 v3.0. Это третья версия этого модуля. От предыдущих версий данного модуля она отличается довольно сильно. В предыдущих версиях не было возможности управлять воспроизведением по UART, там был другой протокол связи, а так же там была другая прошивка, распиновка и набор команд. Версия модуля написана на самой плате.

Распиновка

WT2003M02 pаспиновка

Питание подается на 16 и 8 контакт. Напряжение питания может быть от 3 до 5.5 вольт.

Контакты 3 и 4 обозначенные как ROUT и LOUT предназначены для подключения динамика. В datasheet от этой платы версии 1.0 эти выходы обозначены как левый и правый звуковой канал. Везде в datasheet нарисованы схемы, в которых динамик подключается между ними. Но при этом они обозначены как ROUT и LOUT.

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

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

Контакты 10 и 11 это TX и RX цифрового интерфейса UART.

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

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

К контактам 12 и 13 можно подключать кнопки. Схема их подключения выглядит вот так.

WT2003M02 кнопки

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

Контакт 12 дублирует кнопку NEXT.

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

WT2003M02 кнопки

Контакт 14 это опорное напряжение 3.3 вольта, уровень логики этой микросхемы это как раз 3.3 вольта. Этот контакт может понадобиться, если ваш микроконтроллер имеет другой уровень логики и вы захотите подключить конвертор уровня логики.

Контакты 5 6 7 9 отвечают за работу SPI интерфейса. В большинстве случаев они не понадобятся. В документации написано, что если они вам не нужны, то их можно никуда не подключать.

Про контакт 1 в документации сказано следующее “Пин сброса (после сброса на низкий уровень SPI-FLASH будет освобожден)”

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

Схема подключения WT2003M02 к микроконтроллеру

Здесь все просто. Нужно подключить питание, динамик и UART

Схема подключения WT2003M02 к Arduino или WeMos D1 mini

Функции доступны через UART

Теперь нужно сказать еще пару слов про то, какие функции доступны через UART.

Через UART можно запускать воспроизведение трека находящегося на диске, по первым четырем символам его имени. По этой причине файлы лучше именовать файлы с численным прификсом. В числовом прификсе должно быть 4 символа с ведущими нулями.

Есть команды пауза, плей, стоп, предыдущий файл следующий файл. Есть команды для управления эквалайзером. Всего в этом чипе есть 5 предустановленных настроек эквалайзера для поп музыки, рока, джаза, классики и какой-то базовой музыки. Возможно, это опечатка в datasheet и пятый эквалайзер предназначен для усиления басов.

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

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

Библиотека для Arduino IDE

Штука интересная, но готовую библиотеку для управления этим mp3 плеером я не нашел. Решил написать ее самостоятельно. В datasheet довольно подробно задокументированы все UART команды. Правда, оригинальный datasheet был на китайском языке. Впервые переводил документацию с китайского языка на русский.

Перевел, запрограммировал, выложил данную библиотеку в официальный репозиторий Arduino. Теперь пользоваться этой библиотекой будет совсем легко. Подключить библиотеку можно прямо из официального репозитория. Просто вбиваем в Arduino IDE название данного модуля "wt2003m02", находим в списке мою библиотеку, она называется вот так "AndreyRybalko WT2003M02 MP3 Decoder", и подключаем ее.

Теперь немного расскажу про прошивку и управление через UART.

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

Command List:
p     play or pause
s     stop playing
>     next song
<     last song
v??   Example: v20. Set volume 20
?     status
mn    set playmode single no loop
ms    set playmode single loop
ma    set playmode all loop
mr    set playmode random
@?    Example: @1. Play track number 1
#?    Example: #1. Play a file whose name starts with 0001
*???? Example: *0101. Play a file whose name starts with 0101
e0    Equalizer normal
e1    Equalizer pop
e2    Equalizer rock
e3    Equalizer jazz
e4    Equalizer classic
e5    Equalizer bass
-----------------
To display this menu, type any other character
-----------------
Just enter > to start playback

Предвижу вопрос некоторых пользователей. А можно ли соединить этот модуль с Arduino без преобразования уровня логики? Ведь это на самом деле обычно работает. Ну что же давайте проверим.

Я соединил Arduino UNO и этот модуль напрямую, хотя по даташиту уровень логики этих модулей не совпадает. У Arduino он 5 вольт, а у этого модуля 3,3 вольта. В данном случае все работает корректно. Цифровые входы Arduino срабатывают от напряжения 3.3 вольта, и данный модуль выдержал напряжение 5 вольт на своих цифровых входах.

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

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

Пришлось немного потрудиться с переводом документации и написанием библиотеки для Arduino, но результат меня порадовал. Этот модуль работает как я и ожидал.

Полезные ссылки

Модуль покупал здесь: AliExpress

Конвертеры уровня логики можно купить здесь: AliExpress

Моя библиотека: GitHub

Комментарии пользователей