FHSS

Недавно появилась новость о том, что спутники компании EchoStar будут использовать метод LR-FHSS для передачи данных. Меня это сразу же заинтересовало. Во-первых, я разработал библиотку sx127x для работы с чипами LoRa. Во-вторых, эта библиотка используется для получения данных со спутников в r2cloud.

LR-FHSS - это метод передачи сигнала, при котором приёмник и передатчик одновременно перепрыгивают на разные частоты с определённым интервалом. Это позволяет большему количеству устройств использовать один и тот же спектр частот.

Как оказалось, FHSS в sx127x совсем не то же самое, что LR-FHSS в sx126x. Это совершенно другой протокол, который, в принципе, может эмулироваться, но в общем случае несовместим с FHSS.

Тем не менее я решил добавить поддержку FHSS в sx127x.

Принцип работы следующий:

  • Передатчик через фиксированный период времени меняет частоту, на которой передаёт сообщение
  • Список частот можно либо сгенерировать заранее (не так эффективно), либо сгенерировать на основе первых байт входящего кусочка сообщения
  • Приёмник и передатчик используют один и тот же алгоритм

Библиотка по прерыванию SX127x_IRQ_FLAG_FHSSCHANGECHANNEL выбирает и устанавливает новую частоту. Конфигурация выглядит следующим образом:

uint64_t frequencies[] = {437700000, 438200000, 437200012};
sx127x_lora_set_frequency_hopping(5, frequencies, sizeof(frequencies) / sizeof(uint64_t), &device)

В результате передатчик будет по очереди переключаться между тремя частотами и на спектограмме это будет выглядеть вот так:

FHSS

Сигнал очень сильный, поэтому помимо основного сигнала видны его 2 и 3 гармоники.