Перейти к содержанию

Сеть мониторинга

С прошивки 1.3.16 (данные UBX с 1.3.18) · Радио: Радио ESP-Now

Несколько референсных станций MS2net могут наблюдать за объектом, который может сместиться: склоном оползня, подпорной стеной, мостом, зданиями рядом со стройплощадкой. На каждой наблюдаемой точке закрепляется станция, работающая как ровер: она непрерывно, днём и ночью, измеряет своё положение в RTK и записывает его на свою карту microSD. Сравнение положений за часы, дни и недели показывает, сместилась ли точка, насколько и когда.

Чтобы измерять в RTK, каждому роверу нужны поправки источника: базы, стоящей на устойчивом грунте, или шлюза, который берёт их с NTRIP-кастера. Поправки доходят до всех по радио ESP-Now, без маршрутизатора, без кабелей между точками и без SIM-карты на каждой станции. Там, куда радио не достаёт, ровер работает ещё и как ретранслятор.

На этой странице объясняется, что происходит внутри сети: как передаются данные, как станции следят друг за другом, что делает сеть, когда станция выключается, и как данные каждой станции доходят до сборщика. Поля страницы настройки описаны в разделе Радио ESP-Now.

Как передаются данные

Поправки от источника к роверам Поправки от источника к роверам

Рисунок 1 — Поправки от источника к роверам

В первой половине анимации источник — база, во второй — шлюз; в настоящей сети передаёт только один источник одновременно.

  1. Источник готовит поправки. База вычисляет их своим модулем GNSS по своим фиксированным координатам; шлюз получает их от кастера через свой WiFi.
  2. Разбивает их на пронумерованные пакеты. Каждый пакет длиной не более 250 байт несёт поправки, порядковый номер, который растёт на единицу с каждым пакетом, и контроль, вычисленный по содержимому. С заводскими частотами группа пакетов уходит раз в секунду.
  3. Отправляет каждый пакет дважды, с разницей в несколько миллисекунд, всем станциям в зоне действия. Радио не подтверждает приём: вторая копия покрывает пакет, потерянный из-за помехи.
  4. Каждый ровер оставляет первую копию и отбрасывает вторую, узнавая её по номеру. Пакет с неверным контролем отбрасывается. Хорошие поправки без изменений идут в модуль GNSS ровера, который с ними выходит в RTK fix.
  5. Каждый ровер записывает своё положение на свою карту microSD. Измерения остаются там: радио несёт поправки к роверам и строки состояния, описанные ниже; данные GNSS станции уходят к центру, только если это попросить, через сборщик. Файлы забирают с каждой станции через Файлы.

Все станции должны быть на одном радиоканале. Источник передаёт на канале своей сети WiFi, если она у него есть; роверы держат WiFi выключенным и сами находят канал, слушая по очереди каналы с 1 по 13 по 2 секунды (всего около 26 с). С сетевым ключом каждый пакет подписан, и станция принимает только пакеты, подписанные её собственным ключом: две соседние сети не смешиваются. Пакеты не шифруются. Подробности — в разделе Радио ESP-Now › Пакеты и сетевой ключ.

Станции сообщают, кто они

Телеметрия: каждая станция каждые 2 с Телеметрия: каждая станция каждые 2 с

Рисунок 2 — Телеметрия: каждая станция каждые 2 с

Каждые 2 секунды каждая станция, база или ровер, отправляет всем остальным короткую строку состояния:

  • свой ID, последние четыре цифры своего радиоадреса (например, 173E), тот же, что в имени Bluetooth и на дисплее;
  • свою роль: база, шлюз, ретранслятор или ровер. Станция называет себя базой, шлюзом или ретранслятором только пока ей есть что передать: база, ещё занятая самоопределением, или ретранслятор, который ничего не получает, называют себя ровером и никого не привлекают;
  • сколько она работает, свободную память и версию прошивки;
  • на ровере — ретранслятор, у которого он просит поправки, или никакой;
  • с прошивки 1.3.18 — своё положение (широта, долгота, высота) и тип решения: 3D, RTK float или RTK fix.

