AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр

AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр Вертолеты

Что такое lora?

Разработанная компанией Semtech для использования в своих чипах SX1272 и SX1276, это технология связи на большие расстояния. Поверх LoRa можно реализовать протоколы более высокого уровня, такие как LoRaWAN.

Среди особенностей технологии LoRa – передача небольших пакетов данных с низким энергопотреблением. По данным производителя, срок службы батареи может составлять несколько лет, а радиус действия может достигать 10 километров на открытом воздухе. В зависимости от региона, частота составляет 433 или 868 МГц (европейская версия) или 915 МГц (американская версия).

Как это работает? Подробнее об этом ниже.

Для тестирования были выбраны модули RN2483. Они хороши тем, что просты в программировании и поддерживают разные режимы работы. RN2483 содержит чип SX1276 и контроллер в одном корпусе, управляется командами UART, что позволяет подключить его к любому устройству (ПК, Arduino, микроконтроллер, etc). Можно купить модуль без обвязки, это дешевле, однако паять было лень, так что на eBay был заказан комплект из пары готовых плат.
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
Это позволяет подключить модули как к ПК по USB, так и к любому устройству.

Состав и описание набора

Комплект RAK START содержит:

1. Шлюз — RAK2245 Pi HAT
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
Характеристики:
— Полнофункциональный модуль многоканального концентратора LoRaWAN® на базе SX1301. Процессор базовой полосы SX1301 имитирует 49 демодуляторов LoRa®, 10 параллельных трактов демодуляции, поддерживает 8 каналов восходящей линии связи и 1 канал нисходящей линии связи.
— Мощность передачи до 27 дБм
— Чувствительность приема до -139 дБм
— Повышенная шумостойкость за счет улучшенной цепной фильтрации RF (дополнительная ПАВ)
— Полная поддержка стека LoRaWAN 1.0.2
— Поддерживаемые диапазоны: (EU433, CN470, IN865, EU868, AU915, US915, KR920, AS920 и AS923)
— Интегрированный модуль GPS Ublox MAX-7Q
— 40-контактный гнездовой разъем (полностью совместим с Raspberry Pi)
— Модернизированный радиатор для лучшего рассеивания тепла и снижения теплового шума2. Узел — RAK811 LPWAN Evaluation Board (Wisnode/Wisduino)
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
Особенности:
— Форм-фактор Arduino Uno (совместимая распиновка)
— Интегрированный микроконтроллер STM32 (может работать как Arduino-шилд или автономно)
— Полностью управляемый через AT-команды
— Прошивка с открытым стеком для разработчиков
— Максимальная выходная мощность 100 мВт (20 дБм), регулируемая от 5 до 20 дБм.
— Высокая чувствительность -148 дБм
— Низкое энергопотребление: 11 мкА в режиме ожидания
— Многоканальный двойной буфер данных (256 байт каждый).
— Модуляция LoRa / FSK / GFSK / OOK, двусторонняя связь.3. Raspberry Pi 3B и SD-карта.
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
В качестве управляющей платформы шлюза выступает одноплатный компьютер Raspberry Pi 3B .
Вот его характеристики:
— Broadcom BCM2837B0, Cortex-A53, 64 бита, 4-ядерная SoC 1.4ГГц;
— 1ГБ LPDDR2 SDRAM;
— 2.4ГГц/5ГГц IEEE 802.11 b/g/n/ac беспроводная LAN (WLAN);
— Bluetooth Low Energy v4.2 (BLE);
— Gigabit Ethernet через USB 2.0 (максимальная пропускная способность 300МБ/с);
— 4 порта USB 2.0;
— Расширительный 40-контактный разъем GPIO;
— Полноразмерный HDMI, порт дисплея MIPI DSI, порт камеры MIPI CSI;
— Выходной 4-полюсный порт стерео звука/композитного видеосигнала;
— Разъем MicroSD карты для ОС и хранения данных;
— Возможность Power over Ethernet (PoE) (необходима отдельная плата PoE HAT);
— Требования к источнику питания — 5В/2.5А DC через micro USB или GPIO.4. Антенны на 868МГц, антенна GPS, провода, перемычки, microusb-кабели
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
В комплекте со шлюзом стандартная керамическая GPS-антенна и спиральная антенна на 868 МГц, затянутая в термоусадку. С узлом идёт антенна на 868 МГц в пластиковом корпусе с разъемом SMA (обратный SMA). Также в комплекте идут перемычки для конфигурации UART узла и провода для подключения его к внешней платформе.

Смотрите про коптеры:  Самодельный FPV квадрокоптер

В коробку с логотипом RAKWireless вложены описание заказа и визитная карточка. Вес всего комплекта составляет 280 грамм.

