LoRa SX1268 E22400-M22S запуск, настройка на максимальную дальность

Хочу поделиться информацией, которую в интернете не нашёл.

Затеяля я тут апгрейд радиоканала своей автосингализации.
До этого был на MRF49 плюс усилители от BLAZE с VTRP, потом (на данный момент) SI4432.
В обоих случаях 400 метров в прямой (ну или почти прямой) видимости. Разница только
в количестве SMD обвеса на плате. Разница, правда радикальная.

Услышал/увидел про LoRa в интернете. Погуглил цены, датшиты. Купил на Али E22400-M22S.
Что то около 500 рублей за штуку. Сбацал два модуля. Рулит трансивером ATtiny84A,
питание от двух АА (3в). Одна антенна — провод 17см, вторая — спираль 5x30мм 20 витков.


Тут и началось… :)
При чтении датшита — трудности перевода… Набор глюков и заплаток… :)
При гуглении — сплошные LoRa + Arduino. «Подключаем библиотеку, и радуемся...»
А я, видите ли, заскорузлый ассемблерщик :) Ну «не вштыривает» (1+1 смотрели?) меня этот C.
Даже в виде Arduino. Ну не нашёл ничего. Может плохо искал…
Короче методом проб нашёл последовательность «запуска» SX1268.
Мож кому пригодится. Я ж искал :)

Настройка трансивера после включения питания:
RESET_SX1268
SetStandby,RC
SetRegulatorMode,1
SetDIO3AsTCXO
SetStandby,XOSC
SetDIO2AsRfSwitchCtrl,1
SetRxTxFallbackMode,$30
SetBufferBaseAddress,$80,$00
SetRfFreqensy,490
SetPacketType,LORA
SetDioIrqParams,$3FF,0,0,0 преывания пока не используем, просто ждём RxDone или TxDone
//
ограничтель тока
$08E7->address
$38->data
WRITE_REG
//
усилитель приёма
$08AC->address
$96->data
WRITE_REG
//
SetPaConfig,4,7,0,1
SetTxParams,$16,0
SetModulationParams,7,BW_10,1,1
SetPacketParams,30,1,9,0,0

Приём:
ClearIrqStatus
SetRx(0)
GetIrqStatus — ждём RxDone (не ненуля IRQ, как я сдуру, а RxDone=1)
ReadBuffer

Передача:
WriteBuffer
REG_0889 (стр.101 датшита)
ClearIrqStatus
SetTx(0)
GetIrqStatus — ждём TxDone

Это что то вроде скрина с программы сделанной в Algorithm Builder.
Последовательность команд, и конкретные цифры настроек, я думаю понятны.
Это как раз то, что я не нашёл.

REG_0889 — одна из «заплаток» датшита.
Ещё там есть обязательная последовательность для настройки приёмника:
SetPacketType(...)
SetModulationParams(...)
SetPacketParams(...)
У меня она соблюдена.
Но в датшите нет про последовательность
SetPaConfig(...)
SetTxParams(...)
Если поменять местами — глюк.

Вроде всё.
Да. Дальность с этими настройками 7км.
Поставил блок с 17см антенной на подоконник (антенна как раз над рамой) одноэтажного дома и поехал.
В машине с собой блок со спиральной антенной. Одноэтажная застройка посёлка. По пути пригорки,
первый в двух километрах. За ними связь пропадала. На макушках восстанавливалась.

Собственно настройки, влияющие на дальность/скорость передачи вот:
SetRfFreqensy,490
//
SetPaConfig,4,7,0,1
SetTxParams,$16,0
//
SetModulationParams,7,BW_10,1,1
SetPacketParams,30,1,9,0,0

SetRfFreqensy,490
несущая вроде как сама по себе, но для моих конкретных E22 490Мгц много лучше оказалось чем 433Мгц

SetPaConfig,4,7,0,1
SetTxParams,$16,0
тут просто максимум мощности — 22дб

SetModulationParams,7,BW_10,1,1
SetPacketParams,30,1,9,0,0
а вот тут необъятное поле для экспериментов
в основном SF(7) и BW(10) в SetModulationParams
Увеличение SF снижает скорость и увеличивает дальность.
Уменьшение BW снижает скорость и увеличивает дальность.

Вся наша жисть — поиск компромиссов… :)
  • +2
  • 31 августа 2021, 06:55
  • PANYTA