Ой, логотип кудато делся

SVXLink ESP32 Hot-Spot, Node, Link — v0.3.32 (обновление прошивки)

SVXLink ESP32 Hot-Spot, Node, Link — v0.3.32 (обновление прошивки)
Новости / Блог / SVXLINK / Галерея идей / Аналоговая радио связь
20:32, 22 август 2026
16
0



| Версия | Основные изменения после 0.3.21


| 0.3.22 | Первая настройка Wi-Fi без предварительного web-входа, downlink PTT-tail, включение/отключение устройства, фильтры SA818/SA868 и безопасное управление H/L.

| 0.3.23 | Realtime-resync jitter buffer для sequence-разрывов и расширенная диагностика окна.

| 0.3.24 | Исправление гонки при очистке jitter window, адаптивный rebuffer и устранение ложного RX timeout после штатного завершения передачи.

| 0.3.25 | Увеличение внутреннего jitter buffer до 48 кадров, ограничение web-настройки jitter до 200 мс и диагностика задержек прихода UDP.

| 0.3.26 | Полная защита remote tail, корректная обработка пустого jitter window и адаптивный rebuffer до 480 мс только для подтверждённых провалов.

| 0.3.27 | Полное удаление BOOT/GPIO0 из local PTT; возвращена схема SQL/GPIO33 для локальной передачи.

| 0.3.28–0.3.29 | После теста отдельной UDP-задачи оставлена стабильная общая сетевая обработка с ограниченным разбором накопленных UDP-пакетов; восстановлена настройка активного уровня внешнего PTT GPIO32 и отложенная отправка NODE_INFO.

| 0.3.30 | Переключатель Wi-Fi modem sleep и профили SvxReflector с web/DTMF-переключением без reboot.

| 0.3.31 | Приоритетное немедленное переключение рефлектора с завершением текущей радио- и audio-активности.

| 0.3.32 | Выбор внутреннего ADC/DAC, WM8978 или WM8960 в web-панели, с сохранением GPIO36 для будущего измерения.


1. Устойчивость аудио и UDP

В цикле обновлений 0.3.23–0.3.26 переработана обработка входящего аудио:

- добавлен realtime-resync jitter buffer при больших разрывах sequence и переходе за границу окна;

- устаревшие аудиопакеты удаляются, а свежий поток принимается без постоянного зависания в старом окне;

- исправлена гонка при очистке пустого jitter window;

- обычное начало удалённой передачи не получает лишнюю задержку;

- rebuffer после подтверждённого провала аудио увеличивается адаптивно;

- увеличен внутренний запас jitter buffer с 24 до 48 аудиокадров;

- в UART добавлена ограниченная по частоте диагностика задержек прихода аудиопакетов и sequence-разрывов;

- web/API и импорт настроек ограничивают пользовательский jitter buffer диапазоном 0–200 мс; старые значения выше лимита нормализуются;

- параметр pre-key остаётся отдельной настройкой и не смешивается с ограничением jitter buffer;

- добавлено независимое удержание PTT после окончания удалённой передачи;

- исправлены ложные RX timeout, которые раньше могли сработать внутри штатного хвоста передачи;

- штатное завершение TALKER_STOP/FLUSH больше не классифицируется как underrun до появления нового подтверждённого аудиопотока.

- диапазон настройки входного и выходного band-pass расширен до 50–7000 Гц; верхняя частота проверяется и должна быть выше нижней.

Внутренний тест отдельной UDP-задачи показал нестабильность при длительной работе, поэтому в итоговой стабильной схеме оставлен проверенный вариант обработки TCP и UDP с ограниченной обработкой накопившихся datagram. Это сохраняет устойчивость runtime и не меняет wire-протокол SvxReflector.


2. PTT, SQL и радиомодуль

- BOOT/GPIO0 удалён из runtime как дополнительный local PTT. Нажатие BOOT после загрузки больше не запускает передачу.

- Локальный TX запускается входом SQL/GPIO33.

- Внешний PTT радиостанции использует отдельный GPIO32.

- В web/API возвращена настройка активного уровня именно GPIO32: HIGH или LOW. Она не возвращает PTT на BOOT/GPIO0.

- Активный уровень SQL/GPIO33 настраивается независимо от уровня внешнего PTT.

- Во всех аварийных и сетевых сценариях GPIO32 переводится в безопасное состояние.

- Для SA818/SA868 добавлены сохраняемые настройки Pre/de-emphasis, High-pass и Low-pass.

- Управление линией H/L радиомодуля ограничено безопасными состояниями High-Z/LOW.

- Настройка частоты, SQL, громкости, RX/TX CTCSS, полосы и мощности радиомодуля сохраняется через web и применяется безопасно после перезапуска.


3. Управление устройством и DTMF

В web-панели и через DTMF добавлен общий режим включения/отключения радиотракта и ретрансляции:

- *01# — включить устройство;

- *00# — отключить устройство.

В отключённом состоянии радиотракт и передача в рефлектор остановлены. Команды разблокировки и включения остаются доступными, чтобы устройство можно было вернуть в работу без физического доступа к плате.

