[Перевод] Знакомимся с аудио платой Bluetrum AB32VG1 RISC-V Bluetooth через RT-Thread
Bluetrum AB32VG1 — это макетная плата на базе микроконтроллера AB5301A RISC-V, спроектированного как под приложения с использованием Bluetooth-аудио, так и для общих проектов, которые работают с операционной системой реального времени RT-Thread.
Эту плату мне прислали разработчики RT-Thread, и далее я опишу свой опыт первого знакомства с ней. В ходе этого небольшого эксперимента я опробую RT-Thread Studio IDE, помигаю светодиодом и поработаю с примером кода для аудио интерфейса, так как для Bluetooth пока примеров нет…
Распаковка Bluetrum AV32VG1
Плата поставляется с кабелем USB-C, служащим для подачи питания и программирования.
На борту мы видим штыревые разъемы Arduino UNO для расширения, слот под MicroSD, USB-порт, 3.5 мм аудиовыход, ИК-приемник и несколько кнопок.
Снизу платы ничего интересного, разве что QR-код для WeChat.
Помимо этого, на ней есть несколько настроечных перемычек, но по ним я документацию не нашел и трогать их пока не стал.
Установка инструментов разработки и настройка
Начнем с документации, которая, как это ни печально, доступна лишь на китайском. Она также отсылает нас к инструментам на китайском сайте rt-thread.org, но при этом есть возможность переключиться на его английскую версию, rt-thread.io. Здесь мы находим нужные нам RT-Thread Studio IDE и Downloader v. 2.2.0. Последний мы используем для прошивки платы и получения доступа к консоли.
Вот ссылка на IDE, доступную, к сожалению, только для Windows, хотя в компании мне сообщили, что работают над версией для Linux.
Параллельно со скачиванием установки IDE, а это 804Мб, можно сразу скачать Downloader 2.2.0. Еще есть USB драйвер для CP210x, но для рассматриваемой в этом обзоре версии платы 2.0 он не понадобится, так как в ее основе лежит модуль CH340G USB — TLL.
Обратите внимание, что Downloader размещен на Gitee, где для скачивания потребуется создать аккаунт. Я там уже зарегистрирован, но для тех, у кого аккаунта нет, это явно не самый удачный вариант получения файлов.
Для установки RT-Thread Studio мне пришлось запустить виртуальную машину с Windows 7. При первой попытке я прождал, казалось, целую вечность, пока не получил следующее сообщение:
Следуя рекомендации, я закрыл все остальные программы, повторил попытку и на этот раз завершил установку, на что ушло около полутора часов. Далее при запуске RT-Thread Studio IDE меня поприветствовал экран авторизации.
Для IDE это выглядит бессмысленным, если только в ней не используются пользовательские данные, которые нужно хранить в облаке. К примеру, для использования Arduino IDE мне никогда не приходилось авторизовываться.
Создавать аккаунт мне было лень, поэтому я попробовал авторизоваться через GitHub, на что получил просьбу создать новый аккаунт либо связать его с существующим, предоставив кучу личных данных. Номер телефона и адрес почты вроде как необязательны, но при этом необходимо предоставить хотя бы что-то одно. Я выбрал почту, но письмо для ее подтверждения так и не получил.
В итоге я попытался отменить процесс регистрации, но тогда программа просто закрывается. В конечном счете я создал новый аккаунт RT-Thread Club с одним только адресом электронной почты и паролем. Имейте в виду, что в форме не допускается использовать адреса почты с символом +, который я использую для отслеживания утечек почты и спамеров. (например, username+company1@email.com или username+company2@email.com).
С горем пополам я все же вошел в RT-Thread Studio, и теперь можно заняться настройкой системы для платы. Для этого потребуется запустить RT-Thread SDK Manager и установить последнюю версию исходного кода RT-Thread из мастер-ветки, так как стабильные релизы еще не поддерживают платы Bluetrum.
После этого можно промотать вниз, выбрать последний пакет для Bluetrum AV32VG1-AB-PROUGEN, в моем случае 1.0.8, и кликнуть Install
.
Заметьте, что выбрать сразу последнюю версию RT-Thread и пакет Bluetrum для их одновременной установки нельзя, потому что SDK Manager может устанавливать только один пакет за раз.
На этом почти все. Осталось лишь установить набор инструментов RISC-V GCC.
Для справки уточню, что занимает приложение 500Мб ОЗУ и на моей виртуальной машине запускается около 5 минут.
Проект «Hello World» для Bluetrum AB32VG1
Теперь создадим наш первый проект, для чего переходим в File
→ New
→ RT-Thread Project
, присваиваем ему имя ab32vg1
, выбираем Base on Board
, после чего программа автоматически выберет плату PROUGEN G1
, для которой мы установили пакеты. Остальные настройки можно оставить, поэтому просто жмем Finish
.
Новый проект создается не пустым и уже содержит небольшой образец программы, которая выводит в консоли Hello World
и мигает светодиодом, расположенным рядом с USB-хостом платы:
#include
#include "board.h"
int main(void)
{
uint8_t pin = rt_pin_get("PE.1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
rt_kprintf("Hello, world\n");
while (1)
{
rt_pin_write(pin, PIN_LOW);
rt_thread_mdelay(500);
rt_pin_write(pin, PIN_HIGH);
rt_thread_mdelay(500);
}
}
Компиляция выполняется нажатием иконки Build
или Rebuild
.
Готово! Теперь можно подключать плату к компьютеру через USB, после чего в Device Manager отобразиться COM-порт CH340.
Прошить нашу программу на плату из RT-Thread Studio IDE не получится, так что делаем это с помощью Downloader 2.2.0. Язык интерфейса этого инструмента можно изменить на английский, хотя переведен он не полностью.
Для записи программы нужно убедиться, что COM
не выделен серым, и выбран COM2
, после чего загрузить из проекта файл rtthread.dcf
и кликнуть Start
. Обратите внимание, что мне пришлось кликнуть Info
, чтобы сбросить плату и запустить программу. Теперь светодиод замигает каждую секунду.
На последовательную консоль также можно переключиться, кликнув иконку Develop
. Это отобразит информацию о системе на англо-китайском диалекте. Почему-то Hello, world
не показывается целиком. В моем случае отобразилось лишь Hell
, что в крайне драматичной форме выражает мой опыт работы с этой системой на данный момент.
Аудио проект RT-Thread RISC-V
Поскольку Hello world
успешно заработал, мне захотелось реализовать проект посложнее с воспроизведением аудио по WiFi. Я подключил динамики к выходу 3.5 мм и запитал плату через USB.
Изначально я решил продолжить работу с новым проектом, добавив пакеты и настроив IDE согласно Википедии. На панели Project Explorer
нужно перейти во вкладку RT-Thread Setting
, откуда открыть дополнительные опции через кнопку More…
.
Здесь мне удалось найти некоторые настройки вроде Enable Audio Device
…
Но далее часть документации предлагает скриншоты только на китайском, например…
В английской версии я эти настройки сходу найти не смог. В принципе, можно было перевести текст с помощью Google Lens и во всем разобраться, но я уже достаточно провозился с этим обзором, поэтому просто скачал проект wav-player_rom, распаковал архив в каталог workspace
и импортировал его через RT-Thread Studio IDE.
Компиляция проекта прошла без проблем. При этом процесс занял около 50 секунд, что в пять раз быстрее, чем запуск RT-Thread Studio;). После я попробовал записать его с помощью Downloader, на что получил следующие сообщения:
[COM2] 9/11/2021 8:58:14 PM: 扫描中...
[COM2] 9/11/2021 8:59:26 PM: 错误 串口发送数据错误
Которые переводятся как:
[COM2] 9/11/2021 8:58:14 PM: Сканирование...
[COM2] 9/11/2021 8:59:26 PM: Ошибка. Последовательный порт отправляет ошибочные данные
Ну, а так как большая часть информации изложена на китайском, что в программе, что в Вики, в итоге я начал искать решение, тупо кликая наугад по всем опциям (проверенная временем техника отладки, используемая матерыми разработчиками), исправив-таки проблему выбором Tools
→ Mass Mode
.
Вот короткое видео, демонстрирующее, как все это выглядит и звучит.
Выводы
В настоящее время использовать плату Bluetrum AB32VG1 и RT-Thread проблематично, по крайней мере для тех, кто не знает китайский. Меня также не впечатлило то, что IDE работает только в Windows, и то, что для ее скачивания и использования необходима авторизация. Версия для Linux в разработке, но о планируемой дате релиза мне ничего не сообщили.
Отсутствие примера кода для Bluetooth, с которым можно было бы поиграться на изначально предназначенной для этого плате, тоже оказалось проблемой, но я предполагаю, что в ближайшем будущем он все же появится.
Если захотите поэкспериментировать сами, то плату можно заказать за $17 на Aliexpress.