Каждая станция хранит услышанные строки в таблице, с сигналом каждой и секундами с последней. Именно эта таблица позволяет сети перестраиваться самой, и её же читают, чтобы проверить сеть: вживую в последовательном меню r или на странице настройки, которая показывает станции, слышимые за минуту до входа в настройку (в настройке ESP-Now выключен). Столбцы описаны в разделе Радио ESP-Now › Слышимые станции.

Как она перестраивается сама

Ни одна станция не командует остальными, и ничего не нужно настраивать на каждой станции отдельно: каждая решает сама по своей таблице и по потоку поправок. Вот что происходит в трёх важных случаях.

Ровер не слышит источник

Ровер просит ретранслятор Ровер просит ретранслятор

Рисунок 3 — Ровер просит ретранслятор

  1. Каждые 5 секунд ровер подводит итог по источнику: сколько пакетов он услышал и скольких номеров не хватает. Если он не слышал его совсем или потерял больше одного пакета из пяти, ему нужна помощь.
  2. В своей строке состояния он просит ретранслятор, который слышит лучше всего среди тех, кому есть что передать (просит 9C04 в анимации).
  3. Ретранслятор читает запрос и начинает повторять: каждый новый пакет, который он получает, он отправляет заново, без изменений, с тем же номером, дважды. Каждый запрос действует 15 секунд, и ровер обновляет его с каждой строкой, то есть каждые 2 с: полоска под ретранслятором заполняется при каждом запросе.
  4. Когда ровер снова хорошо слышит источник, он перестаёт просить; через 15 с после последнего запроса ретранслятор перестаёт повторять, и эфир освобождается.

Ретранслятор, который плохо слышит источник, сам так же просит другой ретранслятор, так что поправки при необходимости проходят несколько скачков. Пакеты никогда не ходят по кругу: каждая станция узнаёт по номеру уже полученный пакет, от кого бы он ни пришёл, и отбрасывает его. Ретранслятор, который не слышит ни одного ровера с прошивкой 1.3.16 или новее, повторяет всегда, чтобы обслуживать старые роверы, которые не умеют просить.

Отказ ретранслятора

Отказ ретранслятора: переход на другой Отказ ретранслятора: переход на другой

Рисунок 4 — Отказ ретранслятора: переход на другой

Часы в правом верхнем углу показывают время сети: долгие ожидания проходят быстро.

  1. Используемый ретранслятор выключается (разряженная батарея, неисправность, удар): поправки перестают доходить до ровера, а его строки состояния — до всех.
  2. Через 3 секунды без поправок ровер снова ищет канал, с 1 по 13, около 26 секунд: он не знает, в чём дело — в ретрансляторе или в канале.
  3. Закончив поиск, он останавливается на канале, где слышал источник или ретранслятор с поправками, и просит ретранслятор, который слышит лучше всего. Выключенный больше не кандидат: станция, молчащая 15 с, больше не выбирается.
  4. Новый ретранслятор начинает повторять, и ровер снова в RTK fix примерно через полминуты после отказа.

Если других ретрансляторов в зоне действия нет, ровер продолжает искать канал, пока снова не услышит источник или ретранслятор. Тем временем он остаётся без поправок: запись продолжается, но положения не в RTK fix. Когда ретранслятор снова включится, ровер сам его найдёт.

Отказ шлюза

Отказ шлюза: его сменяет резервный Отказ шлюза: его сменяет резервный

Рисунок 5 — Отказ шлюза: его сменяет резервный

Можно поставить два шлюза или больше: один передаёт, остальные в резерве.

  1. При нескольких шлюзах передаёт только тот, у которого наименьший ID. Остальные всё равно получают кастер и используют его для себя (они тоже роверы и измеряют свою точку), но пока слышат, что передаёт шлюз с наименьшим ID, молчат.
  2. Передающий шлюз выключается или теряет Интернет либо кастер: его поправки прекращаются.
  3. Резервный отсчитывает тишину. Через 15 секунд без него начинает передавать поправки своего кастера шлюз с наименьшим ID среди оставшихся.
  4. Тем временем роверы через 3 с без поправок ищут канал; они находят новый источник и снова в RTK fix через полминуты — минуту после отказа, в зависимости от канала.

