
В самом базовом случае нода Meshtastic, как и Meshcore, состоит из двух обязательных половинок: LoRa модем и микроконтроллер с WiFi/Bluetooth/USB. А в дополнение к этому могут идти разные опции: антенна, корпус, аккумулятор, управление зарядом и питанием, дисплей. Но обязательны только две платы/модуля: микроконтроллер и LoRa, а в качестве антенны подойдет и кусочек проволоки.
Микроконтроллер
Прошивка Meshtastic работает почти на всем, у чего в названии есть ESP32, NRF52 или RP2040. Если точнее, то:
ESP32-D0WD - самый первый и очень широко распространенный EPS32, скорее всего вы встречали модуль с ним ESP32-WROOM-32 или готовую плату ESP32 Devkit V1
ESP32-S3 - более современный и мощный, сейчас это mainstream для Meshtastic
ESP32-C3 - самый дешевый на сегодня вариант
NRF52840 - энергоэффективный микроконтроллер, но без WiFi, с ним есть прекрасные платы для клавиатур nice!nano, и огромное количество китайских клонов под названием “Pro Micro” (не путать с Arduino)
Мы делаем бомж ноду, так что выбираем что дешевле. Если покупать на маркетплейсах или Али, то дешевле всего будет плата ESP32-C3 SuperMini, сегодня с доставкой из Китая можно найти за цену около 200 руб. NRF52840 Pro Micro будет стоить чуть дороже, рублей 250, и без WiFi, но нода с NRF52 проживет почти в два раза дольше от той же батареи и, что немаловажно, плата уже имеет встроенную микросхему заряда LiPo/LiIon, не нужно будет отдельно колхозить TP4056.
Так что:
ESP32-C3 SuperMini - для стационарной бомж ноды с постоянным питанием от сети и возможностью работы через WiFi
NRF52840 Pro Micro - для носимой бомж ноды с питанием от АКБ и подключением к телефону по Bluetooth
Но у меня был другой путь, у меня уже было несколько ESP32 Devkit V1, поэтому я соберу свою бомж ноду вообще без дополнительных расходов.
LoRa модем
LoRa - это проприетарный протокол от компании Semtech, так что нужен либо ее чип, либо от кого-то, кто сделал чип по лицензии. Обычно на 433 МГц и на 868 Мгц - это два разных чипа. В РФ гораздо больше развиты сети 868 Мгц, так что на них и будем ориентироваться. Какие тут варианты чипов:
SX1276 - это был первый чип, получивший мощное распространение, но он немного устарел
SX1262 - современная версия, чуть мощнее на передачу и более энергоэффективная
LLCC68 - урезанная версия чипа SX1262
Самый простой и правильный вариант - купить модуль Heltec HT-RA62. Цена 300-350 рублей. Это будет модуль для поверхностного монтажа. Паять не очень удобно, но возможно. Зато по соотношению цена/качество - это лучшее, что можно купить сегодня.
Я искал дешевле, время от времени вбивал на Авито в поиске “LoRa”, “SX1276”, “SX1262”, и нашел!

Некое устройство на базе NiceRF LoRa1276. Конечно, любопытство не давало мне покоя, и я пытался выяснить что это такое. Из вводных была маркировка “Softline.com 2018”, и я стал искать, что это за проект такой делал Софтлайн в 2018 году на базе LoRa. Оказалось, это умные каски)
Ссылку на лот прикладывать не буду, не в этом цель материала. Кто захочет - без труда найдёт по ключевым словам и цене.
Прошивка
Очень важно самым первым шагом обязательно прошить микроконтроллер. Убедиться, что все работает, а дальше уже подключать LoRa модем. Причем даже если вы решили ставить Meshcore, все равно желательно сначала прошить Meshtastic. Почему? Потому, что если что-то неправильно подключено, прошивка Meshtastic запустится и будет писать в UART что работает, а что - нет. Meshcore просто не запустится и будет тишина. Проще всего прошиваться через веб флешер. Можно пойти на официальный flasher.meshtastic.org, но официальных прошивок не так много, плюс доступ из РФ… Так же и для Meshcore flasher.meshcore.co.uk, с теми же ограничениями… Но есть решение лучше! mrekin.duckdns.org/flasher! Какие там есть варианты прошивок:
Official repo - прошивки Meshtastic (причем не только официальные)
m1nl - форк прошивки Meshtastic с улучшенным энергосбережением для ESP32
Meshcore - официальные прошивки Meshcore
Meshcore RU - прошивки Meshcore с поддержкой вывода русских символов на дисплей
Выбираем Official, и смотрим какие есть варианты DIY. Более детальная информация об отличии того или иного варианта есть либо здесь либо тут. Я поискал, посмотрел, и для ESP32 Devkit V1 + LoRa1276 выбрал esp32/diy/v1.
На что в этом файле обратить внимание:
OLED LCD - не важен, запустится и без него
GPS - тоже не важно
… и остальная периферия тоже не особо важна
#define LORA_- эти значения задают какой вывод LoRa модема на какой вывод микроконтроллера подключаетсяRF95_RXEN/RF95_TXEN - дополнительные пины для RF95(SX1276)
USE_RF95- если раскомментирован, значит будет работать и SX1276USE_SX1262- аналогично для SX1262
За этот вариант огромное спасибо товарищу @NanoVHF и его проекту Meshtastic-DIY.
Сначала подключаю ESP32 Devkit V1 к USB с зажатой кнопкой BOOT, плата определяется как COM-порт (или tty). Затем выбираю meshtastic-diy-v1, полную прошивку, нужный порт. Ставлю галочку “полная очистка” и шью.