Также улучшена работа с MONITOR_TGS: список до 16 TG нормализуется при сохранении, пробелы и переводы строк приводятся к единому формату, дубликаты отклоняются, а при неизменившемся списке повторная отправка его в рефлектор не выполняется.


4. Профили SvxReflector

Добавлена система до пяти профилей рефлекторов.

- Профиль 1 — Default. Он использует основные поля рефлектора, которые уже были в web-панели.

- Профили 2–5 настраиваются отдельно и содержат название, адрес/IP или URL, порт, callsign, ключ авторизации, DEFAULT_TG, MONITOR_TGS и DTMF-код.

- В web-панели отображаются пять кнопок профилей и имя активного рефлектора.

- Короткое нажатие переключает профиль.

- Удержание профилей 2–5 открывает окно их настроек. Профиль 1 остаётся основной конфигурацией без отдельного окна.

- Активный рефлектор отображается в верхней карточке web-панели и на idle- экране ST7735S.


Команды DTMF по умолчанию:

- **01# — подключить основной профиль Default;

- **02#**05# — подключить профили 2–5;

- **00# — завершить работу с дополнительным профилем и вернуться к Default.


Коды можно изменить в настройках DTMF. Переключение является приоритетным:

1. текущая передача и удалённый приём безопасно прерываются;

2. очищаются RX, jitter buffer, remote tail, Parrot и отложенные сигналы;

3. внешний PTT GPIO32 немедленно снимается;

4. старая session блокируется от поздних callbacks;

5. запускается reconnect с новым профилем без перезагрузки ESP32.

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


5. Wi-Fi

- Если список Wi-Fi ещё пуст, web-панель показывает адаптивную форму первой настройки: можно выполнить scan, выбрать SSID и ввести пароль без предварительного web-входа.

- После успешного подключения к первой сети ESP32 автоматически перезагружается и возвращается к обычной авторизации.

- Добавлен сохраняемый переключатель Wi-Fi modem sleep.

- По умолчанию используется WIFI_PS_NONE, чтобы уменьшить периодические помехи в аналоговом аудиотракте.

- WIFI_PS_MIN_MODEM можно включить в web для снижения энергопотребления; изменение применяется без перезагрузки и без смены Wi-Fi session.

- Текущий RSSI и состояние Wi-Fi видны в web-панели.


6. Внешние WM8978 и WM8960

В web-панели рядом с настройками дисплея и радиомодуля появился выбор аудиотракта:

- Внутренние ADC/DAC — режим по умолчанию;

- WM8978 (I²S);

- WM8960 (I²S).

Оба внешних драйвера входят в одну прошивку. Отдельная сборка для выбора кодека не нужна: профиль сохраняется во flash/NVS и применяется после безопасной перезагрузки.


Во внешнем режиме используются I2S1 и I2C. По умолчанию:

| Сигнал | GPIO ESP32 |

| MCLK | 15 |

| BCLK | 25 |

| WS/LRCLK | 26 |

| DOUT ESP32 → кодек | 19 |

| DIN кодек → ESP32 | 34 |

| I2C SDA | 21 |

| I2C SCL | 5 |

| I2C address | 0x1a |


GPIO25 и GPIO26 переиспользуются как BCLK и WS. GPIO36 во внешнем режиме не инициализируется ADC-драйвером и остаётся свободным для будущего измерения напряжения батареи или S-meter. Runtime проверяет конфликты GPIO с PTT, SQL, LED, UART, дисплеем и радиомодулем.

Если кодек не найден или I2C-настройка завершилась ошибкой, радио-аудио не запускается, но устройство не должно уходить в reboot loop: web-панель остаётся доступной для возврата к внутреннему ADC/DAC.


7. Web-панель и сохранение настроек

- В web-панели отображаются активный рефлектор, состояние переключения и текущая работа устройства.

- Добавлены до 12 именованных пресетов TG для номеронабирателя.

- Добавлен единый экспорт и импорт полного файла настроек: в него входят конфигурация рефлектора и профили, TG-пресеты, DSP/jitter/pre-key/tail, сигналы и DTMF вместе с блокировкой команд, параметры времени, Wi-Fi-профили, Wi-Fi modem sleep и импортированный node_info.

- После восстановления файла настройки полностью заменяются и ESP32 безопасно перезагружается.

- Обычные API не возвращают сохранённые ключи авторизации и Wi-Fi-пароли.

- Изменение профиля дисплея, радиомодуля или аудиокодека применяется только через безопасную перезагрузку.

- Если радиотракт занят, запрос перезагрузки не должен прерывать текущую передачу; web получает отказ до безопасного состояния.

- Интерфейс сохраняет адаптивную разметку для телефона, крупные touch-кнопки, последовательное обновление состояния и отображение активного оборудования.

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

- Импортированный node_info передаётся рефлектору с актуальными runtime полями TG/monitor/scan, а пользовательские поля сохраняются отдельно.

- Устаревший индикатор входного уровня удалён: он не выдаётся за точное измерение уровня аудио.


Дополнительная информация