Шлюз молчит и тогда, когда слышит поправки базы: при базе и шлюзе шлюз остаётся резервом базы и сменяет её через 15 с после того, как база замолкает. База, ещё занятая самоопределением, не передаёт поправок и никого не заставляет молчать. Чтобы всё это работало, шлюзы должны слышать друг друга: одна и та же сеть WiFi (а значит, один канал) и радиосвязь между ними.

Если отказывает другая станция

Что происходит Что делает сеть
выключается ровер Для остальных станций ничего не меняется. Он исчезает из таблиц после минуты молчания; его карта microSD хранит всё, что он записал до этого момента.
выключается база Роверы остаются без поправок и ищут канал. Если есть резервный шлюз, он начинает передавать через 15 с; если нет, роверы ждут возвращения базы и потом продолжают сами.
шлюз теряет Интернет Без данных от кастера он больше не передаёт поправки: для роверов это как если бы он был выключен, и резервный шлюз со своим подключением сменяет его через 15 с.
питание возвращается Каждая станция перезапускается в своём Режиме при включении и сама возвращается в сеть: роверы снова находят канал, ретрансляторы снова отвечают на запросы.
станция в последовательном меню Пока последовательное меню открыто, станция не отправляет строк состояния. Ретранслятор, оставленный в меню дольше 15 с, больше не выбирается: прочитайте нужное и выйдите.
станция в настройке В настройке ESP-Now выключен: ретранслятор в настройке не повторяет, и зависящие от него роверы остаются без поправок, пока он не вернётся в режим ровера.

Данные каждой станции — сборщику

С прошивки 1.3.18

Данные UBX роверов идут к сборщику Данные UBX роверов идут к сборщику

Рисунок 6 — Данные UBX роверов идут к сборщику

Каждая станция и так записывает своё положение на свою карту microSD. С прошивки 1.3.18 она может также передавать свои данные GNSS по ESP-Now станции, работающей как сборщик, которая сохраняет их все на своей карте microSD: чтобы получить данные всего объекта, достаточно подойти к одной станции.

  1. У каждой передающей станции включено Передавать UBX по ESP-Now. Она упаковывает в пакеты сообщения NAV-PVT (положение), RXM-RAWX (сырые измерения) и RXM-SFRBX (навигационные данные спутников), которые выдаёт её модуль GNSS: только те, что включены в Частоты сообщений, с их частотой.
  2. Каждый пакет несёт ID станции и номер и уходит дважды с интервалом 10 мс, как поправки. Прошивки старше 1.3.18 его не распознают и отбрасывают.
  3. Ретрансляторы повторяют их всегда, даже без запросов: данные дальней точки доходят до сборщика через ретранслятор (D45C в анимации). Каждая станция отбрасывает копии, узнавая их по станции-источнику и номеру.
  4. Сборщик с включённым Собирать UBX из ESP-Now раз в секунду записывает данные каждой станции в отдельный файл, по одному на станцию и на день: ESPNOW_<ID>_<ггммдд>.ubx, например ESPNOW_5A21_261008.ubx (ESPNOW_5A21.ubx, пока часы не установлены). Собственные данные сборщика туда не попадают: он и так записывает их, как каждая станция.
  5. Файлы скачивают со сборщика через Файлы и обрабатывают так же, как файлы, записанные каждой станцией.

Строки состояния несут и положение каждой станции с типом решения (3D, RTK float, RTK fix): таблица слышимых станций сборщика показывает, где находится каждая точка, даже без сообщений UBX.

Каждая ячейка Частоты сообщений говорит, через сколько измерений выходит сообщение: при заводских измерениях 4 Гц значение 4 означает раз в секунду. В последовательном меню три сообщения находятся в 2 → 4 (NAV, пункт 16 PVT) и 2 → 3 (RXM, пункт 3 RAWX и пункт 6 SFRBX).

