Провернул трюк с использованием устройств:
Модуль Heltec T114: https://ali.click/vgda71y?erid=2SDnjeDCaSe
Модуль Heltec Lora32 V3: https://ali.click/mjda71n?erid=2SDnjeZxQPU
В этой статье продолжу разбираться с Reticulum. В прошлой статье ознакомились с ним, и подружили два компьютера под управлением Linux и даже по аналогу ssh подключились друг к другу.
Об этом можно почитать тут:
Моё знакомство с Reticulum. Установка, настройка и использование на примере аналога SSH (RNSH)
В этой же статье я пошёл дальше в изучении протокола Reticulum и освоил сообщения, передачу фотографий, голосовые сообщения и голосовые звонки.
Как и было написано в прошлой статье – Reticulum это протокол, а уже поверх него строятся разные возможности разными приложениями.
К примеру в этой статье, чтоб отправлять сообщения, фото, аудио и звонки делать, будем это делать с помощью приложения sideband.
Sideband – программа месседжер которая может как уже описал выше отправлять сообщения, фотографии, голосовые сообщения и даже можно совершать через неё голосовые звонки.
Программа существует для Windows, Android, Linux и macos.
Программу можно скачать с github: https://github.com/markqvist/Sideband
Я использовал два варианта, один на телефоне, а второй на компьютере под управлением windows. И между этими двумя хостами обменивался сообщениями. Оба приложения по сути одинаковые, имеют одинаковый внешний вид, меню, но настраивают немного по разному, по крайней мере мне так показалось.
Предварительно у Вас должен быть RNode (Reticulum) прошив на Lora модулях. Как это сделать я описывал в этой статье: https://psenyukov.ru/topics/5482
Настройка Sideband на Windows:
Все настройки (частота, канал, адрес Lora модуля и прочего) настраивается в тестовом файле, который лежит по пути: C:\Users\%Username%\.reticulum\config
И в этом файле, настройки такие-же как и в Reticulum на Lunux из прошлой статьи: https://psenyukov.ru/topics/5482
По этому просто в конце файла в блоке [interfaces] прописываем следующее:
[[RNode LoRa Interface]]
type = RNodeInterface
enabled = yes
port = COM5
frequency = 868000000
bandwidth = 250000
txpower = 2
spreadingfactor = 7 # ← Должно быть ЧИСЛО от 7 до 12
codingrate = 5 # ← Должно быть ЧИСЛО от 5 до 8
mode = gateway
allow_overall = yes
Где:
port = COM3 – Это путь порта куда подключена нода reticulum. В диспетчере задач windows можно посмотреть какой номер ком порта получило устройство.
frequency = 868000000 – Это частота на которой модуль будет работать.
bandwidth = 250000 – Это пропускная способность.
txpower = 2 – Это мощность сигнала, если ноды близко на столе лежат как у меня, то пусть будет 2, а так если на дальнее расстояние, то можно 22 поставить.
spreadingfactor = 7 – Это фактор расширения. Влияет на дальность и скорость. Чем выше число (7-12), тем выше дальность, но ниже скорость и наоборот.
codingrate = 5 – Это Скорость кодирования (CR). Добавляет избыточность в пакет для защиты от помех. Может быть от 5 до 8, где 5 — самые быстрые пакеты, а 8 — самые надежные
mode = gateway – Это Режим работы интерфейса. В двухузловой сети это обязательный параметр. gateway заставляет узел активно помогать другим узлам находить пути для связи, обеспечивая маршрутизацию
allow_overall = yes – Это Разрешает передачу данных. Если установить false, интерфейс будет только слушать эфир. По умолчанию (и для вашей задачи) он должен быть включен.
Но мне кажется gateway и allow_overall можно не прописывать.
Далее запускаем приложение и после запуска приложения, по нажатии на кнопку “Announce Sent” должны светодиоды заморгать сигнализируя об отправке сообщения на Lora модуле.

Настройка приложения Android:
Android приложение настраивается немного по другому, так как не понятно где лежит конфигурационный файл.
В приложении Sideband нужно идти в Настройки -> Hardware ->RNode
И тут выставить вот такие настройки:

По сути это те же настойки, что и в приложении на windows, просто мы их тут вписали в самом приложении.
Так-же лучше всего использовать конечно не прямое подключение к Смартфону вашего Lora устройства по проводу, а Bluetooth. Но что-б настроить соединение по Bluetooth, всеравно нужно один раз подключить Lora модуль по type-c проводу к смартфону, чтоб как минимум на Lora модуле включить режим Bluetooth сопряжения.
По этому в этом же меню Настройки -> Hardware ->RNode скролим ниже и делаем сопряжение.
Для начала в самом низу нужно нажать кнопку Start paring – чтоб приказать Lora модулю начать сопряжение.

После нажатия этой кнопки, на дисплее Lora модуля появится код, который нужно вбить при сопряжении по Bluetooth на смартфоне:

Дисплей Oled и сумерки, тяжело было запечатлить код, но думаю увидели.
Далее запоминаем этот код и в том же меню приложения sideband по середине нажимаем кнопку Bluetooth Paring:

Находим по Bluetooth Вашу RNode плату у неё такое и должно быть Bluetooth имя, еще уникальных 4 символа после RNode, после этого вбиваем пароль для сопряжения и Bluetooth сопряжение пройдёт успешно.
Так-же не забываем поставить 2 ползунка:
Connect using Bluetooth
Device requires BLE
Настройки почти закончены. Теперь осталось зайти в Настройки -> Connectivity и тут найти Connect via RNode и включить этот ползунок.

Далее, чтоб все настройки сохранились, нужно выйти из приложения выбрав Настройки-> Shutdown и потом заново запустить приложение sideband. Таким образом произойдёт коннект приложения по Bluetooth к нашему Lora устройству.

Общение между Устройствами по приложению Sideband:
После того как мы настроили хотя бы 2 устройства, можно начать через них общаться.
Но нам нужно найти друг друга. Чтоб это сделать, нужно на главном экране опять нажать кнопку “Announce Sent” и тогда Lora модуль отправит широковещательный пакет с информацией о себе и второе устройство его подхватит.

После нажатия этой кнопки, на втором приложении нужно зайти в Настройки -> Announce Stream и там появится новое устройство, на которое можно нажать и мы сможем ему написать:

Точно так-же нужно проделать и на втором устройстве. Нажать кнопку “Announce Sent” и собственно появится второе устройство у первого в Настройки -> Announce Stream. И с второй ноды тоже нужно написать. По итогу когда напишут обе ноды друг другу, они обменяются ключами шифрования и смогут писать друг другу.
И тут уже в поле месседжера можно обмениваться как тестовыми сообщениями:

Так и отправлять фотографии, причем любого качества. Приложение само его будет сжимать, если выбрать плохое качество, но можно и прям в отличном качестве отправлять. Оно тогда отправляться будет дольше, но тоже дойдёт.

Отправляется сообщение со скоростью от 7 kbps до 41 kbps. По этому сообщение с фотографией в хорошем качестве, у меня секунд 30 отправляется. Может больше, но по ощущениям так.
Во время отправки пишет скорость передачи:

Так-же еще можно отправить голосовое сообщение, которое сначала надиктовывается, а потом отправляется. Качество при таком методе вполне себе хорошее и можно голосом общаться без проблем:

Голосовые вызовы в Reticulum через Sideband:
Помимо голосовых сообщений, тут можно полноценно позвонить по Lora с одного клиента на другой.
Для этого нужно разрешить голосовые вызовы. Они включаются в Настройках->Preferences и тут найти нужно внизу пункт “Enable voice calls” и включить этот ползунок.

Это нужно сделать на обоих устройствах.
После этого на главном экране на появившемся клиенте, с кем мы уже переписывались, нажать на три точки и там выбрать пункт call.

Там появится меню вызова, с которым можно немного поиграться.

Тут ULBW – это качество голосового вызова. Нажимая на неё он о меняется. Есть хорошее качество, есть плохое. У меня на хорошем качестве все квакало, понизил качество, стало можно разговаривать. С искажением голоса конечно, но разговаривать можно было.
Ну и нажимаем Call кнопку и звонок поступит на вторую ноду, с которой эту трубку можно снять и начать общаться.
Вывод:
Конечно Reticulum мне порвал шаблон вообще. Он даёт столько возможностей… И аналог SSH (RNSH) соединения и фотографии и голосовые вызовы даже. Это просто нечто.
Да, он сильно забивает Lora сеть, по этому если что-то еще у Вас на lora вещает, при отправке фото или голоса, боюсь оно оглушится.
Ещеб как-то приделать, чтоб фото с камеры по нему передавалось. Но не уверен, что так можно. Будем изучать…