По окончании можно подключиться через терминал USB-UART 115200, посмотреть лог загрузки, увидеть что прошивка не может найти GPS, а также пробует по очереди инициализировать разные LoRa модемы, но ни с одним не получается. Для удобства можно использовать веб терминал. Уже сейчас можно подключиться через мобильное приложение Meshtastic и отключить GPS, чтобы не было мусора в логах.
Подключение LoRa модема
На основе выбранного ранее variant.h, можно составить таблицу подключений. У меня получилось вот так:
Пин LoRa | Пин ESP32 | Назначение |
|---|---|---|
VCC | 3.3V | Питание |
GND | GND | Земля |
SCK | GPIO 18 | SPI |
MISO | GPIO 19 | SPI |
MOSI | GPIO 23 | SPI |
NSS (CS) | GPIO 5 | SPI |
DIO0 | GPIO 26 | Прерывание приема/передачи сообщений |
NRESET | GPIO 14 | Аппаратный сброс, используется для инициализации радиочипа |
ANT | Antenna | Выход на антенну |
DIO1 | Не подключен | |
DIO2 | Не подключен | |
NC | Не подключен |


Достаточно припаять 8 проводов. Ну и “сдуть” STM32 с платы, чтобы он не мешался на линии SPI. Ну а если нет фена, то можно просто и кусачками выкусить)

На плате каски установлен LDO на 2.5В. Для ESP32 этого слишком мало, так что нужно брать 3,3В от ESP32 к SX1276. При этом возле выводов питания LoRa1276 на плате есть россыпь керамических конденсаторов, это очень хорошо скажется на стабильности работы. Кстати, на плате ESP32-C3 SuperMini слишком слабый LDO питания LoRa модема, нужно будет ставить внешний. А на NRF52840 Pro Micro - мощности вполне достаточно.
Выходим в сеть
Последнее и самое главное - антенна! Без антенны не стоит даже подавать питание, есть не нулевой шанс спалить передатчик! Что сделал я? Подключил первый попавшийся кусок провода))

Далее подключаемся через официальное приложение Meshtastic, ищем Телеграм-канал своего города, в нем настройки. Почти для всех городов России будут такие:
Device (Устройство) / Роль устройства: CLIENT_MUTE - это самое важное! Если вы на 100% не уверены, что вам нужно стать ретранслятором для явно известных вам клиентов, то в городах всегда ставьте CLIENT_MUTE
LoRa / Регион: Russia
LoRa / Пресет: Long Range - Fast / Большая дальность - Быстрый
LoRa / Частотный слот: 2
LoRa / Переопределить частоту: 869.075
Дальше рассказываю эту прекрасную историю в общем канале LongFast, делюсь фотками, рассказываю про кусок провода. Проверяю что меня слышно через местного Telegram бота.

Итого: 500 рублей.
250 рублей плата с микроконтроллером + 250 рублей LoRa модуль.
Конечно, это справедливо, если вы радиолюбитель, у вас есть фен, паяльник, флюс, припой, провода, кусачки, пинцет... Теплый ламовый DIY вечер - бесценно!))
Что можно сделать лучше
Нормальная антенна
Вместо куска провода лучше взять две медные проволоки, например от витой пары, лучше без изоляции. Для частоты 869 МГц с учетом коэффициента укорочения будет два куска примерно по 82 мм. Компоненты согласующей цепи антенны лучше “сдуть”, либо перерезать дорожку, затем припаять два куска проволоки на выводы ANT и GND (полигон на обратной стороне), расположить под углом 120 градусов друг относительно друга, и повернуть всю конструкцию вертикально, так как у большинства других нод антенны с вертикальной поляризацией. При правильных длине и угле, это будет практически идеальная антенна с круговой диаграммой направленности. Не практично, зато бесплатно.


Сделать нормальную плату, а не вот эти вот проводочки
На самом деле уже сдеали для соединения NRF52840 Pro Micro и Heltec HT-RA62, называется fakeTec. Я пошел дальше, и заказал разработку вариаций на базе fakeTec v5 под комбинации:
Pro Micro + RA-62 (чуть улучшенный v5)
Pro Micro + NiceRF SX1276
ESP32-C3 SuperMini + RA-62
ESP32-C3 SuperMini + NiceRF SX1276
Подробнее в комментарии на GitHub.
Дизайн еще не протестирован. Платы в пути из Китая. А обычные fakeTec периодически появляются в продаже на Ozon и Авито. Так же можно собраться и сделать групповой заказ плат из Китая. Минимальная партия на pcbwave мне обходилась в 90 рублей за плату.
Сделать что-то на базе исходного устройства без переделки
В этой умной каске стоит STM32L051C8T6 на 64 Kbytes Flash и 8 Kbytes RAM. Для сравнения, прошивка Meshtastic для ESP32 весит 2 Мб, а 520 КБ оперативной памяти едва хватает на 250 NodeInfo и 30 принятых сообщений. Но все же, не без помощи ИИ, удалось кое-что выжать:
Базовый прием Meshtastic пакетов
Ретрансляция пакетов с кольцевым буфером, чтобы не пересылать один и тот же пакет дважды
Расшифровка пакетов основного канала алгоритмом AES
Разбор сообщений чата
Разбор сообщений телеметрии
На этом 64 Кб закончилось) Из проблем написанного кода - полностью синхронная работа в один поток: пока по UART выводится информация об одном пакете, новые не принимаются. Так что логирование лучше отключать.
Проект на GitHub: https://github.com/delfer/meshtastic-kaska/releases/tag/v1.0.0
Я считаю, что это получился крутой пример, и на его базе уже можно делать энергоэффективные датчики с отправкой данных через Meshtastic. По крайней мере сколько я ни искал, ничего подобного не находил. Ну а кто считает, что нужно переделать на DMA или хотя бы прерывания - PRs are welcome!