Шлюз и узел с установленной антенной.
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр

Aglora. или прототип простого самодельного спутникового lora-трекера

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

На своей основной работе я возглавляю и руковожу группой, которая занимается интеграцией спутников в систему слежения за транспортными средствами. Тот факт, что я занимаюсь этим с 2006 года, свидетельствует о вашей профессиональной деформации. Чем раньше я к чему-то прикасаюсь, тем быстрее превращаю это в трекер, увы. Вот что произошло в очередной раз. Экспертиза в какой-либо области, похоже, так это называется в наши дни.

LoRa становится все более распространенным словом, которое мы слышим вокруг себя. Мы начинаем с Хабры и заканчиваем прайс-листами различных поставщиков оборудования IoT.

Обещания линейки заинтересовали меня, и я захотел проверить их. LoRa модули можно легко попробовать на известном китайском маркете, готовые LoRa модули доступны для бесплатного скачивания. Для проверки дальности, просто мигание лампочки на расстоянии, как-то не очевидно, так что напрашивается подключение GPS-приемника и самостоятельный расчет расстояния. Вы, наверное, заметили, как здесь пахнет прототипом спутникового трекера, который передает данные через LoRa, а не GSM.

Применения могут быть самыми разными. Сегодня существует множество персональных трекеров, работающих через GSM. Если вы не знаете, что это такое, я написал краткое описание того, как они работают для моих клиентов. Но они не всегда практичны в использовании.

Я смотрю на свою семью. В лесу, где нет сотовой связи, мы часто собираем грибы или просто гуляем. Кроме того, было бы непрактично платить за SIM-карту в течение всего года только для того, чтобы совершить несколько поездок. Я до сих пор получаю телематические тарифы по специальным ценам! По тем же “гражданским” тарифам операторы любят отключать сим-карту после нескольких месяцев бездействия. Осенью я кладу трекер на полку, а весной заменяю сим-карту. Сложно. Чрезмерно. Много внешних факторов.

Затем я решил создать простой трекер, который будет работать с аналогичными, позволяя, например, не разлучаться во время похода в лес. Такие карты полезны не только для пеших туристов, но и для квадроциклистов, мотоциклистов и снегоходчиков. Кто не может сохранить полный обзор всей своей компании. В шлеме на голове, что часто бывает во время таких вылазок, часто можно даже не дозвониться из-за шума мотора. Кроме того, пропущенный звонок не виден до конца поездки.

IoT-котика началась, конечно же, с небольшого пересказа темы и кик-старта о популярной теме на Хабре. Она была настолько популярна, что сначала я сам прочитал статью в новостях Хабры, а потом еще несколько человек прислали мне ссылки на нее в своих личных аккаунтах. Акт “снятия” называется “снятие”. Как можно не любить кошек?!

Краткий обзор поможет тем, кто еще не читал: Модули LoRa (от Long Range) – это запатентованные технологии SEMTECH. Малая мощность, большой радиус действия и низкая скорость передачи – вот цена дальнего радиуса действия. Так что это только для IoT-приложений. На планете есть цивилизованная жизнь, и ваше устройство, использующее модуль LoRa, может быть интегрировано в общую сеть LoRaWAN.

Сеть LoRaWAN чем-то похожа на сотовую сеть, только устройства подключены к открытым базовым станциям, и каждый может получить доступ к одной или нескольким из них из своего дома. Ни трафик, ни электричество не потребляются, а частоты открыты.

Интересно, когда такие станции уже присутствуют в вашем районе. Кроме того, сами базовые станции – сложные устройства, и их стоимость со значительным отрывом превышает стоимость модулей для конечного устройства. В общем, это не наш вариант. В глуши леса базовая станция и полноценная сеть LoRaWAN излишни и не нужны. Устройства LoRaWAN могут общаться напрямую, если мы не будем соблюдать ее правила. Вот это наша тема!

В первом прототипе я решил передавать пакеты со своими координатами и запоминать другие устройства, которые могут принимать сигнал LoRa. Этого достаточно, чтобы понять, будет ли все работать и как. Пакеты данных будут сведены к минимуму. В этой ситуации нет потери данных, мы получаем что-то вроде UDP. Есть несколько потерянных пакетов, ничего страшного.

Теперь рассмотрим пользовательский интерфейс. Теоретически маяк должен работать всегда. Кроме того, его можно установить поверх рюкзака, чтобы увеличить радиус действия. Каждый раз, когда я останавливаюсь и снимаю его, чтобы посмотреть координаты других устройств, ну, вот такая штука. Использовать “работает – не трогай” и “лень” – наше главное кредо! Программа для телефона и bluetooth были бы идеальным решением в этом случае. Если нужно, достаешь из кармана мобильный телефон, подключаешь, понимаешь, куда попал.

