SVXLink ESP32 — маленький проект с большими перспективами
Хочу поделиться своим небольшим экспериментальным проектом SVXLink ESP32. Идея родилась довольно простая: попробовать заменить привычный компьютер или одноплатник в радиолюбительском узле маленькой ESP32 и дать ей возможность напрямую работать со SvxReflector.
В результате получился уже не просто эксперимент, а вполне самостоятельный компактный узел. ESP32 подключается к сети по Wi-Fi, соединяется со SvxReflector по протоколу v2, принимает и передаёт звук в Opus и может непосредственно управлять радиотрактом.
Проект рассчитан прежде всего на радиолюбителей, которым интересно самостоятельно собрать небольшой линк, точку доступа или экспериментальный радиосетевой узел без Linux-компьютера и лишнего оборудования.
Уже сейчас реализованы:
- прямое подключение ESP32 к SvxReflector
- передача и приём голоса
- выбор и мониторинг TalkGroup
- управление TG с помощью DTMF
- локальный Parrot для проверки своего сигнала
- несколько профилей Wi-Fi с автоматическим выбором и резервированием
- собственная Web-панель настройки и контроля
- безопасное обновление прошивки через Web OTA
- диагностический дисплей ST7735S 1.8"
- поддержка управления радиомодулями SA818 / SA868
- управление PTT, SQL, мощностью, частотой, CTCSS и другими параметрами радиотракта.
А как же 8-битный звук?
Отдельно хочу сказать несколько слов о звуковом тракте, потому что первое, что наверняка бросится в глаза тем, кто хорошо знаком с классическим ESP32, — его встроенный 8-битный DAC.
Да, 8 бит по современным меркам звучит довольно скромно. Это всего 256 уровней амплитуды, и ожидать от такого выхода качества Hi-Fi, конечно, было бы странно. Но здесь важно понимать, для какой задачи создаётся устройство.
Внутри проекта звук обрабатывается совсем не как «8-битный». Рабочий цифровой тракт — PCM16, mono, 48 000 отсчётов в секунду, а передача между узлом и SvxReflector идёт через Opus. В 8 бит сигнал преобразуется только в самом конце — непосредственно при выводе через встроенный DAC ESP32 на радиомодуль.
При частоте дискретизации 48 кГц теоретический верхний предел представимого сигнала по Найквисту составляет:
48 000 / 2 = 24 000 Гц.
То есть сама частота дискретизации здесь с очень большим запасом и совершенно не ограничивает речевой диапазон.
Более того, в прошивке звуковой тракт намеренно ограничен полосовым фильтром. По умолчанию используется диапазон:
300–3500 Гц.
И это уже гораздо интереснее. Для сравнения: классический узкополосный тракт речевой связи традиционно находится примерно в районе 300–3400 Гц. Именно в этой области сосредоточена основная информация, необходимая для хорошей разборчивости речи.
Получается, что наш рабочий диапазон 300–3500 Гц практически точно лежит в привычной голосовой полосе радиосвязи.
Поэтому на бумаге фраза «8-битный DAC» сначала выглядит довольно пугающе, а на практике всё оказалось значительно веселее. Реальные испытания показали, что для речевой радиосвязи звук получается вполне пригодным, разборчивым и, я бы даже сказал, достаточно живым.
Разумеется, чудес здесь нет. 8-битный DAC имеет свои ограничения по динамическому диапазону и уровню квантования. Но радиолюбительский голосовой канал — это всё-таки не студийная запись музыки. Здесь гораздо важнее разборчивость, стабильность, правильная полоса и отсутствие перегрузки аналогового тракта.
И ещё один важный момент: 8-битный DAC не является принципиальным ограничением самого проекта.
Если кого-то такое решение всё же смущает или хочется получить заметно более качественный аналоговый тракт, схему без особых проблем можно дополнить внешним аудиокодеком или внешним DAC/ADC, подключив его к ESP32 по цифровому интерфейсу. Тогда встроенный 8-битный DAC вообще перестаёт участвовать в формировании звука.
То есть нынешний вариант я рассматриваю прежде всего как максимально простой способ собрать устройство из минимального количества компонентов и убедиться, что сама концепция работает.
А она, как показала практика, работает вполне достойно.
И в этом, пожалуй, одна из самых интересных особенностей проекта: можно начать буквально с ESP32 и радиомодуля, а дальше развивать аппаратную часть настолько далеко, насколько захочется — добавить внешний кодек, улучшить аналоговый тракт, сделать собственную плату и постепенно превратить маленький эксперимент в уже вполне серьёзный радиосетевой узел.
Для первой прошивки я сделал отдельный Web Flasher. Никаких ESP-IDF, esptool и командной строки пользователю устанавливать не требуется: достаточно подключить ESP32 к USB, открыть страницу прошивки в браузере, выбрать устройство и нажать кнопку установки.
Сам проект я хочу оставить максимально доступным для повторения. Поэтому буду публиковать схему подключения, распиновку, готовую прошивку и необходимые инструкции. Можно собрать устройство самостоятельно, прошить его через браузер, подключить к своему SvxReflector и начать экспериментировать.
При этом я не хочу представлять проект как законченное промышленное устройство. Это именно живой радиолюбительский проект, который сейчас развивается и проверяется на реальном железе. Некоторые аппаратные решения ещё требуют испытаний и доработки — и в этом как раз одна из самых интересных его сторон.
Мне кажется, у такой маленькой платы есть довольно большие перспективы: от простого домашнего линка до компактного автономного узла, который можно оставить где угодно, где есть питание, Wi-Fi и радиостанция.
Если тема вам интересна — собирайте, прошивайте, подключайтесь и тестируйте. Буду рад, если проект окажется полезным не только мне и со временем вокруг него появятся новые идеи, варианты железа и практические применения.
Продолжение следует. :)
















