📱 Подписаться
IT и цифровая трансформация

Бомж нода Meshtastic за 500 рублей

📰 Habr 👁️ 3 просмотров

delfer11 часов назад

Бомж нода Meshtastic за 500 рублей

Уровень сложностиСреднийВремя на прочтение6 минОхват и читатели16KMesh-сети*DIY или Сделай самТуториалГотовая бомж нодаВ самом базовом случае нода 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”, и нашел!

Устройство с Авито на базе LoRa1276Некое устройство на базе 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 - если раскомментирован, значит будет работать и SX1276
• USE_SX1262 - аналогично для SX1262За этот вариант огромное спасибо товарищу @NanoVHF и его проекту Meshtastic-DIY.

Сначала подключаю ESP32 Devkit V1 к USB с зажатой кнопкой BOOT, плата определяется как COM-порт (или tty). Затем выбираю meshtastic-diy-v1, полную прошивку, нужный порт. Ставлю галочку “полная очистка” и шью.

Прошивка через mrekin flasherПо окончании можно подключиться через терминал USB-UART 115200, посмотреть лог загрузки, увидеть что прошивка не может найти GPS, а также пробует по очереди инициализировать разные LoRa модемы, но ни с одним не получается. Для удобства можно использовать веб терминал. Уже сейчас можно подключиться через мобильное приложение Meshtastic и отключить GPS, чтобы не было мусора в логах.

Подключение LoRa модема

На основе выбранного ранее variant.h, можно составить таблицу подключений. У меня получилось вот так:

Пин LoRaПин ESP32НазначениеVCC3.3VПитаниеGNDGNDЗемляSCKGPIO 18SPIMISOGPIO 19SPIMOSIGPIO 23SPINSS (CS)GPIO 5SPIDIO0GPIO 26Прерывание приема/передачи сообщенийNRESETGPIO 14Аппаратный сброс, используется для инициализации радиочипаANTAntennaВыход на антеннуDIO1Не подключенDIO2Не подключенNCНе подключенКартинка из интернета где какие пины у ESP32 Devkit V1Картинка из объявления где какие пины у LoRa модуляДостаточно припаять 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 градусов друг относительно друга, и повернуть всю конструкцию вертикально, так как у большинства других нод антенны с вертикальной поляризацией. При правильных длине и угле, это будет практически идеальная антенна с круговой диаграммой направленности. Не практично, зато бесплатно.

Диполь с углом раскрыва 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!

Прием и расшифровка сообщений MeshtasticТеги:• meshtastic
• meshcore
• esp32
• loraХабы:• Mesh-сети
• DIY или Сделай сам

Получайте больше инсайтов о систематизации бизнеса

Подписывайтесь на Telegram-канал Business Operations — ежедневные материалы о бизнес-процессах, операционном управлении и повышении эффективности

💬 Подписаться на канал