Общая идея работы устройства
Общая идея работы устройства

Это простое модульное устройство. Нет необходимости устанавливать модуль bluetooth или GPS. Давайте сделаем это.

Важный момент: когда вы что-то собираете, это “что-то” должно как-то называться в вашей голове. Рабочее название устройства появилось само собой. AGLoRa расшифровывается как Arduino, GPS и LoRa.

Моей целью было собрать все из дерьма и палочек с минимальными усилиями. Вместо того чтобы заказать Arduino Nano 33 BLE, я использовал то, что было в заветной коробке “arduino”, которая наверняка есть у каждого. В ней были GPS, Bluetooth, несколько UNO и Nano, которые я купил для другого проекта. Достаточно, чтобы сделать несколько прототипов.

На этом длинное вступление закончилось. Вы закончили? Давайте упаковывать!

Мы должны начать с разговора о том, ради чего мы все здесь собрались. LoRa. Поскольку человечество развивалось, теперь у нас есть такие полезные модули, как E220-900T22D или E433T30D с возможностями UART и заранее написанными библиотеками для Arduino. Сделать наши мигающие лампочки будет проще простого!

Первый модуль работает на частоте 868 МГц (сейчас это разрешенная частота в России), а второй – на 433 МГц. Исходя из теории, вы должны иметь возможность использовать 433 в лесу без помех. В городе угадать частоту 433 МГц сложно, так как она забивается другими устройствами.

О ATmega168 не может быть и речи, поскольку у него недостаточно памяти для нашего скетча. Что касается входов, мы не используем почти ничего. Есть два программных последовательных порта для GPS и LoRa, а также аппаратный порт Bluetooth.

Используемые модули
Используемые модули

Модули G PS тоже, любые, все они NMEA. Дешевый приемник, например NEO-6M, оставит вас разочарованным, потому что он ищет спутники более полусуток и сразу теряет их. Следует приобрести что-то более дорогое. Если вы используете модуль от Ublox, вам нужно подключиться через USB, отключить в настройках двоичный протокол, оставив только NMEA, и установить скорость передачи 9600 бод. На самом деле, писать больше о GPS не имеет смысла, так как все обрабатывается стандартными библиотеками.

Исследуя bluetooth, я обнаружил, что iPhone поддерживает только BLE (bluetooth low energy). Но на самом деле, это тоже не так уж плохо. Оба модуля HC-05 и AT-09 работают, хотя и отличаются тем, как они видны “со стороны телефона”. Существует только одна плата ZS-040, к которой припаяны оба модуля, поэтому в Arduino они выглядят одинаково и могут быть взаимозаменяемы.

Собственно, всё. Соединять по инструкции с https://github.com/Udj13/AGLoRa/, смысла всё сюда копировать не вижу, там нет ничего сложного. Канонично подключать модуль LoRa с резисторами подтяжки, но у меня на всех платках заработало и так.

Первый прототип AGLoRa
Первый прототип AGLoRa

В качестве источника питания я пока подключен к KRLA. В любом случае, для экспериментов лучше использовать power bank для зарядки моих прототипов.

Вы собрали оборудование – пришло время написать скетч. Так же обстоит дело и здесь. Помимо библиотек и готовых примеров, мы собрали их воедино.

Я намеренно оставил эскиз в одном файле, чтобы было проще копировать и вставлять его в устройства. Ругайте меня, если хотите, но я намеренно не отделял скетч от данных устройства. Что касается остальных элементов говнокода, есть только один преднамеренный недостаток, за который я готов понести полное общественное порицание и исправить с вашей помощью!

Эскиз нельзя заполнить при подключенном Bluetooth. Следовательно, перед заполнением его необходимо отключить. На основном последовательном порту он зависает.

Вы сможете определить, какой модуль не сработал, и вообще, что делает устройство в логах, если в скетче включен режим DEBUG_MODE. Вы действительно думаете, что все будет работать с первого раза?

Кото-контроль проверил и одобрил
Кото-контроль проверил и одобрил

Итак, принцип на сегодня прост. Важно слушать эфир, запоминать голоса, которые мы слышали, смотреть на свои координаты и отправлять их остальным. Мы посылаем состояние нашей памяти по bluetooth каждые несколько секунд, чтобы телефон мог его видеть.

Теперь о самом грустном. Телефон. Телефоооон! Если вы не знаете, как программировать мобильные телефоны, невозможно завершить проект по программированию. Это правда, что я баловался с swift и сделал несколько небольших программ для себя и своей работы, но я нахожу Android немного сложным.

