Власний вузол мережі Meshtastic!
Опубліковано 24.08.2024, 15:12 в категорії YouTube
Хочу показати вам процес створення власного вузла мережі Meshtastic.
Хто не знав - Meshtastic - це OpenSource проєкт, це автономна децентралізована Mesh мережа, яка дозволяє людям спілкуватись між собою, навіть коли інші засоби зв'язку недоступні - будь то інтернет, мобільна мережа, або навіть супутниковий зв'язок. Це досягається за рахунок того, що кожний пристріий працює як радіо вузол-ретранслятор. Тобто наприклад якщо Ви в своєму місті зібрали цей пристрій, вузол, і незалежно від Вас його зібрав хтось ще, пристрої все одно з'єднаються, і створять свою меш мережу, або стануть частиною вже існуючої. Маючи велику кількість вузлів, можна покрити доволі велику площадь, і спілкуватись на дуже дальні відстані.
Варіантів використання такої мережі безліч - від зв'язку в горах, де часто з проблеми з мобільною мережею, до спілкування під час зомбі апокаліпсису, коли мобільної мережі не буде зовсім :D
В обох випадках звісно можна обійтись і звичайними раціями, благо купити зараз якийсь Baofeng UV-5R чи Quansheng UV-K5(8) це взагалі не проблема. Але в них, як і в Mesh мереж, є свої сильні та слабкі сторони. Та і тим паче якщо є альтернативи, то чому б їх не розглянути.
Можна купити готові пристрої, або купити певні девборди, на які достатньо буде лише залити прошивку, і можна радіти готовому пристрою, але коштують вони немало, тому в даній статті я пропоную розглянути, як можна зібрати цей вузол з окремих модулів, тим самим зекономити грошей ще й підтягнути свої скіли в мікроелектроніці.
Компоненти
Сам вузол складається з двох основних модулів, та двох опціональних.
До основних відносяться мікроконтролер, та радіо модуль. В моєму випадку це девборд ESP32. Коштує такий в наших магазинах приблизно 200-300 гривень. В якості радіо модуля буде LoRA Ra-01 модуль на частоти 410-525 МГц. Придбав я такий за 160 грн. Варто зазначити, що є ще версії модулів на частоти ~800-900 МГц, нам такі модулі не підходять, так як в Україні під LoRA виділені частоти саме на 70 см діапазоні, тобто 433 МГц.
До опціональних відносяться - I2C OLED дисплей SSD1306, а також GPS модуль GY-GPS6MV2. Ними можна знехтувати для здешевлення проєкту. Дисплей потрібен для відображення різного роду інформації, а також pin коду для з'єднання по Bluetooth, але цей pin код можна отримати і іншим шляхом, тому дисплей не є обов'язковим, до того ж за замовчуванням pin код становить 123456. Коштують вони в нас не дуже дорого, приблизно 100 грн.
GPS модуль в свою чергу потрібен для того, щоб вузол міг транслювати свої координати. Це може знадобитись наприклад для того щоб побудувати точну мапу вузлів, та приблизно оцінити зону покриття. Або наприклад якщо Ви носите вузол з собою, і хочете щоб інші учасники мережі знали ваше місцезнаходження. Найдешевший GPS модуль з антеною у нас коштує від 150 до 200 грн.
По ітогу ми отримуємо комплект, який хоч і має GPS модуль, але при цьому коштує дешевше ніж готові девборди які мають його не мають. Хоча в рамках даної статті я знехтую GPS модулем, і буду збирати вузол без нього, але там все дуже легко - треба всього лише під'єднати живлення та URAT до мікроконтролеру.
Прошивка мікроконтролера
Тепер про прошивку мікроконтролеру. Ви можете скористатись онлайн прошивальщиком - оберіть версію плати DIY, оберіть версію прошивки, підключіть мікроконтролер, та прошивайте. Або Ви можете скомпілювати прошивку власноруч. Для цього знадобиться середа розробки Visual Studio Code, а також extension під назвою PlatformIO. До речі дуже потужна штука, якщо Ви працюєте з мікроконтролерами, будь то Arduino/AVR, ESP8266/ESP32, або навіть STM32/STM8 - раджу придивитись.
Окрім цього, нам потрібно знайти гіт репозиторій проєкту, і клонувати його собі, або скачати якщо у Вас немає git-у.
git clone https://github.com/meshtastic/firmware
Після цього, скачаний або клонований гіт репозиторій можна відкрити як проєкт у PlatformIO. Завдяки тому що проєкт дуже грамотно написаний, нам достатньо всього лише відредагувати основний файл - platformio.ini
, і розкоментувати там необхідну для нас плату. Або замінити змінну default_envs на потрібну, так як в останніх версіях коду чомусь прибрали коментарі. Так як ми робимо все самі, з окремих модулів, обираємо meshtastic-diy-v1.
default_envs = meshtastic-diy-v1
I все, можна натиснути на галочку, Build, щоб скомпілювати проєкт. Це може зайняти певний час, особливо якщо Ви робите це вперше, так як PlatformIO буде підвантажувати залежності і інші необхідні для роботи штуки.
Якщо прошивка вдало скомпілювалась, можна завантажити її у мікроконтролер. Підключаємо мікроконтролер до комп'ютеру, і натискаємо на стрілочку Upload, і чекаємо.
Тепер саме час розібратись що і куди підключати. За вказаним шляхом firmware/variants/diy/v1/
можна знайти файлик variant.h
, в ньому детально розписано що і до яких пінів треба підключити, наприклад піни підключення OLED дисплейчика:
// For OLED LCD
#define I2C_SDA 21
#define I2C_SCL 22
Або GPS модуля:
// GPS
#define GPS_RX_PIN 12
#define GPS_TX_PIN 15
І так далі.
Стосовно радіомодуля, його я припаяв на плату-перехідник для ESP-12. Так вже вийшло що в них однаковий корпус, тому можна використати цю платку. Коштує вона всього гривень 15, але в свою чергу суттєво облегшує використання модуля, хоч і збільшує його розміри, але для мене це не суттєво. З плати були прибрані резистори, а також була перерізана доріжка де колись був RESET, так як тепер там буде антена, і зайві з'єднання там ні до чого. Після пайки плата була почищена від залишків флюсу, і тепер вона готова до використання!
Достатньо просто з'єднати все як написано в файлі variant.h
, і вузол готовий. Я зробив це на двох бредбордах купою дротів. Що в плати перехідника, що в девборда ESP32 розміри дуже незручні для макетування на бредборді, тому довелось використовувати два бредборди.
Тепер достатньо підключитись по Bluetooth до нашого вузла за допомогою офіційного додатку, провести мінімальні налаштування - ввести ім'я вузла, а також обрати регіон EU_433, і все!
Також треба в додатку відсканувати ось цей QR код, щоб вам додався зашифрований канал всеукраїнської мережі:
До речі подивитись пін код можна через UART мікроконтролеру. Наприклад через програму screen, або picocom на Linux. Під час підключення нового пристрою, мікроконтролер по UART покаже pin код. Але скоріше за все у Вас він буде дефолтний - 123456.
Приклад використання screen:
screen /dev/ttyUSB0 115200
Приклад використання picocom:
picocom /dev/ttyUSB0 --baud 115200
/dev/ttyUSB0
- в даному випадку це пристрій, під яким підключився Ваш Meshtastic вузол. Можна подивитись, якщо до підключення вузла ввести наступну команду:
sudo dmesg -v
115200
- стандартна швидкість передачі даних, так званий Baud Rate
Щож, наш вузол готовий, і на цьому в мене все. У Вас мабуть виникає питання - а як же тести? А от не буде тестів :D
Як виявилось поруч зі мною немає вузлів, з якими можна було б з'єднатись.
Але якщо Ви з якогось великого міста, то скоріше за все Ви зможете до когось дотягнутись. Можете скористатись онлайн мапою, де відображаються активні вузли. Але на ній відображаються не всі вузли, так як щоб вузол на ній відображався, потрібен інтернет, та додаткові налаштування (MQTT).
В цілому, це дуже цікавий та продуманий проєкт. Все доволі легко налаштовується, є можливість підключити акумулятор щоб зробити автономний вузол. При цьому навіть можна через резистивний дільник підключити його до мікроконтролеру, щоб він розумів процент заряду, і навіть передавав його в мережу, щоб розряд акумулятора не став для Вас сюрпризом.
Тож збирайте власний вузол, та приєднуйтесь до Української Mesh Мережі!
Post Scriptum
Це текстова версія мого першого відео. Саме відео, з цим же текстом, але і відповідним відеорядом, можна переглянути на моєму YouTube каналі, за ось цим посиланням.
Пізніше я таки зібрав ще один вузол, і навіть трішки потестував їх, але на дальні відстані потестувати їх мені так і не вдалось, бо в прифронтовому селищі мене не так зрозуміють, якщо буду з цією штуковиною ходити.