Embedded HandbookПриложения
Все разделы › X. Проектирование, сети и IoT
STM32F103, STM32F407 · уровень базовый · 9 мин чтения
Открыть в интерактивном справочнике

92. Радиообследование и карта покрытия

Бюджет линии (раздел 93) говорит, сколько сигнал может потерять по дороге. Сколько он теряет на самом деле в этом здании, покажет только обследование. Раздел отвечает на три вопроса: - как провести обследование и что мерить; - как по замерам построить модель и карту покрытия; - что делать с результатом.

Проверено моделью: склад 120 × 40 м, 48 замеров. Подгонка модели и карта сделаны на переносимом C и независимо повторены на numpy.

Как это называется в документации

Оригинал Перевод
site survey радиообследование
coverage map, heatmap карта покрытия
RSSI, SNR, ESP (estimated signal power) мощность на входе, сигнал/шум, мощность самого сигнала
PER (packet error rate) доля потерянных пакетов
path loss, log-distance model потери на трассе, модель «потери растут с логарифмом расстояния»
path loss exponent показатель затухания
shadowing разброс от предметов на пути
fade margin запас на замирания
antenna gain (dBi), radiation pattern усиление антенны, диаграмма направленности
VSWR, mismatch loss КСВ, потери рассогласования

92.1 Порядок обследования

  1. Подготовка. Цель: карта покрытия, поиск слабых мест, место для шлюза или поиск помех. Оборудование: анализатор, приложение или прибор-обследователь. План здания с материалами стен, стеллажами, окнами и дверями — без материалов модель не построить (92.3).
  2. Замеры. Мощность, SNR, потери тестовых пакетов, задержка. Мерят там, где будут стоять приборы, на их высоте и в обе стороны: шлюз слышит прибор и прибор слышит шлюз — не одно и то же.
  3. Анализ. Карта покрытия, зоны потерь, источники помех.
  4. Действия и повтор. Перенести шлюз или антенну, сменить канал — и измерить снова. Итог записывают: методика, карта, выводы, рекомендации (раздел 90.7).

92.2 Что мерить

Показатель Что значит
RSSI мощность на входе приёмника — сигнал вместе с шумом
SNR насколько сигнал сильнее шума; у LoRa бывает отрицательным (раздел 93.2)
ESP мощность самого сигнала: RSSI + SNR − 10·lg(1 + 10^(SNR/10))
потери пакетов по пропускам в нумерации тестовых пакетов
задержка от отправки до получения; важна для управления
частота, канал где работаете и кто там ещё

Почему не хватает одной RSSI. Ниже шума приёмник видит в основном шум, и RSSI его и показывает. Пусть RSSI −120 дБм, а SNR −10 дБ. Тогда самого сигнала −130,4 дБм, на 10 дБ меньше, чем кажется. При SNR +10 дБ ESP равна −120,4 дБм, почти как RSSI.

Прибор-обследователь нумерует тестовые пакеты, и приёмник считает пропуски:

struct link_stats {
    uint16_t last;
    uint32_t got, lost;
    int started;
};

/* Пришёл пакет с номером seq: пропуски в нумерации — потерянные пакеты.
 * Разность считается в 16 битах, поэтому переполнение счётчика не мешает;
 * повтор и запоздавший старый пакет не учитываются. */
void link_seen(struct link_stats *s, uint16_t seq)
{
    if (s->started) {
        uint16_t gap = (uint16_t)(seq - s->last);
        if (gap == 0 || gap >= 0x8000u)
            return;
        s->lost += gap - 1u;
    }
    s->last = seq;
    s->started = 1;
    s->got++;
}

/* Мощность самого сигнала: RSSI меряет сигнал вместе с шумом, и ниже шума
 * почти всё, что она показывает, — шум. ESP = RSSI + SNR − 10·lg(1 + 10^(SNR/10)) */
float esp_dbm(float rssi_dbm, float snr_db)
{
    return rssi_dbm + snr_db - 10.0f * log10f(1.0f + powf(10.0f, snr_db / 10.0f));
}

Проверочная последовательность номеров: 65530, 65531, 65533, 65534, 65535, 0, 3, 3, 4, 2, 5. В ней переполнение счётчика, пропуски, повтор и запоздавший пакет. Результат: 9 пакетов принято, 3 потеряно, 25,0 %. Счётчик пережил переход 65535 → 0.

Сколько пакетов нужно. Ноль потерь из 100 пакетов значит, что потерь меньше 3 % с уверенностью 95 %. Ноль из 10 значит только «меньше 26 %». Десятка пакетов на точку для вывода мало.

Эфир тоже считается. 100 пакетов на SF7 — это 6,17 с эфира. При правиле 1 % прибор потратит на одну точку 10,3 минуты. На SF12 — 4,1 часа. Поэтому мерят на SF7, а запас для SF12 добавляют расчётом: у SF12 порог на 12,5 дБ ниже (раздел 93.2).


92.3 Модель потерь по замерам

Замеры есть в точках, а карта нужна везде. Мост между ними — модель потерь:

PL(d) = PL₀ + n·10·lg d + L·(число стен) + разброс

Три неизвестных находят по замерам методом наименьших квадратов:

/* Модель потерь PL = PL0 + n·10·lg d + L·(число стен) по замерам — метод
 * наименьших квадратов. walls == NULL — модель без стен (L не ищется).
 * *sigma — разброс замеров вокруг модели. Вернёт 0 или −1. */
int fit_path_loss(const float *d_m, const uint8_t *walls, const float *pl_db, unsigned count,
                  float *pl0, float *n, float *wall_db, float *sigma_db)
{
    double m[3][3] = {{0}}, b[3] = {0}, x[3] = {0};
    unsigned k = walls ? 3u : 2u;
    for (unsigned i = 0; i < count; i++) {
        double r[3] = {1.0, 10.0 * log10(d_m[i]), walls ? walls[i] : 0.0};
        for (unsigned a = 0; a < k; a++) {
            b[a] += r[a] * pl_db[i];
            for (unsigned c = 0; c < k; c++)
                m[a][c] += r[a] * r[c];
        }
    }
    if (count <= k || solve(m, b, x, k) != 0)
        return -1;
    double sq = 0;
    for (unsigned i = 0; i < count; i++) {
        double e = pl_db[i] - (x[0] + x[1] * 10.0 * log10(d_m[i]) + (walls ? x[2] * walls[i] : 0.0));
        sq += e * e;
    }
    *pl0 = (float)x[0];
    *n = (float)x[1];
    *wall_db = (float)x[2];
    *sigma_db = (float)sqrt(sq / (count - k));
    return 0;
}

solve — метод Гаусса для системы 2×2 или 3×3. Подгонка считает в double, а FPU Cortex-M4 — только одинарной точности, так что double, log10 и sqrt и на M4 идут программной библиотекой (как в разделе 97.6). Подгонка занимает 344 байта стека, и прибор-обследователь может строить модель прямо на месте.

Опыт. Склад 120 × 40 м, поперёк две стены — на 40 и на 80 м, шлюз в 10 м от торца. «Правду», которую обследование должно найти, задали заранее: - 868 МГц, на первом метре потери как в свободном пространстве; - показатель затухания 3,5; - стена 15 дБ; - разброс 4 дБ.

Замеры сделаны в 48 точках через 10 м:

Модель Потери на 1 м Показатель n Стена Разброс
«правда» 31,2 дБ 3,5 15 дБ 4 дБ
подгонка без стен −6,0 дБ 6,74 — 6,9 дБ
подгонка со стенами 31,4 дБ 3,45 15,6 дБ 3,9 дБ

Модель потерь по замерам: без стен «сошлась» в бессмыслицу, со стенами нашла правду

Модель без стен тоже «сошлась»: метод наименьших квадратов всегда что-то найдёт. Но отрицательные потери на первом метре и показатель 6,7 — бессмыслица, и предсказания по такой модели неверны. Со стенами обследование нашло «правду» с точностью до разброса. Отсюда правило: в модели должно быть всё, что заметно влияет на сигнал, а для этого нужен план с материалами.

Запас на разброс. Разброс 4 дБ, запас 10 дБ — это 2,5 сигмы. Возьмём место, где модель обещает ровно порог плюс запас. Связь там будет в 99,4 % таких мест.


92.4 Карта покрытия

Найденная модель считает мощность в каждой клетке 1 × 1 м — это 4800 клеток на складе. Цвет клетки показывает, хватает ли SF7 с запасом 10 дБ (раздел 93.4) или только медленных SF:

Карта покрытия склада: шлюз у торца и в центре

Где шлюз SF7 с запасом 10 дБ SF12 с запасом 10 дБ
в 10 м от торца 75,1 % площади 100 %
в центре, на 60 м 100 % 100 %
на 100 м 83,5 % 100 %

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


92.5 Антенна, кабель, место


92.6 Wi-Fi: тот же порядок

Обследование Wi-Fi проходит по тем же четырём шагам: план, замеры, карта, действия. Мерят приложением на телефоне или ноутбуке. Отличаются пороги: у Wi-Fi каждой скорости нужен свой SNR, поэтому карту строят для той скорости, которая нужна приборам. На 2,4 ГГц помехи дают соседние сети, Bluetooth и микроволновые печи. Выбор каналов разобран в разделе 89.5.


92.7 Грабли

Замеры в пустом здании. Стеллажи, товар и люди добавят потерь, а модель их не знает.

Замеры на высоте руки. Прибор будет стоять у пола или в шкафу.

Только RSSI, без SNR. В шумном цеху высокая RSSI — это шум.

Десять пакетов на точку. По ним ничего нельзя сказать о потерях.

Замеры на SF12. Правило 1 % не даст сделать и пары точек в час.

Модель без стен. Числа красивые, предсказания неверные.

Проверили только одно направление. Шлюз слышит прибор, а прибор шлюз — нет: у шлюза антенна лучше, у прибора передатчик слабее.

После переноса шлюза не мерили снова. Карта осталась гипотезой.

Антенна не на свой диапазон. Все расчёты теряют смысл.


92.8 Итоги

Дальше: раздел 93 «LoRa: радио, модуль SX1276, дальность».

Открыть в интерактивном справочнике