На этот раз я не могу обойтись без Android, я же не просто делаю его для себя. Изучение Kotlin, создание двух версий приложения, а затем отладка и настройка в parallel…. Бррр, не очень хорошая перспектива! Я признаю, что мне очень жаль! Разве я не могу этого сделать? Что такое хобби, если оно съедает меня заживо? !

Когда я наткнулся на видео о Flutter в игре Tic-Tac-Toe, я был опечален и подавлен. На самом деле, это было очень живо и развивалось! GPS и Bluetooth, ладно, как-нибудь справлюсь. Но, как оказалось, все уже было сделано. Мне не пришлось ничего изобретать. Библиотеки сами справляются с кроссплатформенной работой, когда вы пишете на Dart. Вот это сказка! Я читаю уже неделю, и пока все кажется простым. Там есть исчерпывающие примеры для Bluetooth, называется flutter_blue.

Современные программисты заставляют меня завидовать моей молодости, когда у меня был только компакт-диск с “библиотекой программиста” и приходилось изобретать колесо снова и снова. Теперь у вас есть все необходимое – просто сделайте это!

И тогда мы просто идем вперед и делаем это. Примеры есть, библиотеки есть, даже я разобрался. “Тыкать и тыкать”, как говорится! Да, мне пришлось написать много кода, но я хотел сделать это как можно быстрее. В итоге я сделал приложение и выложил его в App Store. Приложения сейчас выкорчевываются, несмотря на то, что не сразу были опубликованы, спасибо вам, добрые люди из Apple!

Внезапно из желания попробовать, что такое LoRa, был создан действующий прототип. И это даже не везде, за что можно стыдиться.

AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр

Код в этой статье не нужен, хотя она и техническая. Github – единственное место, где все есть, и нет никаких деталей, о которых стоит беспокоиться. Передача данных на телефон – единственный непонятный момент. На стороне телефонного приложения мы получаем список целочисленных данных. Начало и конец данных, которые мы отправляем в bluetooth, никак не связаны между собой. Более того, если немного не задержать данные в скетче Arduino, то можно увидеть, что данные приходят в смешанном порядке, что привело к нескольким часам, потраченным на попытки выяснить, почему мой парсер не работает.

Я просто вставлю небольшой кусочек кода, который может пригодиться тем, кто хочет использовать flutter_blue с внешними датчиками.

Из Arduino мы разбиваем координаты с плавающей точкой на четыре разных байта и отправляем их по отдельности. Вот примерное представление о том, как это выглядит:

union cvt {
    float val;
    unsigned char b[4];
  } x;

x.val = package.lat;  
Serial.write(x.b, 4);

Как обычно, я нашел это заклинание на stackoverflow, но оно работает. В результате мы можем собрать нормальные координаты на другой стороне.

Uint8List coords = Uint8List.fromList(navData.sublist(1, 9));
List<double> floatList = coords.buffer.asFloat32List();

final double latitude = floatList[0];
final double longitude = floatList[1];

Теперь у нас есть устройство, которое функционирует и способно передавать свои координаты. Можно включать или отключать GPS и Bluetooth в зависимости от задачи, не изменяя программу.

Существует рабочее приложение для iOS и Android, которое показывает расстояние и направление между устройствами. В общем, вы уже можете им пользоваться.

В следующем видео я демонстрирую тесты дальности на частоте 433 МГц. Для этого теста я проехал 5 км, и соединение работало. Хотя я бы поехал и дальше, но у меня закончилась дорога. Антенна передатчика находилась на высоте второго этажа, что, как мне кажется, может быть достаточно далеко от 5 километров из-за рельефа местности и листвы летом. В целом, я не думаю, что все так плохо! Как я уже говорил во введении, для этого не требуется никаких специальных радиотехнических знаний, только модуль малой мощности, продающийся в интернете, и короткая антенна. Вы можете не верить, но мне это кажется немного волшебным.

На самом деле, этот тест на дальность был первым, к чему я стремился. Ошибок нет, поэтому мы можем продолжить работу над устройством.

В процессе создания почти всегда есть место для улучшения. В первую очередь я добавлю сохранение и отображение истории движений, что необходимо лично мне.

Его стоило показывать друзьям, только когда они просили меня установить что-то подобное для поиска дрона. Друг часто летает в горы, обычно за границу, а там нет мобильной связи или она везде дорогая. О GSM-трекере не может быть и речи.

Один из них подсел на идею создания ячеистой сети трекеров. Также интересно.

