MeshCore — это лёгкая, портативная библиотека на C++, которая обеспечивает многоканальную маршрутизацию пакетов для встраиваемых проектов с использованием LoRa и других пакетных радиомодулей. Она создана для разработчиков, которые хотят создавать устойчивые децентрализованные сети связи, работающие без доступа к интернету.
Сейчас MeshCore поддерживает ряд устройств LoRa, что позволяет легко прошивать их без необходимости вручную компилировать прошивку. Пользователи могут загрузить предварительно собранный бинарный файл с помощью таких инструментов, как Adafruit ESPTool, и взаимодействовать с сетью через последовательную консоль. MeshCore даёт возможность создавать беспроводные ячеистые сети — аналогично Meshtastic и Reticulum, но с упором на лёгковесную многоканальную маршрутизацию пакетов для встраиваемых проектов. В отличие от Meshtastic, который предназначен для простой LoRa‑связи, или Reticulum с его расширенными сетевыми возможностями, MeshCore сочетает простоту с масштабируемостью, что делает его идеальным решением для кастомных встраиваемых систем, где устройства (узлы) могут обмениваться данными на больших расстояниях, передавая сообщения через промежуточные узлы. Это особенно полезно в условиях отсутствия сети, при чрезвычайных ситуациях или в тактических сценариях, когда традиционная инфраструктура связи недоступна.
- Многоканальная маршрутизация пакетов:
- Устройства могут пересылать сообщения через несколько узлов, расширяя зону покрытия за пределы дальности действия одного радиомодуля.
- Поддерживается настраиваемое количество переходов (hops) для баланса эффективности сети и предотвращения избыточного трафика.
- Узлы имеют фиксированные роли: узлы типа «Companion» вообще не ретранслируют сообщения, чтобы исключить использование некорректных маршрутов.
- Поддержка LoRa‑радиомодулей — работает с устройствами Heltec, RAK Wireless и другим оборудованием на базе LoRa.
- Децентрализация и устойчивость — не требуется центральный сервер или интернет; сеть самовосстанавливается.
- Низкое энергопотребление — идеально подходит для устройств с батарейным или солнечным питанием.
- Простота развёртывания — готовые примеры приложений облегчают начало работы.
- Связь вне сети (off‑grid): оставайтесь на связи даже в удалённых районах.
- Реагирование на чрезвычайные ситуации и ликвидация последствий катастроф: создавайте мгновенные сети там, где инфраструктура вышла из строя.
- Активный отдых: связь во время пеших походов, кемпинга и приключенческих гонок.
- Тактические и охранные приложения: использование в военных целях, правоохранительных органах и частной охране.
- Интернет вещей и сенсорные сети: сбор данных с удалённых датчиков и передача их в центральное место.
- Посмотрите видео‑введение в MeshCore от Энди Кирби.
- Ознакомьтесь с разделом Часто задаваемые вопросы.
- Прошейте прошивку MeshCore на поддерживаемое устройство.
- Подключитесь к поддерживаемому клиенту.
Для разработчиков:
- Установите PlatformIO в Visual Studio Code.
- Скопируйте и откройте репозиторий MeshCore в Visual Studio Code.
- Ознакомьтесь с примерами приложений, которые можно модифицировать и запускать:
- Companion Radio — для использования с внешним чат‑приложением через BLE, USB или WiFi.
- KISS Modem — мост для последовательного протокола KISS для хост‑приложений (документация по протоколу).
- Simple Repeater — расширяет зону покрытия сети путём ретрансляции сообщений.
- Simple Room Server — простой BBS‑сервер для обмена сообщениями.
- Simple Secure Chat — защищённая текстовая связь между устройствами через терминал.
- Simple Sensor — удалённый сенсорный узел с телеметрией и оповещениями.
С примером Simple Secure Chat можно взаимодействовать через Serial Monitor в Visual Studio Code или с помощью Serial USB Terminal на Android.
У нас есть предварительно собранная прошивка, готовая к прошивке на поддерживаемые устройства:
- Запустите https://flasher.meshcore.co.uk.
- Выберите поддерживаемое устройство.
- Прошейте один из типов прошивки:
- Companion, Repeater или Room Server.
- После завершения прошивки вы можете подключиться к одному из клиентов MeshCore, перечисленных ниже.
Прошивка Companion
К прошивке Companion можно подключиться через BLE, USB или WiFi — в зависимости от типа прошивки, которую вы загрузили:
- Веб: https://app.meshcore.nz
- Android: https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android
- iOS: https://apps.apple.com/us/app/meshcore/id6742354151?platform=iphone
- NodeJS: https://github.com/liamcottle/meshcore.js
- Python: https://github.com/fdlamotte/meshcore-cli
Прошивка Repeater и Room Server
Прошивка Repeater и Room Server настраивается через USB в веб‑инструменте конфигурации:
Их также можно управлять через LoRa в мобильном приложении с помощью функции удалённого управления.
MeshCore разработан для устройств, перечисленных в прошивальщике MeshCore.
MeshCore — это программное обеспечение с открытым исходным кодом, выпущенное под лицензией MIT. Вы можете свободно использовать, модифицировать и распространять его для личных и коммерческих проектов.
Пожалуйста, отправляйте запросы на включение (PR) с использованием ветки dev в качестве базовой!
Для незначительных изменений просто отправьте свой PR, и мы постараемся его рассмотреть. Но для более «значимых» изменений сначала откройте задачу (Issue) и начните обсуждение. Лучше сначала прояснить, чего вы хотите достичь, и попытаться прийти к консенсусу относительно наилучшего подхода, особенно если это затрагивает структуру или архитектуру кодовой базы.
Вот несколько общих принципов, которых следует придерживаться:
- Сохраняйте простоту. Пожалуйста, не думайте как программист высокоуровневого языка. Думайте в терминах встраиваемых систем и пишите лаконичный код без лишних уровней абстракции.
- Не используйте динамическое выделение памяти, за исключением функций настройки/инициализации.
- Используйте тот же стиль расстановки скобок и отступов, что и в основных модулях исходного кода (скоро, вероятно, будет добавлен файл
.clang-format, но, пожалуйста, НЕ переформатируйте существующий код задним числом — это создаёт ненужные различия, затрудняющие поиск проблем).
Помогите нам расставить приоритеты! Пожалуйста, ставьте реакцию «палец вверх» на задачи/PR, которые для вас наиболее важны. Мы учитываем количество реакций при планировании работы.
В разработке находится ряд довольно крупных функций, пока без конкретных сроков. В очень приблизительном хронологическом порядке:
- Companion radio: редизайн пользовательского интерфейса.
- Repeater + Room Server: добавить ACL (как у сенсорного узла).
- Стандартизировать режим моста для ретрансляторов.
- Repeater/Bridge: стандартизировать коды транспорта для зонирования/фильтрации.
- Core + Repeater: улучшенное обнаружение соседей с нулевым переходом.
- Core: поддержка ручного маршрута с возвратом.
- Companion + Apps: поддержка нескольких подсетей (и режима повтора клиента вне сети).
- Core + Apps: поддержка сжатия сообщений LZW.
- Core: динамический CR (коэффициент кодирования) для слабых и сильных переходов.
- Core: новая платформа для размещения нескольких виртуальных узлов на одном физическом устройстве.
- Спецификация протокола V2: обсуждение и достижение консенсуса по протоколу пакетов V2, включая хэши путей, новые спецификации шифрования и т. д.
- Сообщайте об ошибках и запрашивайте новые функции на странице Issues в GitHub.
- Найдите дополнительные руководства и компоненты на сайте.
- Присоединяйтесь к сообществу MeshCore в Discord, чтобы пообщаться с разработчиками и получить помощь от сообщества.