MeshCore v1.17.0: Борьба с коллизиями, магия Multi-SF и тонкая настройка LNA 🚀

Вышло крупное обновление MeshCore версии 1.17.0. Это не просто набор мелких исправлений, а фундаментальное улучшение работы инфраструктуры. Разработчики сосредоточились на самых болезненных точках реальных развертываний: пересечении пакетов в шумном эфире, гибкости приема сигналов и энергоэффективности.

В этом релизе затронуты все три ключевые роли: Repeater, Companion и Room Server. Мы разберем каждое значимое изменение, объясним физику процессов и дадим практические рекомендации по настройке вашего оборудования после обновления.


Оглавление

Революция в борьбе с коллизиями 🥊

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

Исправление обнаружения преамбулы

Перед началом передачи MeshCore теперь активнее "слушает" эфир, чтобы не накладываться на уже идущий пакет. Ранее в коде существовала ошибка в обработке флага обнаружения LoRa-преамбулы (preamble detect).

Исправление этого бага дало поразительный результат. В контролируемых стендовых тестах, где коллизии генерировались искусственно, процент успешной доставки пакетов вырос с 80% до 93-95%. Это означает, что ваша сеть станет заметно стабильнее без замены железа или антенн.

Аппаратный CAD: экспериментальная функция

Параллельно разработчики тестировали аппаратный Channel Activity Detection (CAD). Это функция, при которой сам LoRa-чип аппаратно проверяет занятость канала перед передачей.

Однако в шумных городских условиях CAD показал себя неоднозначно. Из-за постоянного фонового шума чип мог определять канал как "занятый" и заставлять устройство ждать до 4 секунд перед каждой попыткой передачи. Это критически увеличивает задержки.

[ Логика проверки канала в v1.17.0 ]

1. Программная проверка (Включена по умолчанию)
   Слушает эфир → Преамбула обнаружена? 
   ├─ Да: Ждет окончания пакета → Передает
   └─ Нет: Передает сразу

2. Аппаратный CAD (Выключен по умолчанию)
   Запрос к чипу → Канал свободен?
   ├─ Да: Передает
   └─ Нет: Ждет 4 секунды → Повторяет проверку
   (Риск бесконечного ожидания в шумном эфире)

Поэтому в 1.17.0 аппаратный CAD оставлен выключенным по умолчанию. На Companion он пока недоступен. На Repeater его можно включить для экспериментов в относительно чистом эфире командой:

set cad on

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


Поддержка LR2021 и магия Multi-SF 📡

Одно из самых ожидаемых нововведений - полная поддержка нового поколения LoRa-чипов от Semtech, LR2021. Эта поддержка уже реализована в устройствах Meshnology W12 и SenseCAP MeshTracker X1.

Что такое Multi-SF и почему это важно

Традиционные LoRa-чипы (например, SX1262) могут принимать сигналы только на одном коэффициенте расширения спектра (Spreading Factor, SF) в данный момент времени. Чтобы услышать узел с SF7 и узел с SF12, репитеру приходилось бы переключаться между ними, рискуя пропустить пакет.

Чип LR2021 умеет принимать сигналы параллельно. Он может отслеживать основной SF и до трех дополнительных SF на одной и той же частоте и полосе пропускания одновременно. Радиочип не переключается между ними, а действительно слушает их все сразу.

[ Прием сигналов: Обычный чип vs LR2021 ]

Обычный чип (SX1262):
  Время 1: Слушает SF7  → Пропускает SF12
  Время 2: Слушает SF12 → Пропускает SF7

Чип LR2021 (Multi-SF):
  Время 1: Слушает SF7  + SF9  + SF10 + SF12 (параллельно)
  Время 2: Слушает SF7  + SF9  + SF10 + SF12 (параллельно)

Настройка на репитере

Эта функция открывает новые возможности для инфраструктурных узлов. Например, основная городская сеть может работать на быстром SF7 для экономии времени в эфире, а удаленный или сложный линк - на надежном SF10. Репитер на базе LR2021 сможет обслуживать обе группы узлов одновременно.

Настройка дополнительных SF выполняется через CLI репитера:

set extra.sf 9 10 12

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


Управление внешним усилителем приема (LNA) 🎛️

На некоторых платах Heltec (например, V4.3, но не V4.2) появилась возможность программно управлять внешним малошумящим усилителем (Front-End Module, FEM).

Внешний LNA против внутреннего усиления

Важно не путать две разные настройки:

  • radio.rxgain: Управляет усилением внутри самого LoRa-чипа.
  • radio.fem.rxgain: Управляет внешним аппаратным усилителем на плате.

Команды для управления:

get radio.fem.rxgain
set radio.fem.rxgain on
set radio.fem.rxgain off

Когда нужно выключать усилитель

Интуитивно кажется, что усилитель всегда должен быть включен для максимальной дальности. На практике в условиях плотной городской застройки это часто вредит. Внешний LNA усиливает не только полезный слабый сигнал LoRa, но и весь окружающий радиочастотный шум, а также мощные посторонние сигналы (например, от базовых станций сотовой связи). Это приводит к перегрузке входного тракта и росту шумового пола (noise floor).

Состояние LNA Шумовой пол (Noise Floor) Потребление тока Рекомендуемое применение
Включен (on) Высокий (например, -103 dBm) Высокое (например, 12.3 мА) Сельская местность, слабый полезный сигнал, чистый эфир
Выключен (off) Низкий (например, -118 dBm) Низкое (например, 5.8 мА) Городская среда, много помех, сильные соседние сигналы

