Meshtastic — реализация самодостаточной mesh-сети на базе передатчиков LoRa

Проект Meshtastic развивает открытую коммуникационную платформу для построения самодостаточной децентрализованной сети передачи сообщений, в которой каждая точка сети связывается через соседние точки, без использования централизованных маршрутизаторов. Для трансляции сигнала используются приёмопередатчики на базе протокола LoRa, позволяющие передавать данные в нелицензируемом диапазоне частот со скоростью несколько килобит в секунду на расстояния в десятки или даже сотни километров (пользователями Meshtastic установлен рекорд в 254 км).

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

Каждый участник сети может отправлять и просматривать текстовые сообщений, а также использовать для поиска других участников средства геопозиционирования на основе привязки к GPS. Благодаря построению mesh-сети сообщения пересылаются по цепочке, что позволяет каждому в группе получить сообщения от самого дальнего участника, независимо от возможности установить с ним прямой канал связи. Возможна отправка как широковещательных, так и адресных сообщений, предназначенных определённому участнику.
Передаваемые сообщения шифруются с использованием заранее выбранных ключей PSK (pre-shared key) и алгоритма AES256.

Протокол передачи достаточно простой: каждый пакет отправляется в широковещательном режиме, после чего эфир анализируется на предмет прихода подтверждения получения одним из участников. Если подтверждение не получено, через определённый таймаут осуществляется ещё три попытки отправки. При получении пакета выполняется проверка, приходил ли данный пакет в прошлом, и если да он игнорируется, а если нет — ретранслируется другим участникам. При каждой передаче в пакете уменьшается счётчик хопов и при достижении нуля ретрансляция пакета прекращается.

Код прошивки для приёмопередатчиков написан на языках С/С++ и распространяется под лицензией GPLv3. Дополнительно предоставляются мобильные приложения для работы с mesh-сетью со смартфонов на платформах Android и iOS, а также web-интерфейс и Python-библиотека для автоматизации отправки и приёма сообщений. Прошивки подготовлены для различных плат на базе чипов ESP32, nRF52 и RP2040, таких как
RAK Meshtastic Start Kit (RAK4631 nRF52840, RAK11200 ESP32,
RAK11310 RP2040), Station G1, LILYGO LoRa T3-S3, Nano G1, HELTEC LoRa V3 и Raspberry Pi Pico с модулем SX1262.



Источник: http://www.opennet.ru/opennews/art.shtml?num=60423