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)
В результате передатчик будет по очереди переключаться между тремя частотами и на спектограмме это будет выглядеть вот так:
Сигнал очень сильный, поэтому помимо основного сигнала видны его 2 и 3 гармоники.