В одном из реальных тестов на Heltec V4.3 отключение внешнего LNA снизило шумовой пол на 15 dBm и уменьшило потребление почти вдвое. Теперь вы можете проверить это на своей установке без необходимости компилировать кастомную прошивку.


Настоящий режим сна (Poweroff и Hibernate) 🔋

Ранее команда выключения на некоторых платах работала некорректно. Устройство могло погасить экран, но оставить включенными модули GPS, LoRa или OLED, продолжая потреблять миллиамперы тока. Для автономных узлов на солнечных батареях это было критично.

Переработанная логика отключения

В версии 1.17.0 логика переработана так, чтобы при выполнении команды poweroff действительно отключалась вся периферия.

В тестах на Heltec V4 потребление после выключения упало до 13 мкА (микроампер), а не нескольких миллиампер, как было ранее. Для устройства с аккумулятором на 2000 мАч это означает возможность хранения заряда месяцами, а не днями.

Выключение кнопкой

Репитеры, оснащенные физической кнопкой, теперь поддерживают выключение долгим нажатием. Это не заменяет физический разрыв цепи аккумулятора (который ожидается в будущих версиях железа), но делает программное выключение по-настоящему эффективным.


Room Server и шаги к автоматизации 🤖

Room Server получил новую команду CLI, которая открывает двери для интеграции с внешними системами мониторинга.

Команда room.post

Теперь Room Server может создать сообщение от собственного имени прямо из командной строки:

room.post Equipment box opened

Такое сообщение сохраняется в комнате как обычный пост сервера и рассылается подключенным клиентам. Это создает механизм для удобной автоматизации. Внешний контроллер (например, Arduino или скрипт на Python) может отправлять в Room Server сигналы о событиях:

  • "Ящик оборудования открыт" 🔓
  • "Аккумулятор заменен" 🔋
  • "Температура выше нормы" 🌡️
  • "Оборудование перезапущено" 🔄

💡 Примечание: Прямая работа с GPIO и готовая автоматизация пока не добавлены в релиз. Сейчас появился именно программный механизм (API через CLI), через который внешние системы могут взаимодействовать с MeshCore.


Инфраструктурные изменения и новое железо 🛠️

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

Переход конфигурации на JSON

Формат файла конфигурации изменен с бинарного на JSON. Это делает настройки читаемыми, удобными для резервного копирования и редактирования вручную.

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

Основа для Universal Companion

Ранее Companion существовал как отдельные прошивки под Bluetooth, USB и Wi-Fi. В этом релизе добавлена поддержка Ethernet (для ThinkNode M7), а код переписан так, чтобы одна прошивка в будущем могла содержать сразу все интерфейсы (BLE + USB + Wi-Fi + Ethernet) с возможностью их одновременной работы.

Готовая официальная сборка Universal Companion в 1.17.0 еще не представлена. Пока необходимо скачивать отдельные версии под конкретный интерфейс, но фундамент для этого заложен.

Поддержка нового оборудования

Список официально поддерживаемых устройств расширился:

  • SenseCAP MeshTracker X1 (на базе LR2021)
  • Meshnology W12 (на базе LR2021)
  • ThinkNode M7 и M9
  • Heltec RC32
  • Heltec V4 R8
  • Heltec Tower V2
  • Nibble Zero Connect
  • Модули RAK Ethernet

Также включены различные исправления стабильности работы GPS, BLE, USB и драйверов дисплеев.


Практическое руководство по обновлению 📥

Обновление до версии 1.17.0 настоятельно рекомендуется для всех инфраструктурных узлов (Repeater и Room Server). Для обычных Companion обновление является накопительным, но также принесет улучшения в стабильности.

Инструкция по прошивке

  1. Переведите устройство в режим загрузчика (обычно удержание кнопки BOOT/PRG при нажатии RESET).
  2. Перейдите на официальный веб-флешер: flasher.meshcore.io
  3. Выберите вашу модель устройства и версию 1.17.0.
  4. Выполните прошивку и дождитесь перезагрузки.
  5. Проверьте, что конфигурация успешно мигрировала в JSON (команда get config).

Проверки после обновления

  • Если у вас Heltec V4.3 в городе, проверьте уровень шума и попробуйте команду set radio.fem.rxgain off.
  • Если вы используете LR2021, настройте дополнительные SF через set extra.sf.
  • Проверьте потребление тока в режиме ожидания, чтобы убедиться в корректной работе нового poweroff.

Зрелость инфраструктуры ✅

MeshCore v1.17.0 - это релиз, который переводит систему из разряда "энтузиастских экспериментов" в категорию надежной инфраструктуры. Исправление коллизий дает немедленный прирост надежности. Поддержка Multi-SF на LR2021 закладывает фундамент для сетей следующего поколения. А возможность тонкой настройки LNA и настоящий режим сна решают реальные проблемы развертывания в сложных условиях.

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

🔥 Действуйте: Обновите свои репитеры уже сегодня. Протестируйте отключение LNA в шумных зонах и оцените прирост стабильности благодаря исправленной обработке преамбулы. Будущее децентрализованной связи требует надежного фундамента, и v1.17.0 делает этот фундамент значительно прочнее.


🔥 Репетиторы по математике • 5-11 класс • Поступление в физико-математические школы России