Когда он обычно ходит за грибами в лес, где не ловит сигнал сотового телефона, мой отец попросил меня разрешить ему отправить несколько простых сообщений. Поскольку я являюсь волонтером местной команды LizaAlert, я могу подтвердить, что гораздо проще выполнить его просьбу, чем искать его с фонариками, если что-то случится. Возможно, будет проще дать ему рацию в рюкзак.

И в финале. Почему я пишу на Хабре? По той же причине, по которой я показал его своим друзьям. Сложив все это вместе, я получил довольно неплохой промежуточный результат. Определить, насколько такое устройство может быть интересно не только мне. Я не подумал о возможностях дальнейшего развития, может быть, вы мне их объясните? Когда комментарии интереснее самой статьи!

Комментарии. Может быть, я где-то допустил ошибку, может быть, я сделал что-то принципиально неправильное….. Проект делался тихонько вечером после работы, прошло почти полгода, конечно, глаз замыливается.

Очень интересно посмотреть, как GPS и LoRa работают вместе. С их помощью можно сделать кучу забавных и полезных вещей. Имея некоторое представление об этом прототипе, я заинтересован в том, чтобы принять участие в их создании!

Еще один момент: возможно, это устройство у кого-то пропало. Код телефона находится на github, и вы можете скомпилировать его самостоятельно.

Я разместил готовое приложение для Android в разделе “релизы” проекта. Ранее я упоминал, что приложение доступно в App Store для тех, у кого есть устройства iOS, а на GitHub есть ссылка на приложение.

Для определения расстояния приложение запрашивает доступ к Bluetooth, что вполне логично, а также геолокацию. Без доступа к геолокации будут отображаться только координаты других устройств AGLoRa.

Следите за развитием проекта, посещая репозиторий – это всегда приятно!

Esp32 и технология lora в arduino ide

Скопируйте приведенный ниже код в IDE Arduino. Скетч вдохновлен примером из библиотеки LoRa. В каждом сообщении отправляется сообщение “hello”, и количество сообщений растет.

Давайте пробежимся по коду.
Подключаем необходимые библиотеки.

После определения модуля LoRa необходимо определить контакты. Вы можете оставить свою схему как есть, если она идентична нашей.

Инициализируйте счетчик (с нуля);

Setup () запускает монитор портов.

Модуль LoRa должен быть установлен с помощью штырей.

Наконец, мы инициализируем модуль приемопередатчика с заданной частотой.

Пакеты данных от приемопередатчиков LoRa принимаются в пределах их радиуса действия. Независимо от того, откуда они приходят, они принимаются. Установив слово синхронизации (от 0 до 0xFF), вы можете обеспечить прием пакетов только от платы-отправителя.

И получатель, и отправитель должны использовать одно и то же слово синхронизации. Таким образом, получатель игнорирует любые пакеты, которые не содержат это слово.
Затем в loop () отправляем сообщение. Вы инициализируете его с помощью метода beginPacket ().

Печать данных в пакет осуществляется с помощью метода print (). После приветственного сообщения мы отправляем счетчик.

Наконец, мы завершаем формирование пакета с помощью метода endPacket().

Во время каждого 10-секундного цикла сообщение счетчика увеличивается на единицу.

Lora plc гибридное решение для систем управления освещением

Немного о системах управления наружным освещением

Управление освещением на открытом воздухе предполагает учет многих факторов, таких как тип объекта, его расположение, условия работы системы освещения, качество и тип освещаемых поверхностей и т. д.

Приложения городского освещения, оснащенные беспроводными системами управления освещением, требуют надежного покрытия (LoRaWAN, GSM, NB-IoT). всей площади объекта, а также высокой надежности ответа отправленных команд в существующей сети оператора связи.

Освещение открытых парковок, с другой стороны, требует локализации системы управления (LoRaWAN Local, PLC), поскольку в этом случае удобнее работать без оператора.

Гибридные или комбинированные системы управления. Когда человеку необходимо одновременно управлять городским и местным освещением, как это делается? Например, когда две системы должны быть развернуты одновременно в одном месте? Причины могут быть разными, например, труднодоступные участки, гальванические развязки и т.д. В настоящее время не существует универсального протокола связи, который помог бы нам разработать комплексное решение с возможностью управления любым типом осветительной установки через единый интерфейс. В результате, как правило, заказчики вынуждены тратить время и деньги на установку и поддержку сразу нескольких систем управления на основе различных протоколов и с различными интерфейсами.

Мы решили следовать здравому смыслу и учли это при разработке нашей платформы, включив в ее архитектуру возможность поддержки различных протоколов управления в рамках единого пользовательского интерфейса.

Краткая теория

Для начала стоит пояснить различие понятий «LoRa» и «LoRaWAN».

