Развёртывание сети на базе Meshtastic

в 15:45, , рубрики: esp32, lora, meshtastic, связь без интернета
Развёртывание сети на базе Meshtastic - 1

Эволюция доступной связи от «Чем громче крикнешь, тем дальше слышно» до «Чем выше залезешь на дерево, тем веселее прикручивать ретранслятор»

Mesh-сети в целом, и, в частности Meshtastic, уже давно не новая история. Почти все, кто называет себя радиолюбителем имеет одну‑две ноды в ящике своего рабочего стола. А с недавнего времени начал прослеживаться вполне ощутимый интерес к этой теме среди людей и вовсе далеких от радиоэкспериментов и подобной электроники. Чтобы не повторяться и не копировать информацию из десятков или сотен уже написанных статей и постов на профильных форумах буду рассматривать только свой вопрос, пропустив базовое объяснение, что такое mesh‑сеть, meshtastic и связанные темы.

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

Такие очевидные решения, как мобильная связь, высокоскоростной интернет и прочее невозможны. Реально доступен только еле‑еле живой спутниковый интернет от известного национального провайдера, который дает скорости ~128-512кбит/сек по настроению тарелки и «Ямала».

Радиосвязь с использованием носимых радиостанций — штука хорошая, но дорогая. Для выполнения моей задачи нужно как минимум 2 приличных DMR ретранслятора (у меня есть одна Hytera, которая обошлась в совершенно нереальные деньги), нормальный интернет, и 2–3 десятка самих радеек, средняя цена которой тысяч 8 (беру среднюю цену с маркетплейсов для TYT MD UV390). Все это дорого, да и инфраструктурно сложно, ведь ретрансляторы требуют 220В, которых в поле нет, поскольку группы мобильные, а дальности не хватит, если определить одно место и поставить основательно.

После совещания приняли решение — Meshtastic. Получил задачу вникнуть, разобраться, развернуть. Исходные данные такие: минимум 25–30 пользователей, две группы. Одна группа работает в поле, другая в 80 км от нее — центр принятия решений.

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

Вопрос ПЕРВЫЙ: что нужно купить?

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

  1. Основой носимых Meshtastic-передачтиков стал само собой HELTEC V4 (И не только носимых, был установлен в некоторые ретрансляторы вместо RAK4631). Плата построена на базе МК ESP32-S3 с 2мб PSRAM, что является ключевым моментом при планировании архитектуры сети, поскольку на других МК и без PSRAM невозможно использовать функция Store&Forward (см. официальную документацию) (хранение и досылку сообщений, при возвращении в сеть абонента). Даже, судя по сообществу, HELTEC V3 и V4 являются естественными лидерами в этой среде за удачную комбинацию характеристик и невысокую цену. У нее огромное сообщество, что выражено на практике, например, большим количеством всяких разных корпусов на маркетплейсах.

    Развёртывание сети на базе Meshtastic - 2
  2. Второе аппаратное решение, на которое стоит тратить деньги, на мой субъективный взгляд, разумеется, это "солнечный узел" D5L. Про солнечную панель не могу совершенно сказать ничего дурного. Она великолепна в своем исполнении: легкая, компактная, незаметная, заряжает батарейки даже при сильно пасмурной погоде. Удивительно! Правда, как мне кажется, стоит рассматривать солнечную панель в комплектации БЕЗ RAK 4631. RAK 4631 представляет из себя не более чем передатчик. Говорят он супер энергоэффективный. Может и так. На практике разницу в работе между панелью с RAK и HELTEC я не заметил, кроме того, что HELTEC кратно превосходит RAK по возможностям. Относительную "энергоНЕэффективность" HELTEC компенсируют хорошие свойства самой солнечной панели. RAKи, извлеченные из солнечных панелей, купленных по глупости, в последствии использовались, как стационарные ноды в режиме CLIENT BASE для мелкой узколокальной ретрансляции.

    Солнечный узел

    Солнечный узел
  3. LilyGo T-BEAM. Просто нода. Она оснащена всем, чем только можно. Но в условиях, когда требуется только связь через приложение-мессенджер, все эти навороты становятся бесполезными. Откровенных минусов у этого изделия я не нашел, плюсов, в слову, тоже. Повторюсь, в моем сценарии - это просто передатчик. Немного громоздкий. Корпусов на маркетплейсах великое множество, что не может не радовать - это плюс.

    LilyGo T-Beam и LilyGo T3

    LilyGo T-Beam и LilyGo T3
  4. RAK4631 и LilyGo T3. Обе этих платы разместил на последней строчке своего рейтинга. Признаться, не могу понять, зачем их брал. В попытке найти лучшее, обе эти оказались, явно, ошибками, которые пришлось как-то потом обыгрывать. Плюсов относительно лидеров (опять же оговорюсь: все это в моем сценарии использования) нет: LilyGo T3 - дорогая, относительно той же HELTEC, неоснащенная (HELTEC, к слову, из коробки умеет взаимодействовать с солнечными панельками), не найти нормальных корпусов. Просто поиграться по программировать можно взять, для целей Meshtastic - не вижу смысла.

    У RAK4631 плюсом является только энергоэффективность. Исходя из характеристик она просто божественная, и в солнечном узле, даже при редком солнце она может жить годами. На практике этой безумной low energy я не увидел. Вот разницу в дальности (в худшую сторону) по сравнение с heltec v4 увидел, а энергоэффективность нет.

