Почему два модуля LoRa не видят друг друга?
Обновлено Редакция GAW
Приёмник LoRa не подстраивается под передатчик: все параметры модема на обеих сторонах задаются заранее. Сигналы с разными SF ортогональны — приёмник, настроенный на SF7, воспринимает пакет на SF9 как шум (даташит SX1276, разд. 4.1.1.2; AN1200.22, разд. 4.1.7). Поэтому «молчание» двух модулей почти всегда означает расхождение в настройках.
Что должно совпадать
| Параметр | Почему важен |
|---|---|
| Частота | приёмник слушает только свой канал; модуль должен быть на этот диапазон |
| SF | разные SF ортогональны — чужой пакет выглядит как шум |
| Полоса BW | от неё зависит длительность символа и скорость чипов |
| Кодовая скорость CR | в неявном режиме заголовка задаётся на обеих сторонах |
| Режим заголовка | в неявном режиме длина, CR и CRC заранее известны приёмнику |
| Длина преамбулы | по даташиту должна совпадать на приёмнике и передатчике |
| LowDataRateOptimize | обязателен при символе длиннее 16 мс; одинаков на обеих сторонах |
Наш расчёт для бита LowDataRateOptimize: длительность символа Ts = 2SF/BW. При 125 кГц SF11 даёт 16,4 мс, SF12 — 32,8 мс: для них бит нужен, а SF10 (8,2 мс) — без него. Если включить бит только на одной стороне, пакет не разберётся.
Диапазон модуля
SX1278 работает от 137 до 525 МГц — для 433 МГц, но не для 868 МГц; SX1276 — до 1020 МГц (табл. 1). Модуль на SX1278, которому программа задала 868 МГц, не выйдет на эту частоту, и второй модуль на 868 МГц его не услышит. Кроме микросхемы, важна обвязка модуля: согласование и антенна рассчитаны на один диапазон — подробнее в статьях «Радиомодули 433 и 868 МГц» и «Антенны».
Порядок проверки
- Связь по SPI: регистры читаются и записываются.
- Одинаковые частота, SF, BW, CR, режим заголовка, преамбула, LowDataRateOptimize и CRC — удобнее всего задать их одной общей функцией в обеих прошивках.
- Антенны на нужный диапазон на обоих модулях.
- Проверка на малом расстоянии, затем — на рабочем.
Смысл каждого параметра и как он влияет на дальность и время в эфире — в статье «LoRa».
Похожие вопросы
Как проверить, что модуль вообще отвечает по SPI?
Прочитать любой регистр с известным значением после сброса, например регистр версии, и сравнить с даташитом. Если читаются 0x00 или 0xFF, проблема не в радио, а в проводах SPI, выводе NSS, питании или сбросе — сначала исправьте её.
Модули настроены одинаково, но связь только на столе. Что ещё проверить?
Антенны: модуль без антенны или с антенной не на тот диапазон теряет большую часть бюджета линии. Затем питание: при +20 дБм SX1276 берёт в передаче 120 мА, а для этой мощности ему нужно не меньше 2,4 В.
Можно ли связать модуль LoRa с модулем FSK, например с CC1101?
Нет: LoRa — своя модуляция с расширением спектра, FSK-приёмник её не демодулирует. Зато SX1276 и SX1278 умеют и FSK, и OOK: в этом режиме они могут работать с FSK-трансивером, если совпадут частота, девиация, скорость и формат пакета (наш вывод).
Источники
- Semtech. SX1276/77/78/79 Datasheet, Rev. 5 (August 2016) — архивная копия официального файла; табл. 1: SX1276 — 137–1020 МГц, SX1278 — 137–525 МГц, SX1277 — SF 6–9; разд. 4.1.1.2: сигналы с разными SF ортогональны, SF6 — только с неявным заголовком; разд. 4.1.1.6: длина преамбулы на приёмнике и передатчике должна совпадать, в неявном режиме длина, CR и наличие CRC задаются на обеих сторонах заранее; LowDataRateOptimize обязателен при символе длиннее 16 мс; табл. 7: диапазон 1 — 862–1020 МГц, диапазон 2 — 410–525 МГц; разд. 1: модемы LoRa и FSK/OOK; табл. 6: передача 120 мА при +20 дБм; разд. 5.4.3: для +20 дБм питание 2,4–3,7 В
- Semtech. AN1200.22 LoRa Modulation Basics, Rev. 2 (May 2015) — архивная копия официального файла; разд. 4.1.7: ортогональность разных SF
Нашли ошибку?
Смотрите также
- LoRaSF, BW, CR, чувствительность SX1276, структура пакета, формула времени в эфире, пример
- Радиомодули 433 и 868 МГцOOK, ASK, FSK; супергетеродин и сверхрегенератор; CC1101, SX1276/SX1278; выбор модуля
- Антенны для радиомодулейλ/4 и земля, PCB IFA, чип и спираль, КСВ, П-цепь, зона без меди, КПД по замерам
- SPISCLK, MOSI, MISO, CS, режимы 0–3, daisy chain, частота, SPI в AVR
- CRCЦиклический избыточный код для обнаружения ошибок