На стенде Что доходит
в установившемся режиме Доходит 99 % переданных байтов.
целые сообщения В файле 95 % байтов — целые сообщения. Потерянный пакет портит всё сообщение, часть которого он нёс, а RXM-RAWX занимает около пяти пакетов; программы обработки пропускают испорченные сообщения и используют остальные.
при запуске Если источник перезапускается, роверы ищут канал, и в это время теряется больше.

Файл сборщика — не точная копия: полная копия остаётся в файле, записанном на карту microSD каждой станции. Сколько станций могут передавать одновременно — в разделе Ограничения.

Роли вкратце

Станция Где Как настроить Подробности
База На устойчивом грунте, вне зоны, которая может сместиться, в прямой видимости точек Режим Base с Фиксированная, Радио в ESP-Now Поправки RTK › База и ровер по ESP-Now
Шлюз Вместо базы или как её резерв: там, где есть WiFi с Интернетом Ровер с включёнными клиентом NTRIP и Шлюз ESP-Now, Радио в ESP-Now Радио ESP-Now › Шлюз
Ровер На каждой наблюдаемой точке, закреплённый на столбике или кронштейне Ровер, Радио в ESP-Now, Шлюз ESP-Now выключен, запись включена Запись на microSD
Ретранслятор Там, куда сигнал источника не доходит: между источником и самыми дальними точками Ровер с отмеченным Ретранслятор ESP-Now; он тоже измеряемая точка Радио ESP-Now › Ретранслятор
Сборщик Там, куда доходят данные всех станций, напрямую или через ретранслятор База или ровер с Собирать UBX из ESP-Now и картой microSD; по желанию Данные каждой станции — сборщику

Достаточно одного источника поправок: базы или шлюза. База, шлюз и ретранслятор — тоже референсные станции MS2net с той же прошивкой: роль определяют настройки.

Как развернуть

  1. Обновите каждую станцию до прошивки 1.3.16 или новее (1.3.18 для данных UBX), все вместе (Обновление прошивки). Что вы видите: версию в разделе Какая версия установлена.
  2. Выберите один сетевой ключ для объекта и введите его в Настройка радио на каждой станции, затем Сохранить. Что вы видите: последовательное меню r показывает (set).
  3. Подготовьте источник: базу на устойчивом грунте, в режиме Фиксированная и с Радио в ESP-Now, или шлюз (Радио ESP-Now › Шлюз). Что вы видите: на базе светодиод NET мигает голубым, пока уходят поправки.
  4. На каждой станции точки установите Радио в ESP-Now и оставьте Шлюз ESP-Now выключенным. В разделе Запись на microSD оставьте включённым Запись на microSD и поднимите Максимальное время записи (мин) до длительности кампании: с завода запись останавливается через 24 часа. Установите Режим при включении в Rover, затем Сохранить и Выход. Что вы видите: на дисплее Rover.
  5. Закрепите каждую станцию на её точке, антенной GNSS под открытым небом, и включите её. Что вы видите: в течение нескольких десятков секунд значок ESP-Now чередуется со стрелкой вниз, затем светодиод RTK горит постоянно (RTK fix).
  6. Там, где станция не получает поправки, поставьте ретранслятор между ней и источником (Радио ESP-Now › Ретранслятор). Что вы видите: в слышимых станциях этот ровер показывает ID ретранслятора в столбце Ретранслятор, и ровер выходит в RTK fix.
  7. Если нужен сборщик: на каждой станции, которая должна передавать свои данные, включите NAV-PVT, RXM-RAWX и RXM-SFRBX в Частоты сообщений с нужной частотой и Передавать UBX по ESP-Now в Настройка радио (r → 8), затем Сохранить. Что вы видите: в последовательном меню r строка UBX since start, где растут отправленные байты.
  8. На станции-сборщике, со вставленной картой microSD, включите Собирать UBX из ESP-Now (r → 9), затем Сохранить и Выход. Что вы видите: в её меню r растут heard from others и saved, а в Файлы появляется по файлу ESPNOW_<ID>_<ггммдд>.ubx на каждую передающую станцию.
  9. Проверьте всю сеть из последовательного меню r одной станции, как в разделе Как её проверить, затем выйдите из меню. Что вы видите: все станции в списке, возраст от 0 до 2 с, одинаковая прошивка.

