Как собрать и настроить узел
Протокол, выбор платы, питание, каналы и приватные группы, методика замера дальности.
Всё, что нужно, чтобы поднять свою сеть и понимать, что именно она делает.
Как устроен пакет EFIRNET/1
ЭФИРНЕТ не использует ни LoRaWAN, ни Meshtastic. Формат кадра, шифрование и правила ретрансляции написаны с нуля, и вот что именно летит в эфире.
Кадр состоит из открытого заголовка в 16 байт, полезной нагрузки до 200 байт и контрольной суммы CRC16 в конце. Максимум — 218 байт.
Почему заголовок открытый
Шифруется только полезная нагрузка. Если зашифровать заголовок, промежуточный узел не сможет прочитать номер канала и счётчик пересылок — а значит, не сможет решить, передавать сообщение дальше или нет. Ретрансляция умрёт, и сеть распадётся на пары устройств в прямой видимости. Это осознанный размен: содержимое скрыто, факт передачи — нет.
Как сообщение идёт по сети
Узел принял кадр, проверил контрольную сумму и посмотрел, не видел ли он уже эту пару «отправитель + номер сообщения». Если видел — молча выбросил. Если нет — запомнил, показал владельцу (когда канал свой) и передал дальше, уменьшив счётчик пересылок на единицу. Перед передачей узел ждёт случайные 50–400 мс: без этой паузы все соседи, услышавшие сообщение одновременно, заговорили бы хором и заглушили друг друга.
Приватные группы
Группы не занимают номера каналов. Весь групповой трафик идёт по служебному каналу 26, а 32-битный адрес группы кладётся в поле получателя. Поэтому групп может быть сколько угодно, и две незнакомые компании никогда не окажутся в одном «канале» случайно.
Поля заголовка
| magic (1 байт) | 0xE7 — метка сети, отсекает чужой трафик |
|---|---|
| версия и тип (1 байт) | текст, координата, тревога, маяк, подтверждение… |
| канал (1 байт) | 0 служебный, 1–25 тематические, 26 приватные группы |
| TTL и флаги (1 байт) | 3 бита счётчик пересылок + 5 бит флагов |
| отправитель (4 байта) | идентификатор узла, выводится из MAC |
| получатель (4 байта) | узел, адрес группы или широковещательный |
| номер сообщения (2 байта) | вместе с отправителем даёт защиту от повторов |
| длина и хопы (2 байта) | размер нагрузки и сколько пересылок уже прошло |
| нагрузка (0–200 байт) | текст, координата или телеметрия; шифруется AES-128-CTR |
| CRC16 (2 байта) | CCITT по всему кадру |
Протокол: частые вопросы
Сколько занимает координата?
Как выводится ключ канала или группы?
Почему AES-CTR, а не CBC?
Что мешает повторить чужой перехваченный пакет?
Сколько узлов выдержит сеть?
Какой модуль чрезвычайной связи собрать
Модуль чрезвычайной связи — это плата с чипом LoRa, антенной и прошивкой ЭФИРНЕТ. Прошивка одна на все поддерживаемые модели, различается только выбранное окружение сборки. На что реально смотреть при покупке:
Чип радио
SX1262 экономичнее и чувствительнее SX1276 примерно на 2–3 дБ, и это заметная разница на пределе дальности. SX1268 — тот же SX1262, но на 433 МГц. Все три работают одинаково с точки зрения протокола.
Экран
Не обязателен: весь интерфейс живёт в телефоне. Но плата с экраном сразу показывает канал, заряд, уровень сигнала и последнее сообщение — при отладке сети это экономит часы.
Объём флеша
4 МБ достаточно, 8 МБ дают запас: прошивка занимает 1.2 МБ, а обновление по воздуху требует двух слотов сразу.
Антенна — важнее платы
Никогда не включайте передачу без антенны: отражённая мощность выжигает выходной каскад. Штатный «хвостик» из комплекта работает, но простой четвертьволновый штырь (для 868 МГц это 8.2 см жилы плюс противовесы) обычно даёт больше. Разъём должен совпадать по типу: у большинства плат это IPEX/U.FL или SMA, и переходники здесь стоят потерь.
Модели модулей чрезвычайной связи
| Модуль чрезвычайной связи · Heltec WiFi LoRa 32 V3 | ESP32-S3 + SX1262, экран, батарея, 8 МБ — базовая модель |
|---|---|
| Модуль чрезвычайной связи · Heltec WiFi LoRa 32 V4 | младшая V4: то же, но без PSRAM; усилитель бывает двух разных микросхем, прошивка определяет его сама при включении |
| Модуль чрезвычайной связи · Heltec WiFi LoRa 32 V4 (R8) | ESP32-S3 + SX1262 с выходным усилителем, экран, батарея, 16 МБ; мощность занижена, чтобы на антенне остались законные 25 мВт |
| Модуль чрезвычайной связи · Heltec Wireless Stick Lite V3 | то же без экрана, компактнее и дешевле |
| Модуль чрезвычайной связи · Heltec WiFi LoRa 32 V2 | ESP32 + SX1276, экран, батарея, 8 МБ |
| Модуль чрезвычайной связи · LilyGO T3-S3 | ESP32-S3 + SX1262, экран, батарея |
| Модуль чрезвычайной связи · TTGO LoRa32 V1 / V2.1 | ESP32 + SX1276, 4 МБ; у V1 нет измерения батареи |
| Модуль чрезвычайной связи · LilyGO T-Beam v1.1 | ESP32 + SX1276, питание через контроллер AXP192, есть GPS |
| Модуль чрезвычайной связи · самосбор | любой ESP32/ESP32-S3 с чипом SX1262/1268/1276 или RFM95 |
| Для диапазона 433 МГц | подойдут только модели на SX1268 или SX1278 — остальные чипы 433 МГц не умеют |
Автономность: сколько реально проживёт узел
Узел почти всё время слушает эфир, и именно приём определяет расход, а не передача.
В режиме постоянного приёма плата потребляет ориентировочно 35–45 мА: сам радиочип берёт около 10 мА, остальное — процессор, экран и стабилизатор. Отсюда простая арифметика: аккумулятор на 2000 мА·ч даёт примерно двое суток, повербанк на 10 000 мА·ч — около недели, с поправкой на его собственные потери.
Что экономит заметно
Выключить экран. OLED съедает 8–15 мА — до трети всего расхода. Выключить Wi-Fi. В офлайн-режиме радиомодуль Wi-Fi выключен полностью; в онлайне узел работает дольше от сети, чем от батареи. Реже слать маяки. Штатный маяк раз в минуту почти незаметен, но на большом числе узлов он же создаёт основной фоновый трафик.
Стационарный узел
Ретранслятор на крыше или на мачте разумнее питать от сети или от солнечной панели. Панели на 10 Вт с контроллером и аккумулятором 18650 хватает с большим запасом даже зимой в средней полосе, потому что средний расход — меньше четверти ватта.
Мороз
Li-ion на морозе теряет ёмкость и не любит заряд ниже нуля. Зимой в поле держите аккумулятор под одеждой, а сам узел — снаружи: радио холода не боится, химия боится.
Своя закрытая сеть в офлайн-режиме
Приватная группа прячет содержимое, но живёт в общем эфире: её пакеты слышат и переносят все окрестные модули. Криптосеть — уровень выше. Это отдельная сеть на своей частоте, которую чужие модули не слышат вообще, а не просто не читают.
Что даёт криптосеть
Своя частота из списка разрешённых. Сеть уходит из общего эфира и не мешает ему, а он не мешает ей.
Собственный признак сети. Из парольной фразы выводится синхрослово радиомодуля: приёмник чужой сети такие пакеты просто не примет — они для него шум.
Самое сильное шифрование в проекте: AES-256-GCM. Это не только скрытие содержимого, но и проверка подлинности: подделать или незаметно изменить сообщение нельзя. В обычном режиме используется AES-128-CTR, где от подмены защищает только контрольная сумма, а она рассчитана на помехи, а не на злой умысел.
Защита от повтора записанного. Каждое сообщение несёт счётчик, который не сбрасывается при перезагрузке. Записанный вчера пакет повторить не выйдет.
Тяжёлый вывод ключа. Парольная фраза прогоняется через 100 000 итераций PBKDF2 — полтора секунды один раз при настройке, зато перебор фразы дорожает в сто тысяч раз.
Чем за это платите
Модуль в криптосети не участвует в общей сети: он не услышит общий канал ЧС и не будет ретранслировать чужие сообщения. Изоляция работает в обе стороны — это её смысл, но об этом надо знать заранее.
Метаданные по-прежнему не скрыты: тот, кто знает частоту и синхрослово, видит факт передачи, адрес отправителя и объём. Скрыть это в сети с ретрансляцией невозможно.
Прямой секретности нет: ключ выводится из фразы и не меняется, поэтому утёкшая фраза раскрывает всю переписку сети, включая записанную ранее. Лечение одно — новая фраза.
Разрешённые частоты для криптосети
| Диапазон | 868.7–869.2 МГц — участок, открытый в РФ для устройств малого радиуса действия |
|---|---|
| Несущие на выбор | 868.775 / 868.950 / 869.125 МГц · 25 мВт · скважность 10% |
| Разнос соседних сетей | 175 кГц при полосе сигнала 125 кГц — криптосети не мешают друг другу |
| Свободный ввод частоты | не предусмотрен намеренно: так проще случайно выйти за пределы разрешённого |
| Мощность | ограничена пресетом, выше выставить нельзя |
Регулировка мощности передатчика
В приложении есть ползунок мощности от 2 дБм до предела выбранного диапазона. Меньшая мощность экономит батарею и снижает помехи соседям, а на дальность заметно сильнее влияет высота антенны, чем ватты — поднять антенну на три метра обычно полезнее, чем удвоить мощность.
Режим испытаний оборудования
Отдельным переключателем открывается мощность до предела самого чипа. Он существует ровно для одного: проверки оборудования на эквивалент антенны, в экранированной камере или при калибровке.
Передача в эфир с мощностью выше разрешённой для диапазона запрещена. Приложение показывает предел и требует отдельного подтверждения, прежде чем снять ограничение, — но ответственность за нарушение правил использования радиочастот несёт владелец модуля, а не программа.
Разрешённые пределы: 25 мВт (14 дБм) в диапазонах 864–869 МГц и 10 мВт (10 дБм) на 433 МГц. Прошивка «из коробки» настроена именно на них.
Как поднять свою криптосеть
-
01
Придумайте имя сети
Оно участвует в выводе ключа, поэтому у двух сетей с одинаковой фразой, но разными именами ключи будут разные.
-
02
Получите парольную фразу
Приложение сгенерирует шесть слов. Записать её стоит на бумаге: восстановить фразу невозможно, а без неё сеть недоступна.
-
03
Выберите частоту
Из списка разрешённых пресетов. Если в округе шумно, попробуйте соседнюю частоту того же пресета.
-
04
Раздайте участникам
QR-кодом с экрана телефона или голосом по шести словам. Интернет не нужен ни на одном шаге.
-
05
Проверьте связь
Отправьте тестовое сообщение и посмотрите RSSI и SNR. Модуль вне сети ваш трафик даже не увидит.
-
06
Помните про общий канал ЧС
В криптосети его нет. Если нужен и он — держите второй модуль в общей сети, это самый надёжный вариант.
Настройка каналов и приватных групп
-
01
Подпишитесь на нужные каналы
В приложении список из 25 каналов. Открытые работают сразу и ничего не требуют. Канал «ЧС» подписан всегда и отключить его нельзя — это заложено в прошивку, а не в интерфейс.
-
02
Задайте ключ шифрованному каналу
Каналы «Семья», «Дача», «Объект», «Экспедиция» и «Школа» шифруются. Пока ключ не задан, канал не подписан: устройство не копит то, что не может прочитать. Одна и та же парольная фраза должна быть введена у всех участников.
-
03
Создайте свою группу
Введите название — приложение сгенерирует парольную фразу из шести слов. Из неё на устройстве выводятся адрес группы и ключ. Ни фраза, ни ключ никогда не уходят в эфир и на сервер.
-
04
Позовите остальных по QR
Экран «Пригласить» показывает QR-код. Второй телефон сканирует его камерой — и он в группе. Без интернета, без регистрации, без сервера. Запасной путь — продиктовать шесть слов голосом.
-
05
Решите, выпускать ли группу в интернет
По умолчанию у группы включён режим «только эфир»: шлюзы не выпускают её сообщения наружу. Снимете галочку — появится доставка через сервер, но содержимое сервер всё равно не увидит.
-
06
Помните про лимит платы
Устройство хранит до восьми групп — это ограничение его памяти. Девятая продолжает работать, просто её сообщения расшифровывает телефон, а не плата, и на экране узла они не показываются.
Как честно замерить дальность
Цифры дальности из интернета почти всегда получены в идеальных условиях: два узла на вершинах холмов, ясная погода, направленные антенны. В лесу и в городе будет иначе, поэтому мерять надо самому — и вот как.
Методика
Оставьте один узел на месте, со вторым отходите. Каждые 200–500 метров отправляйте сообщение в тестовый канал 25 и записывайте три вещи: расстояние, RSSI и SNR. Важно отправлять именно с дальнего узла и смотреть отчёт на ближнем: приёмный тракт у плат разный, и «туда» может добивать лучше, чем «обратно».
Как читать RSSI и SNR
RSSI — уровень принятого сигнала в дБм: −60 отлично, −100 рабочий предел, −120 граница. SNR важнее: LoRa вытягивает сигнал даже из-под уровня шума, и при SNR выше −7 дБ связь уверенная, при −15 дБ уже на грани. Если RSSI приличный, а SNR плохой — рядом источник помех, и помогает не мощность, а смена места или частоты.
Что реально меняет результат
По убыванию влияния: высота антенны, прямая видимость, качество и ориентация антенны, скоростной режим (SF), и только потом мощность. Поднять антенну на три метра почти всегда полезнее, чем удвоить мощность, — и это законно, в отличие от второго.
Чего ожидать
Плотная застройка — 1–3 км, пригород — 3–6 км, открытая местность — 5–15 км, с возвышенности в прямой видимости — двадцать и больше. Лес съедает дальность сильнее города: мокрая листва поглощает 868 МГц заметно лучше кирпича.
Готовы попробовать?
Возьмите плату из списка, подключите кабелем и прошейте прямо из браузера.