LilyGo T3 (в корпусе из заводской упаковки с 18650 на изоленте)

LilyGo T3 (в корпусе из заводской упаковки с 18650 на изоленте)

Вопрос ВТОРОЙ: как должна выглядеть архитектура сети?

Красные отметки - отсутствие сигнала, зеленые - уверенный приём и передача

Красные отметки - отсутствие сигнала, зеленые - уверенный приём и передача

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

Первые измерения дальности оказались столь же неожиданными, сколько и удручающими.
Ожидания, разумеется, были на 5+ км на связи нода-нода. Конечно, фантазии. Реальная дальность оказалась около 850-900 метров, если разойтись друг от друга с двумя нодами в руках. Буквально прямая видимость (тестировали LilyGo T3 - 2 шт). Второй тест дальности был проведён с использованием LilyGo T3, ретранслятора D5L-R1 с RAK на борту и LilyGo T-BEAM. Тут результат сильно удивил. Ретранслятор повесили на дерево на высоте приблизительно 4 метра от земли на точке над уровнем моря примерно 185 метров. Реальная дальность оказалась более 3х километров. НО. В каждой низине сигнал терялся полностью. Было выявлено, что волне проще "залезать" холм, нежели распространяться в низине. Против физики не попрешь. Специфика 900+ МГц. Профиль местности, где были проведены тесты дальности отобразил на графике выше.

Исходя из измерений стало ясно: чтобы полностью покрыть нужную локацию связью, требуется размещать по одному ретранслятору в режиме ROUTER на каждые 3км маршрута (брали 3км радиуса) на высотах, и дополнительно, на участках с наиболее сложным рельефом, еще по одному между ними тоже через каждые 3км в режиме ROUTER_LATE, для увеличения отказоустойчивости системы. Получилось по ретранслятору на каждые 1,5км и 3км. Использовали всего 11 ретрансляторов на маршрут протяженностью чуть более 20км. Повторюсь: огромное благо, что солнечные панели можно не трогать после установки. За полтора месяца работы вышел из строя только один ретрик, и тот из-за механического повреждения, остальные даже ни разу не заряжали. Потрясающая вещь.

Для носимых нод выбрали стратегию CLIENT + CLIENT_BASE (или два клиента и клиент бейс, в тех случаях, когда специалисты работают тройкой). Без отправки телеметрии, геолокации и прочих служебных данных, дабы освободить эфир для целевой информации.

Отдельно нужно сказать, что Store&Forward были выставлены на каждый второй основной ретранслятор, чтобы не было задваиваний при автоматической досылке сообщений после возврата пользователя в сеть.

Вопрос ТРЕТИЙ: интернет-мост?

У «группы в полях» есть спутниковая тарелка, которая дает им интернет. Его недостаточно, чтобы обеспечить полноценный оперативный обмен информацией с головной частью команды. На практике это выглядит, как ожидание по 15–20 минут отправки одного сообщения через мессенджеры. Мештестик здесь идеально подходит. Тех 128–512кбит/сек, о которых писал выше, вполне хватает для работы. Легковесные сообщения улетают мгновенно, и мгновенно же приходят.

Публичный сервер в моих обстоятельствах рассматривать не пришлось. Не подходит. Выбор сразу пал в сторону развёртывания собственного Mosquitto на VPS. Настроено в соответствии с инструкцией на официальном сайте Meshtastic. В процессе настройки все было относительно несложно, кроме мелкой детали с ROOT TOPIC. Сервер видел подключение нод к себе, но не пропускал сообщения пока не очистил поле с корневой темой, оставив ее пустой, далее все заработало. К слову, арендованный сервер обладает 1 x 3.3 ГГц CPU • 2 ГБ RAM • 30 ГБ NVMe, использовано на Mosquitto и сопутствующий софт 2,6гб, а нагрузка в работе не превышает 25-30% от мощности.

Сервер на данном этапе обошёлся проекту в 4500 руб на полгода.

Вывод

Подводя итог могу сказать, что проект интересный сам по себе, интересна сама технология, о которой много слышал, но до этого ни разу с ней не соприкасался. Разработчики постарались на пять баллов. На всех этапах выполнения этой задачи сопровождало чувство, что кто-то уже столкнулся с моим вопросом и заботливо заранее подготовил решение. Исчерпывающая документация, простота в настройке, доступность всего необходимого, огромное, просто поражающе большое комьюнити по всем крупным городам России - всё это позволяет отметить, что технология действительно хороша!

Автор: noise_floor

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js