Meshtastic обеспечивает обмен текстовыми сообщениями, обмен данными о местоположении и телеметрию по децентрализованной ячеистой сети, что делает его идеальным решением для активного отдыха, готовности к чрезвычайным ситуациям и удаленных операций
Сборка прошивки Meshtastic
Meshtastic использует PlatformIO — среду разработки, которая обеспечивает простую многоплатформенную разработку и централизованный инструментарий.
Настройка
- Установить PlatformIO
- Клонируйте репозиторий прошивки Meshtastic
git clone https://github.com/meshtastic/firmware.gitЭтот репозиторий содержит официальную прошивку для Meshtastic, проекта с открытым исходным кодом для ячеистой сети LoRa, предназначенной для связи на большие расстояния с низким энергопотреблением без использования интернета или сотовой инфраструктуры. Прошивка поддерживает различные аппаратные платформы, включая ESP32, nRF52, RP2040/RP2350 и устройства на базе Linux.
- Обновить подмодули репозитория
cd firmware && git submodule update --init - информация
- Если вы хотите собрать целевые платформы RP2040 и получаете ошибку «Имя файла слишком длинное» в Windows, обратитесь к документации Platformio по этой цепочке инструментов.
Обновите среду
- Изменить на firmwareпапку
cd firmware - Соберите последние изменения в репозитории прошивки Meshtastic и подмодулях.
git pull --recurse-submodules
- Откройте клонированную папку в Visual Studio Code . Если вы делаете это впервые, это может занять довольно много времени, так как PlatformIO загрузит все необходимые инструменты и библиотеки. Кроме того, если platformio не установлен, VSCode предложит вам установить его, что, возможно, потребует перезапуска программы.
- Чтобы выбрать устройство, которое вы хотите построить, откройте палитру команд :
- Окна:Ctrl + Shift + P
- Мак:command + Shift + P
- Введите: PlatformIO: Pick Project Environmentи выберите цель.
- Чтобы собрать прошивку, просто запустите PlatformIO: Buildее из палитры команд.
- Наконец, обновите прошивку на вашем устройстве, выполнив командуPlatformIO: Upload
Добавление пользовательского
Система сборки модульная. Добавление нового варианта платы для уже поддерживаемой архитектуры не вызывает никаких сложностей.
Сборка с использованием специального оборудования
- Перейдите в папку
variantsс исходным кодом прошивки и создайте новый каталог для вашего оборудования, назовем его m5stack_atom, и скопируйте существующую конфигурацию, которую вы хотите изменить:
cd variants; mkdir m5stack_atom
cp heltec_v1/* m5stack_atom
cd m5stack_atom
- Измените platformio.ini в этом подкаталоге каноническое определение варианта оборудования ( HELTEC_V1в данном случае) на PRIVATE_HWи укажите -Iна build_flagsвновь созданный каталог.
[env:m5stack-atom]
extends = esp32_base
board = m5stack-atom
monitor_filters = esp32_exception_decoder
build_flags =
${esp32_base.build_flags} -D PRIVATE_HW -I variants/m5stack_atom
lib_deps =
${esp32_base.lib_deps}
- Отредактируйте variant.hфайл в этом подкаталоге, чтобы он соответствовал настройкам и параметрам вашей платы. Пример очень подробно прокомментирован.
- Создавайте, запускайте и отлаживайте, пока не будете удовлетворены результатом.
Политика принятия моделей оборудования
В связи с ограниченной доступностью и текущей поддержкой новые номера моделей оборудования будут добавлены только для спонсоров и партнёров Meshtastic. Команда Meshtastic оставляет за собой право делать исключения из этой политики при необходимости. Если вы хотите получить официальную поддержку своего оборудования, свяжитесь с Meshtastic Solutions .
Альтернатива для участников
Поддерживаемое сообществом оборудование по-прежнему приветствуется, и участники сообщества по-прежнему могут добавлять самостоятельно изготовленное оборудование. Однако обратите внимание:
- При изготовлении оборудования своими руками следует использовать PRIVATE_HWномер модели.
- DIY-аппаратура не будет официально поддерживаться основной командой Meshtastic и будет обозначаться как Community Supported.
- Самодельное оборудование не будет отображаться в ресурсах релиза Web Flasher или GitHub.
- Вы будете отвечать за текущее обслуживание и поддержку.
- Модели самодельного оборудования являются экспериментальными и, скорее всего, будут проходить ограниченное тестирование или вообще не будут проходить его.
Руководство по локализации OLED
Обзор этапов
Это руководство содержит инструкции по локализации OLED-дисплея путем создания пользовательских шрифтов, обновления соответствующих файлов кода и определения языковых настроек. Процесс локализации включает следующие этапы:
1. Создайте расширенный пользовательский
Используйте редактор глифов для создания нового файла шрифта. Проще всего воспользоваться онлайн- редактором глифов из библиотеки OLED ( исходный код редактора глифов ).
- Скопируйте и вставьте существующий шрифт.
- Измените его в соответствии с желаемой кодовой страницей и сохраните новый файл шрифта в graphics/fontпапке.
Примечание: Формат файла шрифта отличается от общепринятого формата Adafruit GFX.
2. Обновите customFontTableLookupфункцию Screen.h
- Сопоставьте двухбайтовый код UTF-8 с соответствующим расширенным символом ASCII нужной кодовой страницы, обновив customFontTableLookupфункцию в Screen.hфайле.
- Измените switch (last)оператор: используйте левый байт кода UTF-8 в caseметке, чтобы сопоставить правый байт символа с его расширенным кодом ASCII, указав смещение.
3. Определите язык и шрифт Screen.cpp
Добавьте определения шрифтов для конкретного языка, используя условную компиляцию:
#ifdef OLED_{LANG_NAME}
#include "fonts/OLEDDisplayFonts{LANG_NAME}.h"
#endif
...
#ifdef OLED_{LANG_NAME}
#define FONT_SMALL ArialMT_Plain_10_{LANG_NAME}
#else
#define FONT_SMALL ArialMT_Plain_10
#endif
4. Настройте
Основной метод: определить variant/*/platformio.ini
Настройки языка можно определить в platformio.iniфайле в соответствующем каталоге вариантов:
build_flags =
${esp32_base.build_flags}
-D xxxxx
-D OLED_{LANG_NAME}
-I variants/xxxxx
Альтернатива: Определить userPrefs.h
В качестве альтернативы изменению platformio.iniязык можно определить в userPrefs.h.
#define OLED_{LANG_NAME}
Оба метода дают одинаковый результат, и выбор зависит от особенностей конкретного проекта.
Номера портов Meshtastic
Любое новое приложение, работающее на устройстве или через родственные приложения на телефонах/ПК, должно выбрать и использовать уникальный «portnum» для своего приложения.
Текущий список номеров портов можно найти в файле protobufs.
PortNums следует назначать по следующим диапазонам:
| Портнум | Использование |
|---|---|
| 0-63 | Используйте Core Meshtastic, не используйте для сторонних приложений. |
| 64-127 | Зарегистрированные сторонние приложения, отправьте запрос на извлечение, который добавляет новую запись в portnums.proto для регистрации вашего приложения. |
| 256-511 | Используйте один из этих номеров портов для ваших личных приложений, которые вы не хотите регистрировать публично. |
Все остальные значения зарезервированы.
Если вы создаете новое приложение с использованием Meshtastic, отправьте запрос на добавление выбранного вами «portnum» в эту основную таблицу.
Stacktraces
Декодирование трассировок стека
Вы можете столкнуться с ситуацией, когда ваше устройство выходит из строя и остается след стека. Ниже приведены два метода его расшифровки.
Этот метод использует символы файла, firmware.elfсгенерированные из вашей последней сборки. Возможно, вы захотите выполнить повторную сборку, чтобы получить актуальные символы.
- Сохраните строку обратной трассировки в текстовый файл:
-
обратная трассировка.txt
Backtrace: 0x.... - Запустите декодер исключений:
bin/exception_decoder.py backtrace.txt
В реальном времени
Чтобы декодировать трассировки стека в режиме реального времени, оставьте следующую команду (заменив DEVICE_PORTпортом вашего устройства) запущенной в терминале с подключенным целевым устройством:
pio device monitor --port DEVICE_PORT -f esp32_exception_decoder