Meshtastic. Что это такое, для чего нужно (и нужно ли вообще). Часть 1
Текст этой “статьи” получился достаточно большим, поэтому я решил поделить его на две части. В первой части (здесь) идёт речь про теорию Mesh-сетей и их особенности, краткое описание технологии LoRa и в конце про сам Meshtastic. Во второй части я собираю свои радиомодемы, смотрю зону покрытия, демонстрирую чат, тестирую дальность связи в условиях прямой видимости между двумя узлами. Здесь — сплошной текст и теория. Там — картиночки и веселье.

В конце прошлого года я ездил на научно-техническую конференцию в г.Уфа. К тому времени во многих городах России (в т.ч. в Уфе) уже успели столкнуться с “белыми списками” и, когда в очередной раз в городе включили ограничения, надежд на стабильную работу мобильных сетей никто не возлагал, а некоторые уже успели худо-бедно подготовиться к альтернативным способам мобильной коммуникации с друзьями и близкими: кто-то просто перешел на сети WiFi, ну а кто-то решил использовать другие сети для общения в нелицензируемом диапазоне частот (свободном для вещания) 433/868 МГц с использованием Mesh-сетей и даже раций. На докладах конференции пару раз поднимался вопрос использования Mesh-сетей в рамках проекта Meshtastic. Про Meshtastic на тот момент я слышал только отдалённо (из разряда “надстройка над LoRa, с использованием которой чуваки-радиолюбители порой списываются между собой”) и не думал, что это может быть чем-то хоть сколько-то популярным. На конференции оказалось, что у нескольких человек в помещении есть с собой радиомодули и что город довольно неплохо покрыт этой сетью. В кулуарах я обсудил подробнее проект и изучил принцип работы радиомодулей. В целом я заинтересовался и решил в свободное время опробовать Meshtastic самостоятельно. Этот текст, по-сути, является результатом моего погружения в эту тему.
1. Кто это такие — эти ваши “Mesh-сети”?#
Mesh топология (от анг. Mesh - ячейка) — это такой способ организации сети, когда узлы (абоненты сети) соединены между собой по принципу звеньев кольчуги: каждый соединяется с ближайшими к себе в зоне радиовидимости и, если два любых абонента “не видят друг друга” (то есть находятся вне зоны непосредственной радиовидимости друг друга), то информация передаётся через других абонентов (если таковые есть), которые выполняют функцию промежуточных узлов (ретрансляторов / маршрутизаторов). Это делает сеть децентрализованной и в значительной мере повышает её надёжность и зону покрытия. Основным достоинством в таких сетях является то, что передаваемые данные могут передаваться как в открытом виде (broadcast), так и в зашифрованном виде (и при этом всё равно ретранслироваться промежуточными абонентами).
Существуют следующие примеры Mesh-сетей:
- Meshtastic, о нём подробнее далее.
- Zigbee Mesh, чаще всего используются в системах умного дома и автоматизации производства. Система не ограничена одним только Mesh (есть, например, координаторы), но для передачи данных используется Mesh.
- Bluetooth Mesh, используется в системах IoT (интернет вещей): датчики освещения, счётчики и т.д.
- Wi-Fi Mesh (стандарт IEEE 802.11s), используется для расширения сети WLAN за счёт соединения нескольких точек доступа.
- MANET / ad-hoc сети. Это, как правило, спасательные сети, исследовательские и военные с большой мобильностью узлов.
Однократную передачу пакета от одного абонента к другому называют термином “хоп” (hop). Так, если сеанс передачи данных от отправителя (абонента A) к получателю (абоненту F) задействовал N промежуточных узлов следующим образом:
A -> B -> C -> D -> E -> F,
то подразумевается, что маршрут от абонента A до абонента F содержит 5 хопов. На первый взгляд, такая архитектура позволяет масштабировать сеть на произвольно большие расстояния и, таким образом, покрыть весь континент и передавать данные из Португалии до Чукотки, не платя ни копейки и радоваться жизни. Но, не тут-то было! Есть прямая зависимость между количеством “хопов” от каждого абонента и нагрузкой на сеть. Чем больше количество абонентов и их активность, тем выше и нагрузка на сеть и, если не ограничить при этом сеть, можно запросто её перегрузить сообщениями от удалённых отправителей. Так что mesh-сети в чистом виде плохо масштабируются до глобального уровня без иерархии или гибридных топологий и позволяют (в чистом виде, то есть без применения других топологий) объединять абонентов в пределах одного города или нескольких ближайших городов (в зависимости от излучаемой мощности, канальной скорости, рабочем диапазоне частот и т.д.).
Так вот, проект Meshtastic является достойным примером Mesh-сети, которая является надстройкой над технологией LoRa.
Что есть LoRa#
LoRa (анг. Long Range) — это технология (физического уровня, то есть на уровне “железа”, где баллом правят модуляция, кодирование и т.д.) сети, предназначенная для передачи данных на большие расстояния с низким энергопотреблением. Ключевая особенность LoRa — работа при низком отношении сигнал-шум (вплоть до отрицательных величин ОСШ). Такой эффект достигается за счёт следующих особенностей:
- Для передачи используется CSS (Chirp Spread Spectrum) — метод модуляции, где передаваемый символ представляет собой сигнал с линейно-частотной модуляцией (ЛЧМ) со своими параметрами в зависимости от передаваемого символа (в частности — символ кодируется циклическим временным сдвигом ЛЧМ сигнала).
- Полоса частот составляет, как правило, 125, 250 или 500 кГц. Битовая скорость, при этом, составляет до нескольких кбит/с (в зависимости от режима работы);
- Используется скремблирование с последующим свёрточным кодированием (4/5, 4/6, 4/7 или 4/8).
- Приём происходит с мягким решением, применяется декодирование Витерби-подобным алгоритмом. SNR при этом, в режиме нормальной работы, может достигать -20 дБ. Безумие!
В зависимости от региона используются частоты, находящиеся в нелицензируемых диапазонах частот (свободных для вещания с низкой излучаемой мощностью, как правило, от 14 дБм до 20 дБм в зависимости от региона):
- 433 МГц (Европа, Азия),
- 868 МГц (Европа),
- 915 МГц (США, Канада),
- 920…923 МГц (Азия).
Вот это вот всё в совокупности позволяет достигать дальности связи (при прямой видимости) от 2 км (в условиях города) до 35 км (пригород, сельская местность). В особых случаях, с использованием высотных мачт и направленных антенн, можно достигать дальности в 100+ км. Потребление при этом составляет до единиц миллиампер в простое, а при передаче находится в диапазоне 40…120 мА. Учитывая, что передача данных происходит не чаще нескольких раз в минуту, среднее энергопотребление является на порядки меньшим, чем WiFi.
Модуль EBYTE E22-900M30S с микросхемой Semtech sx1262 — типичным экземпляром среди радиомодемов LoRa.
Обладая таким набором возможностей, модемы LoRa стоят дёшево (их стоимость, как правило, не превышают 30$), что дополнительно делает их доступными для широкого спектра задач. Кстати про задачи. LoRa применяется в:
- различного рода датчиках температуры, влажности, давления,
- счётчиках воды, электроэнергии, газа,
- различного рода трекерах, метках,
- резервной связи,
- и т.д. С LoRa вроде разобрались. Итак.
Непосредственно, Meshtastic#
Проект Meshtastic зародился в 2020 году как надстройка над LoRa (к тому времени LoRa уже окончательно укрепился на рынке). Идеей проекта являлось создать “цифровую рацию” с автоматической ретрансляцией между абонентами. Meshtastic создан сообществом, активно им развивается и с годами приобрёл большое количество функций (настолько большое, что обилие возможностей системы стало приводить в ужас некоторых, что привело к созданию MeshCore, то есть, по-сути, упрощенного Meshtastic без кучи наворотов). Общение является бесплатным для пользователей (если не считать покупку самих радиомодулей).
В Meshtastic передача пакетов между абонентами по умолчанию ограничена 7 хопами, при этом узлы могут временно буферизовать сообщения и некоторое время ожидать передачи пока получатель не выйдет в сеть. В качестве передаваемых данных в Meshtastic:
- пользовательский текст,
- координаты абонентов (определяемые по GPS или выставленные вручную) и количество видимых спутников,
- информация о радиомодуле,
- разного рода телеметрия ( датчики температуры и влажности),
- служебные данные для соединения абонентов между собой,
- и т.д.
За 5 лет развития была подготовлена совместимость для более чем 100 различных устройств, добавлена возможность работы с различной периферией (модули GPS, пользовательские кнопки, светодиоды, динамики, пищалки, вибро-моторы, LCD и E-Ink экраны и т.д.).
Со временем появилась возможность интеграции с MQTT (Message Queuing Telemetry Transport), что позволяет объединить Meshtastic и IP-сеть для передачи данных в оба направления.
Управление радиомодулями, как правило, осуществляется посредством Bluetooth через смартфон (есть хорошее приложение для Android и iPhone), либо ПК (можно через USB-UART, через терминал, либо Web-интерфейс). В совокупности это делает Meshtastic удобной и функциональной платформой для построения автономных mesh-сетей.
С теорией я закончил. Во второй части речь пойдёт про мой опыт пользования Meshtastic на базе готовой платформы от Heltec.
Во второй части описано практическое “ковыряние” с платой, полученные радиомодемы и основной принцип работы в Meshtastic и полученные дальности.