Технология LoRaTM (Long Range) и метод модуляции имеют одно и то же название. Метод модуляции LoRa, запатентованный компанией Semtech, основан на модуляции спектра распространения и чирпированном спектре распространения (CSS), в котором данные кодируются широкополосными импульсами, частота которых модулируется в течение определенного периода времени.

Преимуществом этого решения по сравнению с технологией прямого распространения спектра является возможность защиты приемника от отклонения частоты от номинального значения. Кроме того, упрощаются требования к тактовому генератору, что позволяет использовать недорогие кварцевые резонаторы. В качестве примера прямой коррекции ошибок (FEC), LoRa работает в субгигагерцовом диапазоне частот (утверждение о субгигагерцовом диапазоне не совсем верно, существуют трансиверы SX1280/SX1281, работающие на частоте 2,4 ГГц).

В отличие от большинства систем с частотным сдвигом ключа (FSK), LoRa демодулирует сигналы до 20 дБ ниже уровня шума, тогда как большинство систем способны демодулировать сигналы только до 8-10 дБ выше уровня шума. Модуляция LoRa определяет физический уровень (physical layer, PHY, OSI level 1), который используется в различных сетевых архитектурах – ячеистой, звездообразной, “точка-точка” и т.д.

Высокая чувствительность LoRa (-148 дБм), а также высокая стабильность связи на больших расстояниях делают ее идеальной для устройств с низким энергопотреблением.

Модуляция LoRa определяет физический уровень передачи данных, в то время как LoRaWAN™ это открытый протокол для высокоемких (до 1 000 000 устройств в одной сети) сетей с большим радиусом действия и низким энергопотреблением, который LoRa Alliance стандартизировал для малопотребляющих глобальных сетей (Low Power Wide Area Networks, LPWAN). LoRaWAN сеть организована как сеть типа звезда и включает различные классы (А, B и C) узлов для оптимизации компромисса между скоростью доставки информации и сроком работы при батарейном питании.
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
Чтобы организовать связь «точка-точка» достаточно двух недорогих LoRa-модулей, широко-представленных на Aliexpress. В принципе, если один из модулей будет подключен к сети интернет, он уже будет представлять собой одноканальный LoRa-шлюз. Но как быть, если есть необходимость сбора показаний с большого количества сенсоров? В этом случае придется решать проблемы одновременной работы множества сенсоров, их идентификации в сети, шифрования данных и организации протокола их передачи.

Эти проблемы уже решены в чипах многоканального шлюза LoRaWan SX1301/SX1302 от Semtech. Эти чипы стоят намного дороже SX1276/SX1278, стоимость которых начинается от 100 долларов.

В качестве узла можно использовать широко доступные на Aliexpress модули, представляющие собой комбинацию управляющего микроконтроллера, реализующего протокол LoRaWAN, и трансивера, или использовать уже упомянутые трансиверы на базе SX1276/SX1278 и библиотеки для внешнего микроконтроллера, реализующего протокол LoRaWAN. Компания RAKWireless предоставляет шлюзы и узлы для технологии LoRaWAN.

Настройка и подключение узла


Подробную информацию по началу работы с WisNode можно найти

. Указав их описание и название, необходимо зарегистрировать приложение и устройство. В одно приложение можно включить несколько устройств. После успешной регистрации получаются три ключа, которые используются для аутентификации устройства LoRaWAN.

Наконец, вы можете протестировать передачу данных. Для передачи данных в сети LoRaWAN шлюз не требуется, главное, чтобы в радиусе действия узла был доступный шлюз.

WisNode подключается к ПК через micro-usb, и драйверы преобразователя USB-UART устанавливаются автоматически. Если они не установлены, вы можете установить их вручную. Как только драйверы будут установлены, в системе появится виртуальный com-порт. Подключитесь к этому порту с помощью терминальной программы RAK Serial port tool, входящей в состав программного обеспечения.

Для того чтобы создать узел, необходимо указать его режим и регион. Затем укажите ключи устройства, полученные при регистрации в TheThingsNetwork, и подключитесь к сети. Данные можно передавать и принимать в TheThingsNetwork после успешного установления соединения.

Настройка и подключение шлюза

Подробная документация доступна на английском языке на официальном сайте

. На карте micro-SD уже есть образ Raspberry Pi OS, а также необходимое программное обеспечение для RAK2245 Pi HAT. Если программное обеспечение необходимо обновить, вы можете загрузить последнюю версию с сайта rakwireless и сохранить ее на флэш-накопителе с помощью программы etcher.

Обязательно подключите антенны перед включением питания шлюза.

Передача данных

Перевод был осуществлен с помощью простой программы на языке Python:

Исходный код
import serial
from time import sleep