Как её проверить

Каждая станция хранит таблицу слышимых станций: ID станции, роль, сигнал, секунды с последней строки, ретранслятор, которого просит каждый ровер, прошивка, время работы, свободная память и, с прошивки 1.3.18, положение с типом решения. Откройте последовательное меню r на любой станции сети и прочитайте её; затем выйдите из меню, потому что станция в меню не отправляет строк.

Что видно Что это значит
все на месте Видна каждая станция сети, с возрастом от 0 до 2 с и одинаковой прошивкой: сеть полная.
одной нет Эта станция выключена, вне зоны действия, у неё другой сетевой ключ или прошивка старше 1.3.16.
слабый сигнал Ниже -80 дБм связь на пределе: поднимите антенны или поставьте ретранслятор.
запрошен ретранслятор Ровер с ID в столбце Ретранслятор не слышит источник и зависит от этого ретранслятора: держите ретранслятор включённым.
два шлюза Две станции с ролью Шлюз дольше 15 с не слышат друг друга, и роверы между ними слышат два источника: оставьте один шлюз или сблизьте их до зоны взаимной слышимости.
данные UBX На сборщике строка UBX since start считает байты, услышанные от других станций (heard from others), и сохранённые (saved). Если растёт число в скобках после saved, данным не хватает места на карте microSD: её нет, она заполнена или медленная.

Находится ли каждый ровер в RTK fix, показывает сама станция — светодиод RTK и дисплей. На ретрансляторе и на шлюзе последовательное меню r также сообщает, повторяют ли они или передают, а счётчики пакетов описаны в разделе Радио ESP-Now › Счётчики.

Ограничения

Ограничение Что это значит
дальность ESP-Now достаёт не более чем на несколько сотен метров в прямой видимости, с препятствиями намного меньше (Дальность и связь). Каждый ретранслятор добавляет шаг, и каждый скачок — это ещё одна станция, которая должна оставаться включённой.
мощность Макс. мощность WiFi (с завода 11 дБм) ограничивает и ESP-Now: она держит излучаемую мощность в пределах правил, а при меньшей мощности дальность меньше.
данные Каждый ровер записывает на свою карту microSD; по ESP-Now до сборщика доходят только NAV-PVT, RXM-RAWX и RXM-SFRBX, и не все целыми. Полные файлы забирают с каждой станции (Файлы); для последующей обработки выберите Частоты записи (Запись на microSD).
привязка Положения отсчитываются от координат источника. Держите базу в режиме Фиксированная всю кампанию (Самоопределение или фиксированная); положения, измеренные с поправками шлюза, могут отличаться от измеренных с базой: отмечайте, когда меняется источник.
пропуски При отказе ретранслятора или источника зависящие от него роверы остаются без поправок от полуминуты до минуты, пока снова не найдут канал: в данных этот отрезок не в RTK fix.
полоса RXM-RAWX, RXM-SFRBX и NAV-PVT раз в секунду дают около 1,6 КБ в секунду на станцию, на том же канале, что и поправки, и каждый ретранслятор передаёт их заново: не больше десятка станций, передающих сырые измерения раз в секунду.
память Передавать UBX по ESP-Now занимает 4 КБ памяти, Собирать UBX из ESP-Now — 8 КБ, только пока они включены.
восемь станций Каждая станция помнит восемь других: если станция слышит больше восьми, её таблица показывает только восемь последних услышанных, и ретранслятор она выбирает среди них. Копии данных UBX тоже распознаются для восьми станций-источников одновременно: если передающих станций больше, копия, пришедшая с опозданием от ретранслятора, может попасть в файл дважды.
прошивка Каждой станции нужна прошивка 1.3.16 или новее: более старый ровер не просит ретранслятор, и ретранслятор обслуживает его только пока в зоне действия нет ни одного ровера 1.3.16 или новее. Для передачи, повтора и сбора данных UBX нужна 1.3.18: более старые прошивки отбрасывают эти пакеты.