Аудиоплеер BT201: возможности, подключение и AT-команды

BT201 — модуль-плеер с Bluetooth, USB, SD-картой и управлением по UART. Разбираем его возможности, подключение к Arduino и основные команды.
Что такое BT201
BT201 — это плата аудиоплеера для самодельных устройств, которая умеет брать звук сразу из нескольких источников: с USB-флешки, с SD-карты и по Bluetooth. Кроме того, она принимает FM-радиостанции, может управляться с ИК-пульта и записывать звук с микрофона. Долгое время стандартным выбором для подобных задач был DFPlayer, но он работает только с SD-картами ограниченной ёмкости, имеет односторонний протокол команд и невысокий уровень сигнала. BT201 относят к следующему поколению таких модулей.

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

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

Характеристики
| Питание | 5 В / 4,2 В, 0,2 А |
| Форматы аудио | MP3, WAV, WMA, FLAC, AAC, APE |
| ЦАП | 16 бит |
| Сигнал/шум | 95 дБ |
| Импеданс | 4 Ом |
| Мощность | 3 Вт |
| Источники звука | SD / USB / Bluetooth |
| Габариты | 60 x 40 x 5 мм |
Тактирование контроллера идёт от кварца. Это даёт точную скорость воспроизведения и исключает расхождение треков по времени, в том числе между несколькими плеерами, работающими одновременно.
Подключение к Arduino и скорость порта
Связь с контроллером идёт по UART, линии соединяются перекрёстно: RX к TX, TX к RX. Обмен двусторонний: плеер подтверждает команды, сообщает режимы работы, имена файлов и другую служебную информацию. Команды имеют вид «AT+…», как у модемов и GPS-модулей.
Чтобы попробовать команды вручную, Arduino превращают в мост между плеером и компьютером. Поскольку аппаратный UART у большинства плат один, для плеера используют программный порт: в примере это SoftwareSerial на выводах 3 (RX) и 4 (TX). Скетч просто пересылает байты из одного порта в другой.
По умолчанию BT201 работает на скорости 115200 бод. Для программного порта это слишком много, и в мониторе вместо ответа появляются нечитаемые символы.

Выхода два: взять плату с несколькими аппаратными UART, например MEGA2560, либо понизить скорость плеера. Для этого служит команда AT+CTxx, где xx — номер одной из шести предустановленных скоростей. Команда AT+CT01 выбирает самую низкую — 9600 бод. После подтверждения плеер нужно перезапустить, сняв и снова подав питание; новая скорость сохраняется до следующей смены. Затем оба порта в скетче переводят на 9600, и приветственные строки с настройками и состоянием устройств (вставлена ли карта, работает ли Bluetooth, уровень громкости, режим повтора) читаются нормально.
Основные команды
Документация производителя занимает 54 страницы и описывает пару сотен команд, но для большинства проектов хватает нескольких. В источнике часть из них записана через дефис, часть через плюс; в примере кода везде используется вариант с плюсом.
- AT+CM03 — переход в режим работы с SD-картой. После включения плеер ждёт подключения по Bluetooth, переключение занимает пару секунд и подтверждается голосовым сообщением.
- AT+CAxx — громкость от 0 до 30.
- AT+AA0 — остановка воспроизведения. Нужна сразу после переключения на накопитель, так как первый файл запускается автоматически.
- AT+ABxx — запуск файла по порядковому номеру, то есть по очерёдности записи на носитель, а не по имени.
- AT+CB — пауза и продолжение с того же места.
- AT+AJ/имя — однократное проигрывание файла по полному имени с папками и расширением.
- AT+AF/имя — то же, но далее файлы идут подряд.
- AT+M2 — количество звуковых файлов в шестнадцатеричном виде.
- AT+MF — имя текущего файла (вместо точки возвращается пробел).
Типовая настройка для запуска звука по событию выглядит так: переключиться на SD, задать громкость, выждать около двух секунд, остановить автозапуск, при необходимости включить одиночный режим командой AT+AC01, а затем по нажатию кнопки отправлять AT+AB с номером файла. Вывода «busy» у BT201 нет, поэтому окончание трека отслеживают по входящему сообщению вида «MO+00000xx». Запись звука на активный накопитель выполняется серией команд AT+RCxx.
Практические замечания
Если ИК-приёмник не используется, его линию данных советуют притянуть к земле резистором 1–10 кОм между контактами GND и IR: это убирает небольшие шумы и наводки, которые иногда появляются на выходе.
При работе со смартфоном по Bluetooth плеер воспроизводит звук телефона, включая разговор, передаёт голос обратно и может набрать заранее заданный номер. Отсюда и круг применений: озвучка квестов, звуковые оповещения, интеграция с домофоном или автоответчиком, добавление Bluetooth в старую автомагнитолу. На той же базе существуют близкие по возможностям платы BT321, BT301 и более компактная BT401. У DFPlayer на фоне BT201 остаётся по сути одно техническое преимущество — он примерно вшестеро меньше.