def deviceSend(device, cmd):
        try:
	  print cmd
          device.write(cmd   "rn")
          line = device.readline()
          if line is not None and len(line) > 0: 
            r = line.decode('utf-8').strip()
            print "> "  r        
            return
        except Exception as e:
	  pass

if __name__ == "__main__":
  port = serial.Serial(port="COM20", baudrate=57600, timeout=5)
  deviceSend(port, "sys reset")
  sleep(2)
  deviceSend(port, "mac pause")
  deviceSend(port, "radio set freq 868000000")
  # Output power, -3..15
  deviceSend(port, "radio set pwr -3")
  deviceSend(port, "radio set mod lora")
  # sf12, sf7  
  deviceSend(port, "radio set sf sf7")
  # Bandwidth: with 125KHz the sensitivity is better but time on air is longer. Chip is capable from 125KHz to 500KHz.
  deviceSend(port, "radio set bw 125")
  deviceSend(port, "radio tx 0123456789")
  sleep(0.5)                             
  line = port.readline()
  print line.strip()
  deviceSend(port, "mac resume")

Рассмотрим каждый из основных параметров подробнее.

pwr

Мощность может изменяться от -3 дБ до 15 дБ

frequency

— частота передачи

mac pause

– отключить режим lorawan, активируется режим передачи данных между двумя устройствами (p2p)

tx

— пакет данных

mod

– тип модуляции. Доступны два типа: lora или fsk.

bw

В полосе пропускания спектра может быть 125, 250 или 500 Кгц.

sf

Коэффициент разброса, влияет на продолжительность передачи данных.


Так выглядит спектр при sf7 и sf12 при том же объеме данных.

AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр

Как вы видите, информация передается короткими блоками. Пакет не может содержать более 255 байт. После завершения передачи модем отправляет подтверждающее сообщение.

Прием данных

Если параметры приема и передачи не совпадают, то модемы не будут “разговаривать” друг с другом. Ниже приведен код программы. Она непрерывно перебирает данные на последовательном порту.

Исходный код
import serial
from time import sleep

def deviceSend(device, cmd):
        try:
	  print cmd
          device.write(cmd   "rn")
          line = device.readline()
          if line is not None and len(line) > 0: 
            r = line.decode('utf-8').strip()
            print "> "  r        
            return r
        except Exception as e:
	  pass
        return ""

if __name__ == "__main__":
  port = serial.Serial(port="COM20", baudrate=57600, timeout=5)
  deviceSend(port, "sys reset")
  sleep(2)
  deviceSend(port, "mac pause")
  deviceSend(port, "radio set freq 868000000")
  # Output power, -3..15dB
  deviceSend(port, "radio set pwr -3")
  deviceSend(port, "radio set mod lora")
  # sf12, sf7  
  deviceSend(port, "radio set sf sf7")
  # Bandwidth: with 125KHz the sensitivity is better but time on air is longer. Chip is capable from 125KHz to 500KHz.
  deviceSend(port, "radio set bw 125")
  # WDT: 5s wait for each data
  deviceSend(port, "radio set wdt 5000")

  print "Start listening"
  try:
     while True:
       ans = deviceSend(port, "radio rx 0")
       if ans == "ok":
         r = port.readline().strip()
         if r != "err" and len(r) > 0:
           print "> "   r
	 # We need time to prepare RN2483 for the next receiving
         sleep(0.1)

  except KeyboardInterrupt:
     pass

  deviceSend(port, "mac resume")


Как можно видеть, все просто, и использование модема не отличается от какой-либо другой передачи по serial port. Код программы (с небольшими улучшениями) был запущен на Raspberry Pi, прием данных можно видеть на экране.

AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр

Проверка дальности связи

Что ж, данные переданы, но самый важный вопрос: каково покрытие созданной сети? В идеальных условиях дальность связи составляет около 10-15 км. Сеть такого размера покрыла бы весь мой город. Однако в городских районах дальность связи гораздо меньше, и на нее в первую очередь влияют препятствия между узлами и шлюзами.

AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр

Для составления карты покрытия LoRaWAN доступны сайт ttnmapper.org и мобильное приложение. Это работает следующим образом: узел и смартфон находятся в непосредственной близости, узел передает пакеты, а координаты смартфона, данные о местоположении и параметры переданных пакетов наносятся на карту и ассоциируются.

Однако WiFi-совместимое приложение было несовместимо с мобильным Интернетом и оказалось бесполезным. Поэтому для мониторинга передачи пакетов со смартфона была использована консоль TheThingsNetwork. Она настроена на передачу пакетов каждые 15 секунд.

