Meshtastic в Украине или строим свою сеть.
Meshtastic – это проект, позволяющий использовать недорогие трансиверы на базе LoRa как дальнобойную коммуникационную платформу в зонах без имеющейся или ненадежной коммуникационной инфраструктуры.
Основная технология LoRa — это радиопротокол большой дальности, доступный для большинства регионов без дополнительного лицензирования или сертификации.
Радиостанции автоматически ретранслируют полученные сообщения, чтобы создать распределенную сеть, чтобы все в группе могли получать сообщения – даже от самого дальнего участника. В зависимости от используемых настроек Meshtastic меш может поддерживать до 80 узлов устройств (но в общем, возможно и больше).
Радиостанции Meshtastic можно соединить с одним телефоном, чтобы ваши друзья и семья могли отправить сообщение на конкретную радиостанцию. Каждое устройство одновременно поддерживает подключение от одного пользователя.
Особенности
- Большая дистанция связи (рекорд 206км)
- Для связи телефон не обязателен
- Децентрализованная связь – единый маршрутизатор не нужен
- Зашифрованное общение
- Отличное время автономной работы (зависит от устройства, но программно заложена энергоэффективность)
- Дополнительные функции определения местоположения на основе GPS (можно отключить или отправлять фейковую локацию)
- И более!
История появления технологии LoRa .
В начале 2015 года Semtech Corporation и исследовательский центр IBM Research представили новый открытый энергоэффективный сетевой протокол LoRaWAN (Long Range Wide Area Networks), обеспечивающий значительные преимущества перед Wi-Fi и сотовыми сетями благодаря возможности развертывания межмашинных (M2M) коммуникаций или сколых. .
Технология LoRa появилась на свет под эгидой некоммерческой организации LoRa Alliance , основанной такими компаниями как IBM, Semtech, Cisco и др., с целью принятия и продвижения протокола LoRaWAN как единый стандарт для глобальных сетей с низким энергопотреблением (LPWAN — от англ. Low Power Wide Area).
Разработчики LoRa Alliance позиционируют LoRa как технологию, имеющую значительные преимущества перед сотовыми сетями и WiFi благодаря возможности развертывания межмашинных (M2M) коммуникаций на расстояниях до 20 км (правда, рекорды дальности уже более 800км). и скоростях до 50 Кбит/с, при минимальном потреблении электроэнергии, что обеспечивает несколько лет автономной работы на одном аккумуляторе типа АА.
Диапазон применения данной технологии огромен: от домашней автоматизации и интернета вещей до промышленности и умных городов.
В нашей, реальной жизни LoRa используется, например: для взаимодействия разумных элементов города (автоматическое освещение в городах Украины), для военных нужд ( Проект ComBat Visionиспользует Mashtastic для синхронизации устройств в своей системе).
Meshtastic не LoRaWAN. Meshtastic использует полный диапазон частот, предназначенный для технологии LoRa для каждого региона. Это позволяет использовать несколько сот возможных частотных каналов.
Что такое Meshtastic ?
Meshtastic – это "LoRa based" проект, который позволяет использовать недорогие GPS-радиостанции трансиверы (30 долларов плюс-минус) в качестве расширяемого мешка GPS-коммуникатор с сверхпродолжительным сроком службы батареи. Эти трансиверы отлично подходят для пеших прогулок, катания на лыжах, велоспорта – практически для любого хобби, где у вас нет надежного доступа в Интернет. Каждый участник вашей частной сети всегда может видеть местоположение и расстояние всех остальных участников, а также любые текстовые сообщения, отправленные в ваш чат или писать вам лично через частные сообщения.
Радиостанции автоматически создают и поддерживают сеть LoRa для пересылки пакетов по необходимости (до 7 хопов), поэтому каждый в группе может получать сообщения даже от самого дальнего участника. Радиостанции будут по желанию работать с вашим телефоном, но телефон не обязателен.
Основная функция проекта: передача текста и координат через смартфон без использования сотовой связи и интернета.
Есть. на ваш смартфон Android или iOS, устанавливается приложение Meshtastic. Это программа чат типа Telegram или Viber. Телефон соединяется с радиомодемом через Btuetooth. Через радиомодем осуществляется связь с другими абонентами, у которых стоит такая же программа и такой же модем. На экране смартфона можно увидеть список абонентов и карту их расположения. Вы видите групповой чат и p2p чат с участниками сети.
Варианты сценариев применения:
- Экстренная цифровая связь при чрезвычайных ситуациях (например, отключение света)
- Поиск потерянных людей
- Создание своей радиосети среди единомышленников внутри своего района и даже самоорганизующееся далее в своем собственном проекте
- Передача легкой телеметрии, например с собственной метеостанции, показания дозиметра или другого датчика
- Спорт на свежем воздухе с ограниченным покрытием мобильной связи. (Пешие прогулки по горам, катание на лыжах, катание на лодках, парапланеризм или квадрокоптеры, и т. д.)
- Ситуации, в которых GPS-коммуникаторы с закрытым исходным кодом просто не помогут (легко добавить функции для пилотов квадрокоптеров или планеров и т.д.)
- Безопасная связь на большом расстоянии внутри групп, независимо от сотовых операторов
Необходимое аппаратное обеспечение для работы с Meshtastic:
- Android/iOS cмартфон или компьютер для настроек и общения в чате
- Meshtastic – радиомодем на основе LoRa-модулей связи .
- антенна. Лучшая антенна – лучшая связь. Комплектной антенны может хватить Читайте об этом ниже.
- Li-Ion аккумулятор или PowerBank для питания модуля
Радиосеть строится на основе готовых LoRa-радиомодулей. Главная особенность их состоит в большой дальности связи при очень скудной мощности. В Украине выделены под LoRa участки частот 433МГц. Конкретно под эту частоту вам нужно отыскать либо собрать модем и антенну.
Устройства Meshtastic
Украинская сеть развивается на частоте 433МГц . Поэтому будьте внимательны ! Заказывайте именно 433МГц модули, если хотите присоединиться к общей сети.
Общий список поддерживаемых устройств Meshtastic можно просмотреть на официальном сайте проекта: https://meshtastic.org/docs/supported-hardware
Есть несколько вариантов радиомодемов, которые рекомендуются для использования в Украинской сети :
- LILYGO® TTGO LoRa32 V2.1_1.6 T-Lora – самый дешевый, без GPS и не большой мощностью передачи. https://a.aliexpress.com/_Ev5JaUT
- LILYGO® T-Beam – самое популярное устройство. Уже с GPS и большей передачей. https://www.aliexpress.com/item/4001286458852.html
- LILYGO® TTGO Meshtastic T-Echo – лакшеры вариант. Лучшая мощность, энергоэффективный дисплей, встроенный датчик температуры и влажности. https://www.aliexpress.com/item/1005003026107533.html
Прошивка устройств
Для себя я выбрал именно LILYGO® T-Beam как наиболее сбалансированный по цене и количеству функций. Получив модуль первое, что нужно сделать — обновить прошивку модема до последней версии. Сделать это можно двумя способами: простым через web-интерфейс и условно сложным, через esptool. Вам могут понадобиться драйвера для serial-чипа ch9102: https://github.com/WCHSoftGroup/ch343ser_linux
ОБРАТИТЕ ВНИМАНИЕ!
Драйвер не поддерживает версию ядра >= 6.1. Но вы можете применить соответствующие патчи. Например https://github.com/WCHSoftGroup/ch343ser_linux/commit/0c08ee45b25ca93d2c213e18f881627849094268.patch
Прошивка через web интерфейс
- Подключаем устройство к компьютеру через USB
- Открываем https://flasher.meshtastic.org/ и выберите прошивку, которую нужно загрузить на Meshtastic, и выберите COM порт, к которому подключен ESP32.
- Нажмите кнопку "Flash" в веб-флешере. Процесс прошивки может занять несколько минут.
- После завершения прошивки устройство перезагрузится.
Прошивка через Visual Studio Code (Platformio )
Подготовка
- Установите Visual Studio Code ( https://code.visualstudio.com/ )
- Установите PlatformIO ( https://platformio.org/platformio-ide )
- Склоняйте прошивку:
git clone https://github.com/meshtastic/firmware.git
- Установите необходимые модули:
cd firmware && git submodule update --init
Прошивка
- Откройте папку с прошивкой в Visual Studio Code. И дождитесь пока PlatformIO установит все необходимые библиотеки
- В палитре быстрых команд
Ctrl + Shift + P
выберите PlatformIO: Pick Project Environment и выберите устройство. Дождитесь, пока PlatformIO загрузит необходимые библиотеки - Далее запустить PlatformIO: Build для сборки прошивки
- И, наконец, PlatformIO: Upload для загрузки прошивки на устройство
Это самый простой способ прошивки, если вы планируете использовать модификации описанные ниже.
Прошивка через esptool (сложный вариант )
Процесс сборки и сам процесс описан UT3UMS здесь: tbeam-firmware-ut3ums.md
Дополнительно при выборе этого способа прошивки модема можно реализовать следующее:
- Украинский язык на экране устройства: https://wikimesh.pp.ua/ru/настройки/Включение_русского_языка
- Увеличение мощности https://wikimesh.pp.ua/ru/настройки/Увеличение_мощности
- Расширенное логирование RadioLib через Serial https://wikimesh.pp.ua/ru/настройки/Расширенное_логирование_RadioLib
Первые настройки и подключение к сети
T-Beam и другие модемы с поддержкой Bluetooth могут быть настроены из приложения. Но этот способ, лично у меня работает плохо. Поэтому я выбрал вариант использования meshtastic cli утилиты (клиента).
Также следует отметить, что вы можете настроить и работать с модемом через web клиент: https://client.meshtastic.org/
Если вы новичок и дальнейшие пункты настоящей статьи для вас сложны, то вам лучше использовать web клиент! Просто подключите модем по USB к компьютеру и откройте веб-конфигуратор! Всё просто!
Установка meshtastic- cli
Вам нужен python3 и pip > 20. Проверьте свои версии и обновите по необходимости:
python3 --version
pip3 --version
Устанавливаем клиент:
pip3 install --upgrade pytap2
pip3 install --upgrade meshtastic
Далее можно подключить модем к компьютеру через USB и выполнить следующую команду:
meshtastic --info
Таким образом вы проверите, что все работает.
Настройка модема
Для начала работы с модемом вам необходимо выполнить следующие действия:
meshtastic --set-owner 'your node name' --set-owner-short 'NODE'
где your node name– это ваше имя в сети, а NODE– это короткое имя, которое будет отображаться на экране модема. Что-то типа аватарки. Поддерживается в том числе и эмодзы.
Устанавливаем настройки радио:
meshtastic --set lora.region EU_433 --set lora.modem_preset LONG_FAST
После изменения каждой настройки модем автоматически перезагрузится. Параметры настроек можно объединять в одну команду:
meshtastic --set-owner 'your node name' --set-owner-short 'NODE' --set lora.region EU_433 --set lora.modem_preset LONG_FAST
ИНФОРМАЦИЯ О РЕГИОНАХ
EU_433 – работает на частотах 433.0-434.0МГц и лимитом мощности 12 dBm
UA_433 – работает на частотах 433.0-434.7МГц и лимитом мощности 10 dBm
Список всех регионов и их настроек можно просмотреть в коде прошивки .
или в документации https://meshtastic.org/docs/overview/radio-settings
Загрузите клиент для вашей платформы https://meshtastic.org/downloads
И отсканируйте QR код с настройками сети.
Для IOS используйте сканер QR в приложении камеры. Для Android используйте встроенный в приложение Meshtastic сканер в настройках каналов.
Поздравляю! Вы в сети! Попытайтесь написать что-то в чат и вы обязательно получите ответ если ваш пакет кто-то "услышал". Если нет, то попробуйте изменить расположение или использовать антенну с большим коэффициентом усиления. Примеры антенн приведены здесь: https://wikimesh.pp.ua/ru/Рекомендуемые антенны
Что с антеннами ?
Если вы закажете из китая T-Beam или T-Echo то в комплекте будет простая антенна на 433МГц или на какую вы там частоту заказали модем . Ее может хватить для связи, а может нет. Зависит от вашей высоты, условий вашего расположения, дальности ближайшего работающего модема другому участнику сети. Мне повезло. Я живу на 13 этаже и у меня модем просто валяется где-то на столе с антенной от баофенга и все работает отлично.
Если вам не повезло с условиями, то антенну можно постепенно улучшать! OLX Базовая антенна продается в Украине на OLX за условные 300-500 грн. Это все нужно пробовать. Если вы не знаете какие антенны лучше, то вы можете обратиться к нам в телеграмм чате и мы вам поможем с выбором. Но сначала проверьте, работает ли с базовой антенной.
TLDR ;
Короче. Если вы ничто не поняли, но очень хочется попробовать то:
- Купить модем. T-Beam или T-Echo
- Скачать приложение для IOS/Android
- Подключить модем к компьютеру и настроить через https://client.meshtastic.org/
- Все!
ПРОЩЕ, ЧЕМ ВЫ ДУМАЕТЕ
Вовсе не обязательно использовать cli утилиту или заниматься прошивкой. Устройства приходят уже прошитыми на какую-нибудь версию и ее может оказаться достаточно. Антенна, как написано выше, может оказаться тоже не обязательной. Все вопросы вы можете задавать в телеграммах чате.
Модификации прошивки
Несколько модификаций по включению поддержки русского языка и увеличению мощности передачи для некоторых версий чипов описаны здесь: https://wikimesh.pp.ua/
Но я добавлю еще несколько.
Замена SplashScreen на собственный для T-Beam и подобных экранов
Файл XBM для замены:/firmware/src/graphics/img/icon.xbm
Конвертор файлов в XBM https://windows87.github.io/xbm-viewer-converter/ Или здесь можно порисовать :
Код копируем в файл icon.xbm
, но внимательно следим за наименованиями переменных и размерами, заданными для вашего устройства (поэкспериментируйте с размерами).
Полный перевод прошивки
Для этого нужно включить полную поддержку кириллицы. Сделать это можно в файле /firmware/variants/<variant>/platformio.ini
замените <variant>
на устройство добавив флаг сборки -D OLED_UA
Пример для T-Beam:
Файл/firmware/variants/tbeam/platformio.ini
; The 1.0 release of the TBEAM board
[env:tbeam]
extends = esp32_base
board = ttgo-t-beam
lib_deps =
${esp32_base.lib_deps}
build_flags = ${esp32_base.build_flags} -D TBEAM_V10 -I variants/tbeam -D OLED_UA -DGPS_POWER_TOGGLE ; comment this line to disable double press function on the user button to turn off gps entirely.
upload_speed = 921600
Дополнительно все тексты экрана можно заменить на русский здесь /firmware/src/graphics/Screen.cpp
. Но хватает и просто поддержки украинского языка в шрифте. Если все-таки решить полностью переложить прошивку, будьте внимательны с количеством символов. Я старался переводить так чтобы количество символов совпадало с английским вариантом. Иногда получаются не очень удобные переводы.
Поддержка украинского языка для T- Echo
EInk дисплей t-echo по умолчанию использует больший шрифт. 19 пикселей вместо стандартных для oled 13. Но официальная прошивка имеет только 13 пиксельный вариант шрифта.
Простой способ (с уменьшением шрифта):
В файле /firmware/src/graphics/Screen.cpp
находим строку #define FONT_SMALL ArialMT_Plain_16
где-то между 105 и 110 строкой. И заменяем на#define FONT_SMALL ArialMT_Plain_10_UA
Также следует добавить флаг сборки -D OLED_UA
в файл./firmware/variants/t-echo/platformio.ini
Пример:
; First prototype eink/nrf52840/sx1262 device
[env:t-echo]
extends = nrf52840_base
board = t-echo
debug_tool = jlink
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
build_flags = ${nrf52840_base.build_flags} -D OLED_UA -Ivariants/t-echo -L "${platformio.libdeps_dir}/${this.__env__}/BSEC2 Software Library/src/cortex-m4/fpv4-sp-d16-hard"
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/t-echo>
lib_deps =
${nrf52840_base.lib_deps}
https://github.com/meshtastic/GxEPD2#afce87a97dda1ac31d8a28dc8fa7c6f55dc96a61
adafruit/Adafruit BusIO@^1.13.2
lewisxhe/PCF8563_Library@^1.0.1
;upload_protocol = fs
Сложный способ (со СОХРАНЕНИЕМ размера шрифта)
Для этого способа нам нужно сменить шрифт на кастомный (я пытался сделать его наиболее красивым). Константа со шрифтом: https://gist.github.com/assada/8ab477d67653690842c2328faeb19a88
Эта константа должна быть изменена в файле /firmware/.pio/libdeps/t-echo/ESP8266 and ESP32 OLED driver for SSD1306 displays/src/OLEDDisplayFonts.cpp
после запуска Platformio: Pick Project Environment выбрать t-echo
. В противном случае этого файла может не быть!
Изменения /firmware/src/graphics/Screen.cpp
мы не делаем. Только добавляем флаг сборки -D OLED_UA
в файл /firmware/variants/t-echo/platformio.ini
(описано выше)
Первоисточник и автор: https://ut3usw.dead.guru/docs/ham/meshtastic/