Интерес к LoRa технологии возникает у разработчиков телеметрии для различных устройств: счетчики воды, автомобильные сигнализации, сельскохозяйственные технологии, наручные часы, телеметрия для авиамоделей UAV и даже трансиверы для обмена текстовыми сообщениями среди Geek(ов).
Могу поделиться результатами своей проверки дальности LoRa link(a). Разрабатываю firmware для микроконтроллерного устройства c GFSK+LoRa чипом SX1262 внутри.
В качестве базовой антенны была антенна с SWR 1.468.
В качестве мобильной антенны была задействована телескопическая SMA антенна от RTL SDR приемника. Ничего лучше по KCВ рядом не оказалось.
На частоте 868MHz NanoVNA v2 показывает коэффициент стоячей волны SWR всего 1,484.
Аппаратная архитектура трансвера: GNSS+LoRa+MCU+RS232.
Было весьма трудно найти полигон для испытаний дальнобойной LoRa радиосвязи. Коллеги порекомендовали шоссе М-4 на юго-востоке от Москвы, так как там есть пешеходный мост, который можно задействовать в качестве импровизированной мачты.
Трансивер A был установлен на высоте более 4х метров в точке с координатами 55.5149693921448, 37.71238972034776 прямо на пешеходном мосту. Плата была стационарного трансивера запитана от PowerBank + StepUp DC/DC получилось 12,3V+-0,16V
Трансивер B двигался вдоль шоссе M-4 на юг со скоростью до 60 км/ч. Каждое устройство посылало ping сообщение каждые 15 секунд, состоящее из 32 байт. Каждый трансивер в ping инкапсулировал свои GNSS координаты, так как электронная плата содержала работающий GPS модуль. Дальность ping(а) раcсчитывалась автоматически на уровне firmware.
Чтобы определить факт прибытия пакета я наблюдал за логами, которые микроконтроллер шлет в UART. Подключался к микроконтроллеру через переходник USB-UART. На Android смартфоне у меня для этого было установлено приложение Serial USB Terminal. Также я сам мог на месте инициировать внеочередной ping или изменить энергонезависимые параметры LoRa модуляции так как в прошивке была поддержка развитого интерфейса командной строки CLI. Напарник на мосту с трансивером А тоже переконфигурировал устройство при необходимости. Действия мы координировали через Telegram.
До 5 км приходили ping сообщения на ширине радиоканала 125kHz. Причем до 2800м на стороне подвижного трансивера ping(и) поступали стабильно (каждые 15 сек). От 2800м до 5000м приходил 1 ping из 4..6ти.
Как только перестали приходить ping пакеты (на 5км), трансиверы были переключены на ширину канала 62,5kHz и ping(и) возобновились вплоть до 7,5 км
Делал и другие измерения где мог. Все эксперименты можно отразить на графике. Такие получились результаты производительности LoRa трансиверов.
Distance,m |
bit/s |
byte/s |
63 |
30245 |
3780 |
162 |
17204 |
2150 |
752 |
30245 |
3780 |
195 |
31250 |
3906 |
968 |
17204 |
2150 |
160 |
30245 |
3780 |
1147 |
3780 |
472 |
1755 |
2493 |
311 |
1840 |
3780 |
472 |
2817 |
2493 |
311 |
5070 |
2493 |
311 |
7100 |
183 |
22 |
7575 |
1246 |
155 |
10700 |
183 |
22 |
Когда я приехал в офис и просмотрел через CLI логи в NorFlash файловой системе я увидел, что у стационарного трансивера ping(и) прекратились на расстоянии 2800м. В то же время подвижный трансивер принял последний ping на удалении 7500м. Видимо сказывается более выгодное положение стационарного трансивера. Также подвижный трансивер был запитан от стабильного мотоциклетного акумулятора Delta Dt1207 Nano Gel. В то время как стационарный - от PowerBank+StepUp DC/DC
Несколько фактов про LoRa:
1) стекло блокирует LoRa пакеты (проверял на BW:250kHz, SF:32 Ch/s)
2) можно отлаживать 2 LoRa трансивера соединив их фидером (экранированный проводник).
3) LoRa трансивер за раз может передать принять только 256 байт
4) если у двух трансиверов разные sync word, то приёма не будет.
5) Lora трансивер иногда принимают какие-то случайные числа. Даже если передатчик посылает константы.
Вывод
Пока могу подтвердить, что на дальность передачи влияет ширина канала. Чем уже ширина канала ЛЧМ сигнала, тем дальше работает реальная передача сообщений. Видимо при узкой полосе частот ЛЧМ меньше вероятность зацепить радиопомехи.
Также важна высота установки антенн. Чем выше антенна тем дальше она сможет излучать сигналы.
На испытаниях проверки дальности радио трансиверов важно учесть несколько моментов:
1) Иметь при себе SDR-RTL приемник, LapTop и весь софт для этого (драйверы, SDR++). В случае отсутствия связи SDR-RTL позволит понять, что происходит. Передатчик не передает или приемник не принимает.
2) взять с собой запасное оборудование. У нас в условиях повышенной влажности и низкой температуры периодически отказывал переходник USB-RS232. Также от холода проседало напряжение одного аккумулятора. При температуре -15 провода превращаются в проволоку и откалываются при 4-6 изгибах (особенно USB кабели).
3) Лучше запитыпать платы 12V платы от мотоциклетных акумуляторов. Они легкие и нет пульсаций как у связки PowerBank+StepUp DC/DC
Очень хотелось бы найти в окрестностях Москвы доступные и удобные места с прямой видимостью 10км+ для дальнейшей проверки дальности LoRa трансиверов.
Также был бы признателен, если найдется волонтёр, чтобы проверить со мной LoRa Link при разных модуляциях на берегах Химкинского водохранилища в Москве. Там есть 4,7км прямой видимости. Оборудование у меня есть.
Видимо LoRa будет развиваться. Уже есть LoRa Mesh сети, отслеживание активов через LoRa, орбитальные спутники LoRa Gateway.
Посты про LoRa
https://habr.com/ru/post/598317/
https://habr.com/ru/company/unwds/blog/372645/
https://habr.com/ru/company/first/blog/580662/
https://habr.com/ru/post/568526/
https://habr.com/ru/company/1cloud/blog/465539/
Комментарии (65)
wyfinger
02.02.2022 04:07+1Недавно проверял для себя связь двух модулей E22-400T30D на SX1268 (400 MHz) aliexpress.ru/item/1005002323629887.html с вот такими антеннами aliexpress.ru/item/32986676159.html.
Два километра с прямой видимостью, но через промышленную застройку, связь без потреть, если обе антенны расположены параллельно, если антенны расположить перпендикулярно идет потеря 10-15 процентов пакетов.Eddy71
02.02.2022 18:22+2Если антенны расположены перпендикулярно, возникает кроссполяризация и потеря в канале аж -30 Дб за счет этого. Поэтому антенны всегда должны быть соосны.
aabzel Автор
02.02.2022 23:21Какие у вас были параметры модуляции?
1-spreading factor
2-band width
3-Coding Rate
4-preamble len
wyfinger
03.02.2022 01:52-1E22.setMode(MODE_NORMAL); E22.setAirDataRate(ADR_2400); E22.setTransmitPower(TP_LOW); // 22dbm = 158 mW E22.setTransmissionMode(TXM_NORMAL); E22.setRepeater(REPEATER_DISABLE); E22.setLBT(LBT_DISABLE); E22.setRSSIInPacket(RSSI_ENABLE); ... E22.writeSettings(PERMANENT);
aborouhin
02.02.2022 04:44+1Очень хотелось бы найти в окрестностях Москвы доступные и удобные места с прямой видимостью 10км+
Покупаете билет на смотровую в Сити (только лучше заранее уточнить, дадут ли туда пронести передатчик и не прикопаются ли к его использованию :) ) и отправляете машину ехать в область по Кутузовскому-Можайскому.
А вообще, без доступа в какое-то высотное здание/сооружение 10+ км прямой видимости около Москвы Вам будет найти тяжко, всё же рельеф у нас холмистый. Пощёлкайте разные варианты на linktest.ru - поймёте. Так что если в Сити с передатчиком не пустят - ищите знакомых с квартирами/офисами на высоких этажах и уже по месту смотрите, какая относительно прямая магистраль от них хорошо просматривается.
Javian
02.02.2022 06:26+5Lora передатчики запускают на воздушных шарах, спутниках. Пишут что есть связь по прямой видимости - 150 км получали.
Stratum
02.02.2022 09:05+6Я подтверждаю. SX1278 на мощности 18dBm, частоте 433 МГц и ширине 125 кГц дает передачу телеметрии на 200км по прямой видимости (из стратосферы). Но скорость 20 БАЙТ с секунду. Т.е. в земных условиях дальность ограничивается только прямой видимостью.
Кстати, есть спутниковая сеть Swarm, которая LoRa спутниками обеспечивает прием/передачу информации раз в 20 минут за 5 $/мес. Но с Россией и беларусью они отказываются работатать
Eddy71
02.02.2022 18:29Чего то гугол про них упоминает только то, что SpaseX из купил в августе прошлого года и всё, ни сайта, ни услуг..
daggert
02.02.2022 18:46И они а Lacuna - тестовые. Мы тут, на северах, ждем прихода этих спутников для наших проектов.
Eddy71
02.02.2022 19:57Спасибо, Лакуну нашел (хотя на это название гугол каких то мультиков понасыпал)
https://lacuna.space/daggert
02.02.2022 20:55+1https://swarm.space/ туда-же, вам (:
Stratum
03.02.2022 11:36У них вполне живой проект, есть вся документация, спутники вполне себе летают и работают. Но по каким-то причинам категорически отказываются работать с Россией и Беларусью. А так принцип такой: покупаешь чип за 100$, впаиваешь в свое устройство и общаешься с ним AT-командами. Там еще и GPS есть. Раз в 5...20 минут над каждой точной мира пролетает спутник и на/с него по lora передается/получается небольшое сообщение. Спутник несет сообщение до ближайшей базовой станции. Тарифы от 5$ в месяц.
daggert
03.02.2022 15:14Ну по сути это означает что этого нет у нас. Ну и не только у нас:
This product is currently only available for online sales in the United States, Canada, United Kingdom, Ireland, Denmark, Greenland, Iceland, Germany, the Netherlands, Sweden, Australia, New Zealand, and Antarctica. Swarm is also commercially operational in Brazil; please reach out to info@swarm.space for further information.
aabzel Автор
02.02.2022 23:41Какие у вас были остальные параметры модуляции?
--spreading factor
--Coding Rate
--preamble len
daggert
02.02.2022 10:02+6221км проверенная дальность лично мною. Антенна - китайский диполь с запиткой с конца, высота подъема 400+ метров (+ высота рельефа) на шарах из набора "сооруди сам себе праздник из гелевых шаров" и рыбацкой нитки. Все настройки - самые медленные. Удалось получить 4 пакета из более чем сотни, на 136MHz.
Stratum
02.02.2022 10:21+2Поделитесь, пожалуйста "самыми медленными" настройками.
daggert
02.02.2022 18:02+3SX1276, SF 12, BW 125, частота 139MHz (перепутал про 136), усилитель SPF5189 (хотя маркировка у китая это разряд фантастики). Все подключено через LDO и суперконденсатор.
На приемной стороне такой-же модуль LoRa, с такими-же настройками и антенна-штырь на мачте одного ОПСОСа на ~80м. Пакет - 8 байт.
Около 40% пути - вода. Профиль по Wireless link calculator выглядит так:
на карте связь выглядела так: https://yandex.ru/maps/-/CCU5aTFBdC
aabzel Автор
02.02.2022 23:22Какие были параметры модуляции?
1-spreading factor
2-band width
3-Coding Rate
4-preamble len
synka
02.02.2022 09:25+2Проводил подобные испытания в Ростове-на-Дону. Приемник в машине, передатчик на высоте примерно 1,5м. В обоих случаях использовались модули RAK811 со стоковыми антенами из набора. По городу максимальная дистанция получилась почти 4км. Не прямая видимость, а через обычныую застройку.
aabzel Автор
02.02.2022 15:35Давайте все результаты измерений реальной дальности LoRa Link(ов) сведем в одну общую таблицу:
https://docs.google.com/spreadsheets/d/1caYJx9t9fzNc-g-7rHRa80K604MFfrrm3M9BiRfSP3g/edit#gid=0
Там есть стабильная сортировка можно двигать строки и столбцы, делать разнообразную анатилитку и вычислить корреляцию, что на что влияет.
Далее можно будет построить график и у всех сложится полная картина того на что LoRa способна, а на что нет.
Кому доступ на редактирование пишите gmail(ы) мне в TG: aabdev
aabzel Автор
02.02.2022 23:22Какие у вас были параметры модуляции?
1-spreading factor
2-band width
3-Coding Rate
4-preamble len
jaha33
02.02.2022 09:38+1На ютубе есть канал "Электроника в объективе" нам наглядно замеряли дальность. Есть еще "Угона Нет", там измеряли дальность автосигнализаций с LORA. Тоже было вполне наглядно.
Все это уже обсуждалось неоднократно, да, на LORA можно получить очень высокую дальность и по сравнению с каким нибудь ZigBee или еще чем, у LORA порог входа просто нижайший. Но как уже отметили, пропускная способность крайне низкая. Вторая проблема - на больших количествах разрулить обмен данными очень непросто, особенно если данных много, или есть определенные временные интервалы, за которые данные должны поступать
ECRV
02.02.2022 10:28+2Жалко не показали само устройство. Сам работал с разной телеметрией в России. Нужно ооооочень много внимания уделять питанию прибора и стабильности кварца. Если взять повербанк, то его повышайка сильно замусорит питание, вообще желательно отдельно питание для радио делать, когда речь идёт и помехоустойчивой связи.
Попробуйте напрямую от аккумулятора, исключая импульсные преобразования, через LDO запитать модем. Не исключено что дальность возрастёт.
Stratum
02.02.2022 10:43+1Чипы от Semtech уже содержат в своем составе и TXCO, и коррекцию. Стабильная работа модулей на SX12XX проверена в диапазоне напряжений от 2,8 до 5 Вольт и от -32 до +40гр.С. Но, несоменно, в комнатных условиях при 3V3 модуль будет чувствовать себя комфортней. Кстати, в режиме передачи на максимальной мощности чипы заметно греются.
ECRV
02.02.2022 10:51+5Работать то он, несомненно, будет от любого питания, тем более при передаче. Общее правило для любого радиотракта - убрать помехи по питанию. В dc-dc преобразователях частоты порядка 100кГц, если вы не псих с mt3608, там более 1МГц. Скорость оцифровки у семтеча тоже порядка этих 100кГц. Проблему сложно заметить даже с оборудованием, не говоря уже о тестах на коленке. Можно на ровном месте добавить себе несколько dB шума.
У семтеча, внутри даже LDO есть, но лучше перебздеть
saintbyte
02.02.2022 10:37+2Я вам скажи больше есть спутники с Лора , и там ловят 2000 км сигналы например: https://tinygs.com/packet/129868eb-93c1-47dd-b9c3-81d2161655e4
Stratum
02.02.2022 11:14+3там единственное упомнание про 2000 - это 2000mW - мощность передатчика. Мне сложно поверить в такую дальность.
А вот к коммерческим спутникам SWARM мне не удалось подключиться.
Darka
02.02.2022 11:12+1Есть же уже готовый Мештастик. Причем достаточно популярный например в Москве и Питере судя по живой карте нод и активному телеграм сообществу. Зачем делать свой велосипед, если можно принять участие в проекте который пилит не один человек.
Darka
02.02.2022 12:55А кстати там еще есть свои сабканалы, со своим шифрованием. Можно невозбранно отсылать телеметрию уже через готовую mesh инфраструктуру (если она уже есть).
aabzel Автор
02.02.2022 12:58У прошивки Meshtastic есть ряд особенностей
1) отсутствует интерфейс командной строки CLI поверх UART (Как у плат Ublox, Flipper, NanoVNA и пр).
2) написан на С++, что делает его бесполезным для микроконтроллеров с малыми ресурсами.
3)Также код
https://github.com/meshtastic/Meshtastic-device.git
не покрыт юнит тестами, что делает его полностью недоверенным.
Meshtastic похож на очередной Arduino проект.
Darka
02.02.2022 15:54+1Ну напишите тесты, в чем проблема, это опенсорс. Ребята вроде MR нормально принимают.
aabzel Автор
02.02.2022 13:06Мне от LoRa надо существенно больше чем то, на что способна прошивка meshtastic. Вот ссылка на задачу https://habr.com/ru/post/648247/
Надо как-то по LoRa непрерывно передавать 3 kByte/s на 10км+
sim2q
02.02.2022 13:38+3Надо как-то по LoRa непрерывно передавать 3 kByte/s на 10км+
Только не в моём городе!
Вы же тут не одни
aabzel Автор
02.02.2022 13:14Тем более этот meshtastic по ходу и не работает толком. Люди даже в Москве по полтора месяца ждут сообщений в чате.
Вот чат с конца декабря 2021.Darka
02.02.2022 15:59У меня нормально сообщения хоядт через Mesh (я не в Москве), знаю что проблема есть с прошивкаи t-echo, ESP32 девайсы работают нормально.
belav
02.02.2022 11:19+1В сети много проектов по испытанию дальности связи. Вот, тоже стало интересно применить в проекте. Но не могу понять, можно ли на sx127x сделать сеть, где несколько мастеров на одном канале? Как бороться с коллизией?
Stratum
02.02.2022 11:27+2можно распределять по времени.
belav
02.02.2022 11:34Не совсем понял как. Это одно устройство должно постоянно слать пакеты в эфир для синхронизации?
У меня задача:
Всё устройства в режиме ожидания. К примеру, в двух сработали датчики и они отправляют пакеты одновременно. Не дождавшись ответа будут снова долбить. Как вариант делать случайную задержку для повторной отправки.
Stratum
02.02.2022 12:03+1я разрешаю отправку слейвам только в нужный момент времени (он же и адрес). Переиодически слейвы просыпаются послушать сигнал точного времени от мастера (на самом деле он не слишком точный) или получить команду.
Т.е. у меня система не слишком реального времени и лаг может достигать минуты
belav
02.02.2022 12:09Ну, у меня первая мысль была натянуть modbus, но время опроса получается большим. Для инерционных сигналов это допустимо, а вот срабатывание некоторых датчиков хочется увидеть с минимальной задержкой в пару секунд.
В документации не нашёл, трансивер смотрит эфир перед отправкой пакета или нет.
Stratum
02.02.2022 12:17можно чаще опрашивать, тем более если устройств не слишком много и пакеты короткие. И не обязательно посылать синхроимпульс в каждом цикле. Какой-то лаг будет в любом случае.
belav
02.02.2022 12:24Часто посылать не получится, эфир не хочу захламлять.
Попробую так:
Сервер иногда будет посылать синхронизирующие пакеты, чтобы синхронизировать часы в устройствах. Ну и как Вы предложили, сделаю временнОе разделение каналов. Каждое устройство будет иметь свой адрес, который будет соответствовать своему отрезку времени.
Вроде, должно работать. Надо только посчитать размеры окон и ошибку синхронизации.
aabzel Автор
02.02.2022 14:30В LoRa чипах sx1262 есть функция CAD. Channel Activity Detection. Достаточно ее включить. А делее классический CSMA/CD (Carrier-sense multiple access with collision detection) протокол.
https://www.youtube.com/watch?v=iKn0GzF5-IU
Delsian
02.02.2022 12:12+5Эксперименты от Капитана Очевидность:
"Чем уже ширина канала, тем дальше работает передача. Чем выше антенна тем дальше она сможет излучать."
Могу подсказать еще пару выводов:
"От свежей батарейки передатчик работает дольше, чем от севшей. Если не посылать пинги, то приемник не сможет их принять"Stratum
02.02.2022 12:26Как ни странно, но у меня получились другие выводы: чем шире ширина канала, тем дальше передача. Думаю, что эти из-за того, что LoRa использует модуляцию с расширенным спектром.
aabzel Автор
02.02.2022 12:37Stratum
02.02.2022 13:10Да, чем больше энергии запихнуть в узкую полосу, тем выше сигнал/шум. Тем не менее, на практике диапазоны LoRa забиты под завязку радиотелефонами, сигнализациями, дверными звонками и т.д. При этом чем шире полоса линейной частотной модуляции, тем выше помехозащищенность. Правда, при работе на большой мощности можно и по шапке получить за забивание канала...
" LoRa (Long Range) - это метод модуляции, основанный на технике расширения спектра (spread spectrum modulation), при которой данные кодируются широкополосными ЛЧМ-импульсами (линейная частотная модуляция). Устройства LoRa имеют высокую помехозащищенность: демодуляция сигналов возможна на уровне 20 дБ ниже уровня шумов. "
aabzel Автор
02.02.2022 22:55Может вам также очевидно как на дальность LoRa Link(а) влияет такие параметры как
a) опорная частота гетеродина,
b) CodingRate,
c) длина преамбулы.
d) конструкция антенны
Если да, то я был бы признателен за комментарии про эти параметры.
Stratum
03.02.2022 11:27+1Вот параметры, на которых я получал максимальную дальность (201 км):
433МГц, codingRate 4/5, Spreading Factor 12, преамбула 8 символов, мощность 18 dBm, на передатчике вертикальная дипольная антенна из двух отрезков провода резонансной длины (высота ~15+ км), на приемнике биквадратная антенна на двухметровом штативе. Время передачи 100 символов текста около 10 секунд. Чистое небо. Приемник расположен за городом посреди большого поля на высоком месте.
smutek_blaznu
04.02.2022 17:49+1Кто-нибудь может посоветовать литературу по антеннам? Начальный уровень почти ноль. Хорошо бы еще почитать на хабре обзорчик по узконаправленным антеннам для стационарной LoRa в городе. Быстро-гугление дало «Antenna Handbook» MCRP 8-10B.11 Но хотелось бы что-то более LoRa-специализированное.
smutek_blaznu
05.02.2022 01:24«Чем уже ширина канала, тем дальше работает передача
Здесь ширина канала — это не совсем то, о чем вы подумали. Имеется ввиду, я так понимаю, ширина качания канала, то есть глубина частотной модуляции несущей еще до того, как к ней будет применен полезный сигнал. То есть в смысле вашей фразы „мгновенная“ ширина канала постоянна. Фишка в том, как я понимаю, что несущая переменной частоты создает переменную (в соответствии с изменяющейся частотой) „карту приема“ сигнала. Из-за переменной (в соответствии с изменяющейся частотой) интерференции переотраженных сигналов кратковременно в пределах периода изменения частоты принимаемый сигнал может драматически усилиться и, если в этот конкретный момент на этой конкретной частоте вам повезет с помехами, то тогда есть шанс порции данных быть принятой.
out0f0rder
03.02.2022 05:46У Semtech есть адекватный калькулятор, который вам покажет и рассчетную чувствительность и бюджет линка и время передачи для заданных параметров модуляции.
Поиграть калькулятором полчасика будет значительно полезнее, чем где-то ездить и тыкать пальцем в небо, не зная параметров прямой видимости и помеховой обстановки для конкретной местности. Тем более рядом с городом и тем более через лес.
Лора может работать на безумную дальность, но для этого ее нужно, как говорят, правильно готовить, понимая как SF, BW и CR влияют на скорость и бюджет линка.
Ограничение на длину пакета легко обходится о чем у семтека есть отдельный аппноут.
Вообще, советую начать игры с лорой с sx127x, у них значительно лучше и интерфейс и документация, в отличие от sx126x.
habrabkin
Так на прямой видимости всегда всё будет работать)
bak
В городе с кучей бетонных домов 433 модуль у меня бил на 1 км. Со штатной антенной - 1 в квартире на 3м этаже, другой с собой взял.
На даче через кучу деревянных домов и лес - 2км было.
aabzel Автор
Какие у вас были параметры модуляции?
1-spreading factor
2-band width
3-Coding Rate
4-preamble len
bak
Впринципе spreading factor и 10 тоже норм. А вот 12 не взлетел.
Полосу уже сделать тоже не получилось, 31 это последнее стабильное что работало. Preamble length увеличение с дефолтного помогло, дальнейшее увеличение уже бесполезно. Coding rate особо не заметил разницы.
Модули брал от TTGO (которые с esp32), пробовал заводить отдельные stm32 + lora и чето не полетело.