Резервная копия настроек:

  В web-панели добавлен раздел «Резервная копия настроек».

  Можно сохранить все настройки ESP32 в единый JSON-файл и восстановить их на этом или другом устройстве.


  В резервную копию входят:

  - настройки основного рефлектора и профилей 2–5;

  - Wi‑Fi-профили и состояние энергосбережения Wi‑Fi;

  - DSP, jitter buffer, pre-key и audio tail;

  - сигналы подтверждения, Roger beep и DTMF-команды;

  - состояние блокировки DTMF;

  - настройки времени и NTP;

  - быстрые пресеты TG;

  - настройки трансивера;

  - импортированный node_info.json.

  После восстановления файл полностью заменяет текущие настройки, после чего ESP32 выполняет безопасную перезагрузку.

  Логин и пароль web-панели в файл не записываются. Однако файл содержит Wi‑Fi-пароли и ключи авторизации рефлектора, поэтому его необходимо хранить как секрет и не передавать посторонним.

 Энергосбережение Wi‑Fi

  В web-панели добавлен переключатель Wi‑Fi modem sleep.

  По умолчанию энергосбережение выключено (WIFI_PS_NONE). Это снижает вероятность периодических помех и задержек в аналоговом аудиотракте.

  При необходимости можно включить режим WIFI_PS_MIN_MODEM, чтобы уменьшить энергопотребление Wi‑Fi. Переключение применяется без перезагрузки ESP32 и без переподключения к рефлектору.

  Для стабильной передачи аудио рекомендуется оставить энергосбережение выключенным, особенно при слабом Wi‑Fi или чувствительном аналоговом тракте.


 Удержание PTT при нестабильной передаче из рефлектора

  Добавлено независимое удержание внешнего PTT после окончания удалённой передачи.

  Если передача из рефлектора приходит с задержками, короткими паузами или отдельными burst-пакетами, радиотракт не снимает PTT сразу после первого признака окончания речи. ESP32 выдерживает

  настроенный audio tail и ожидает возможные запаздывающие аудиопакеты.

  Также исправлена ошибка, из-за которой failsafe мог ошибочно сработать внутри штатного хвоста и преждевременно отключить PTT.


  После фактического окончания передачи:

  - обрабатывается остаток аудиобуфера;

  - проигрывается Roger beep, если он включён;

  - затем снимается PTT;

  - штатное завершение не считается ошибкой или аварийным timeout.

  При действительно зависшей передаче защитный failsafe сохраняется и принудительно отключает PTT.


  Быстрый набор TG и пресеты

  В web-панели добавлен быстрый выбор talkgroup:

  - кнопка «Выбрать TG»;

  - встроенный цифровой номеронабиратель;

  - возврат в режим сканирования;

  - добавление временной monitor TG;

  - до 12 именованных пресетов TG.

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


  Список MONITOR_TGS также был доработан:

  - поддерживается до 16 TG;

  - приоритет задаётся символами +;

  - пробелы, переводы строк и ; автоматически приводятся к единому формату;

  - дубликаты отклоняются;

  - список сортируется и сохраняется в нормализованном виде;

  - неизменившийся список не отправляется в рефлектор повторно.


   Быстрый ввод частоты трансивера

  Для активного SA818/SA868 в web-панели добавлена отдельная карточка трансивера и цифровой номеронабиратель частоты.

  Через неё можно быстро ввести рабочую частоту, а также настроить:

  - SQL;

  - громкость;

  - RX CTCSS;

  - TX CTCSS;

  - полосу 12,5 или 25 кГц;

  - мощность Low/Hi;

  - фильтр Pre/de-emphasis;

  - High-pass;

  - Low-pass.

  Настройки частоты и фильтров сохраняются в NVS и применяются после безопасной перезагрузки, чтобы не менять параметры радиомодуля во время активного radio path.

  При выборе профиля SA818/SA868 на web-панели и дисплее отображаются текущая частота, CTCSS, SQL, громкость, полоса, мощность и состояние UART.

  Для аудиофильтров также расширен диапазон band-pass: нижняя частота от 50 Гц, верхняя до 7000 Гц. Верхняя частота должна быть выше нижней.



---
Для первой прошивки испиользуйте Web Flasher.

Обновление через веб панель.

Для первого входа используйте смартфон, планшет или комьютер. После подключения по Wi-Fi (без пароля), войдите в браузер и наберите: http://192.168.4.1

Используйте логин: admin и пароль: 12345


Обратная связь

Ctrl
Enter
Заметили ошЫбку
Выделите текст и нажмите Ctrl+Enter
Комментарии (0)
Топ из этой категории
SVXLink ESP32 Hot-Spot, Node, Link — v0.3.32 (обновление прошивки) SVXLink ESP32 Hot-Spot, Node, Link — v0.3.32 (обновление прошивки)
| Версия | Основные изменения после 0.3.21 | 0.3.22 | Первая настройка Wi-Fi без предварительного web-входа, downlink...
22.08.26
17
0
SVXLink ESP32 — маленький проект с большими перспективами SVXLink ESP32 — маленький проект с большими перспективами
Хочу поделиться своим небольшим экспериментальным проектом SVXLink ESP32. Идея родилась довольно простая: попробовать...
18.08.26
137
0