Тест №1. От стены дома я пошел вдоль тропинки, а затем вдоль дороги, которая видна прямо из окна. Было доступно около 600 м прямой видимости. Пакеты передавались уверенно. Кроме того, дорога была скрыта за домами, и доставка пакетов прекращалась.

К сожалению, я не сохранил параметры передачи пакетов, такие как RSSI, SNR и расчетное эфирное время. Кроме того, пакеты проходили даже на расстоянии 200 м из-за угла дома. Это хороший результат, но он мог бы быть и лучше.

Я нашел точку на расстоянии около 2 км от лоджии, где была прямая видимость между передатчиком и приемником почти на уровне земли. Включив передатчик, я смог достичь этой точки. Поскольку прямая видимость была достигнута на высоте всего нескольких метров над уровнем земли, а эта точка расположена в узком коридоре между высокими зданиями, вначале была неуверенность в возможности связи.

Тест №3.
Одним из самых высоких зданий в нашем городе является библиотека университета. Это здание хорошо видно из окон лоджии, на которой расположен шлюз. Расстояние по прямой составляет порядка 5,6 км. Я, как уже бывший студент университета, не имею доступа в библиотеку, а моя племянница вполне легально может туда попасть. Ей была поручена миссия выйти с передатчиком на смотровую площадку, выходящую в сторону моего дома, не привлекая к себе внимания, дабы избежать лишних вопросов. Она вышла на открытый балкон 8-го этажа и включила передатчик. Я даже не надеялся на получение сигнала с такого расстояния, но был весьма удивлен, когда увидел в консоли сначала входящий пакет активации, а затем и пакеты данных! Параметры принимаемых пакетов таковы: RSSI -112-115, SNR -7-2.5, время пролета 30.976 ms. Как по мне, результат отличный!
AGLoRa. Или прототип простого самодельного спутникового LoRa-трекера / Хабр
Условия, в которых проводилось тестирование, возможно, несколько нагляднее показаны в видео.

Цена вопроса

Следующая информация предназначена для тех, кто заинтересован в воспроизведении эксперимента или использовании LoRa в своих разработках. eBay продает набор из 2 модемов Rn2483 за 80 евро. У китайских продавцов вы можете приобрести один модуль с впаянным SX1276 за $12 с бесплатной доставкой.

Заключение

В заключение позвольте мне поделиться своими впечатлениями. Мое мнение таково: результаты тестирования дальности действия превосходны и вполне соответствуют заявленным результатам. Кроме того, я хотел бы отметить, что подробная документация упростила настройку шлюза и узла. Это относится как к стартовому комплекту RAK, так и к платформе ThingsNetwork.

Мой текущий проект заключается в обустройстве рабочего пространства лоджии и установке шлюза в постоянном положении на DIN-рейку внутри бокса и обеспечении его непрерывной работы. Я измерил, что во время работы шлюз потребляет около 800 мА, и для его питания подойдет качественное зарядное устройство, но я также могу использовать источник питания 5 В 2,4 А в корпусе для DIN-рейки.

Во время работы радиатор шлюза нагревается до 40 градусов, согласно моему самодельному тепловизору, поэтому мне, возможно, придется добавить вентиляционные отверстия в корпус. Возможно, в будущем стоит купить или сделать лучшую антенну и установить ее снаружи. Если другие члены сообщества будут использовать мой шлюз, я буду очень рад.

P.S. В категории LoRa/LoRaWAN следите за обзором еще одного интересного устройства.

Выводы

Устройства LoRa представляют собой удобное и легкодоступное решение для низкоскоростной передачи небольших объемов данных на относительно большие расстояния (от нескольких сотен метров до нескольких километров). Устройства LoRa оптимизированы для низкого энергопотребления, что позволяет питать их от перезаряжаемых батарей или элементов (но ценой низкой пропускной способности данных).

В качестве примера можно привести фермера, который хочет отображать информацию о температуре в теплице у себя дома – это почти идеальное применение для LoRa – небольшие объемы данных, большие расстояния и прямой доступ к объектам. Модем может быть полезен в больших помещениях, таких как ангары и заводы, где сложно или дорого прокладывать провода к датчикам, а объемы данных небольшие.

Высокая чувствительность модулей позволит использовать даже короткие антенны в виде “зигзагов” на печатной плате в домашних условиях. В городе качество связи сильно зависит от наличия радиовидимости между антеннами, высоты антенн и т.д.

В наш век “глобальных” сетей LoraWAN многие в восторге от их потенциала, но размещение антенн будет существенным ограничением для радиуса действия такой сети. Фактически, это можно сказать о любой системе радиопередачи, так что чуда здесь нет.

В этом разделе описывается подключение RN2483 к сети LoRaWAN.

Оцените статью
Радиокоптер.ру
Добавить комментарий