Подключение модуля LoRa SX1278 (Ra-02) к Arduino


В настоящее время стремительно растет количество разнообразных устройств, подключенных к сети Интернет. Огромное влияние на этот процесс оказывает технологии интернета вещей (IoT – Internet of Things), обмен данными между транспортными средствами во время их движения и концепция умных городов (Smart Cities). Сегодня развитие этих технологий осуществляется с помощью таких протоколов беспроводной связи как BLE, Wi-Fi, сетей сотовой связи и т.п., но все эти протоколы неудобны для использования в технологиях интернета вещей, которым необходима передача информации на большие расстояния с небольшой излучаемой (и потребляемой тоже) мощностью. Для применения в технологиях интернета вещей очень удобной оказалась технология LoRa, недавно появившаяся в современном мире (в 2015 г.). С помощью данной технологии можно осуществлять передачу информации на большие расстояния с низким потреблением энергии.

Внешний вид проекта по подключению модуля LoRa SX1278 к плате Arduino

Как ESP модули совсем недавно стали синонимом приложений Wi-Fi, так и технология LoRa в настоящее время становится фактически синонимом приложений интернета вещей. При этом модули LoRa существенно дешевле модулей Xbee (которые также можно использовать для решения аналогичных задач), что весьма важно для конечных потребителей.

Ранее на нашем сайте мы кратко уже рассматривали взаимодействие модулей LoRa с платами Arduino, но в этой статье мы рассмотрим данные вопросы более подробно. Также на нашем сайте вы можете посмотреть все проекты, относящиеся к технологии интернета вещей.

Как работает технология LoRa

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

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

Во многих типовых приложениях интернета вещей мы имеем дело с сотнями датчиков, расположенными в жилом доме или на промышленном объекте, которые контролируют ряд важных параметров (для функционирования объекта) и передают информацию о них в центр обработки данной информации. Эти датчики должны использовать беспроводный способ передачи информации, быть по возможности миниатюрными и работать от батарейки. Обычные технологии радиосвязи, позволяющие осуществлять передачу информации на большие расстояния, затрачивают на этот процесс много энергии и поэтому не могут работать от батарейки. А перспективная технология BLE (Bluetooth Low Energy – Bluetooth с низким энергопотреблением), с другой стороны, может работать с низкой потребляемой мощностью, но не может осуществлять передачу информации на большие расстояния. Поэтому и актуальным было появление для концепции интернета вещей такой технологии как LoRa.

Так каким же образом технология LoRa смогла преодолеть ограничения технологий Wi-Fi и BLE и почему она их не вытеснила? Дело в том, что наряду со своими преимуществами (передача на большие расстояния с низкой излучаемой/потребляемой мощностью) технология LoRa имеет и свои недостатки.

Для того, чтобы иметь возможность передавать информацию на большие расстояния с низкой излучаемой мощностью, технология Lora использует очень узкую полосу частот. Соответственно, узкая полоса частот позволяет осуществлять передачу информации с низкой скоростью, поэтому, к примеру, потоковое видео как по Wi-Fi, вы с помощью технологии Lora передавать уже не сможете. Поэтому технология Lora "заточена" под передачу небольших объемов информации, что вполне подходит для различных датчиков.

На следующем рисунке показано сравнение между технологиями LoRa, Wi-Fi, Bluetooth и сетями сотовой связи в дальности передачи информации и используемой пропускной способности.

Сравнение между технологиями LoRa, Wi-Fi, Bluetooth и сетями сотовой связи

Некоторые люди сравнивают LoRa с Wi-Fi или Bluetooth, но это не совсем корректно – это очень сильно различающиеся технологии. Технология Bluetooth используется для передачи информации между двумя Bluetooth устройствами, а технология Wi-Fi - для передачи информации между точкой доступа (маршрутизатором) и оконечным устройством (смартфоном). Но технология LoRa изначально была придумана (изобретена) не для того, чтобы осуществлять передачу данных между двумя модулями LoRa.

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

Типовая схема связи для технологии LoRa

Эти шлюзы затем передают информацию в сеть интернет и затем конечному пользователю через пользовательский интерфейс. Аналогично и данные от пользователя также достигают узла LoRa через сервер сети и шлюз.

Узел LoRa обычно работает от батарейки и состоит из радио модуля и микропроцессора. Микропроцессор используется для считывания данных от датчика и передачи их в окружающее пространство с помощью радио модуля, которые затем принимаются шлюзом LoRa. Шлюз LoRa также имеет в своем составе радио модуль и микропроцессор, но обычно работает уже от сети переменного тока поскольку требует для своей работы большего количества энергии чем обычный узел. Шлюз LoRa может принимать информацию от многих узлов LoRa, также и узел LoRa может передавать данные многим шлюзам. Когда информация передается от узла к шлюзу LoRa это называется "линией вверх" (uplink), а когда информация передается от шлюза к узлу – это называется "линией вниз" (down link).

Термин LoRa частично пересекается с технологией LPWAN, который расшифровывается как Low Power Wide Area Network и переводится как энергоэффективная сеть дальнего радиуса действия. Но для построения сети LPWAN кроме технологии LoRa могут быть использованы и такие технологии как NB-IOT (Narrow Band IoT – интернет вещей с узкой полосой пропускания), Sigfox и т.д. Как только появилась технология LoRa, для нее стал необходим набор протоколов, следуя которым производители могли бы выпускать устройства, работающие по данной технологии. Этот набор протоколов (точнее сказать, один протокол) был назван LoRaWAN.

LoRaWAN (Long Range Wide-Area Networks, LoRaWAN) – это MAC-протокол для высокоемких сетей с большим радиусом действия и низким собственным потреблением мощности, который организация LoRa Alliance стандартизировала для маломощных глобальных радиальных сетей (Low Power Wide Area Networks, LPWAN) типа звезда. Фактически, LoRaWAN – это видоизмененный LPWAN. Протокол LoRaWAN оптимизирован для малобюджетных сенсоров с работой от батарей и включает в себя различные классы узлов, обеспечивая компромисс между скоростью доставки информации и временем работы устройств при использовании питания от батарей/аккумуляторов. Протокол обеспечивает полную двустороннюю связь, а архитектура (посредством специальных методов шифрования) обеспечивает общую надежность и безопасность всей системы. Архитектура LoRaWAN также была разработана с целью облегчить обнаружение мобильных объектов для отслеживания активов предприятий, что является одним из наиболее быстро растущих приложений на уровне Интернета вещей (Internet of Things, IoT).

Какой дальности связи можно достигнуть при использовании технологии LoRa?

Официальная информация по технологии LoRa сообщает, что на линии прямой видимости с помощью данной технологии можно достигнуть дальности связи 715 км. На практике экспериментально была осуществлена связь с использованием технологии LoRa на дальности 212 км при нахождении обоих точек связи на поверхности Земли и на дальности 702 км при использовании воздушного шара.

Использование модуля LoRa SX1278 с Arduino

Изначально протокол LoRaWAN не был предназначен, как мы уже говорили ранее, для осуществления связи между двумя модулями LoRa. Но для преодоления этого недостатка протокола LoRaWAN был придуман метод, названный Radio Head Packet Method.

В нашем проекте мы будем использовать плату Arduino Uno на передающей стороне и плату Arduino Nano на приемной стороне. Для этого проекта можно использовать любые типы плат Arduino – только правильно подключайте их к модулям LoRa.

Использованные нами модули LoRa имеют обозначение SX1278 Ra-02 и работают на частоте 433 МГц. В России для работы технологии LoRa официально выделен частотный диапазон 866 МГц (несколько поддиапазонов рядом с этой частотой) – в нем вы с помощью данной технологии можете работать продолжительное время не оформляя никакого разрешения в радиочастотных органах. Поэтому если вы планируете использовать модули LoRa именно в таком варианте (на длительное время), то вам желательно приобрести модули LoRa для частоты 866 МГц. Но логика их использования вместе с Arduino будет такая же, как и рассмотренная в нашем проекте.

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

Внешний вид модулей LoRa и чипов LoRa с припаянными к ним проводами

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

Внешний вид использованных нами модулей LoRa вместе с антеннами

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Плата Arduino Nano (купить на AliExpress).
  3. Модуль LoRa SX1278 Ra-02 – 2 шт (купить на AliExpress).

Работа схемы

Передающая часть

Схема подключения платы Arduino Uno к модулю LoRa представлена на следующем рисунке. Это будет передающая часть нашего проекта.

Схема подключения платы Arduino Uno к модулю LoRa

Модуль LoRa имеет 16 контактов – по 8 контактов на каждой стороне. 6 из них являются общими контактами ввода-вывода (GPIO pins) – они обозначены начиная с DIO0 и по DIO5. 4 контакта являются контактами “земли” (Ground pins). Модуль работает от питающего напряжения 3.3V, поэтому он подключен к контакту 3.3v платы Arduino Uno. В схеме нам необходимо соединить контакты SPI модуля LoRa с контактами SPI платы Arduino Uno. Более подробно об использовании интерфейса SPI в плате Arduino можно прочитать в данной статье.

Все необходимые соединения между платой Arduino Uno и модулем LoRa представлены в следующей таблице.

Модуль LoRa SX1278 Плата Arduino Uno
3.3V 3.3V
Gnd Gnd
En/Nss D10
G0/DIO0 D2
SCK D13
MISO D12
MOSI D11
RST D9

Внешний вид получившейся у нас конструкции для передающей части проекта показан на следующем рисунке. Для питания схемы мы использовали внешний аккумулятор.

Внешний вид конструкции для передающей части проекта

Приемная часть

Схема подключения платы Arduino Nano к модулю LoRa представлена на следующем рисунке. Это будет приемная часть нашего проекта.

Схема подключения платы Arduino Nano к модулю LoRaСхема практически такая же как и для передающей части, за исключением одного момента – контакт 3.3V модуля LoRa запитывается не от платы Arduino Nano, а от внешнего источника (регулятора напряжения). Это связано с тем, что встроенный в плату Arduino Nano регулятор напряжения не может обеспечить достаточный ток, необходимый для нормального функционирования модуля LoRa.

Все необходимые соединения между платой Arduino Nano и модулем LoRa в нашем проекте представлены в следующей таблице.

Модуль LoRa SX1278 Плата Arduino Nano
3.3V -
Gnd Gnd
En/Nss D10
G0/DIO0 D2
SCK D13
MISO D12
MOSI D11
RST D9

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

Внешний вид конструкции приемной части нашего проекта

Подготовка Arduino IDE для работы с модулем LoRa

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

Добавьте скачанную библиотеку в каталог библиотек Arduino на вашем компьютере. Для добавления библиотеки откройте Arduino IDE и выберите в ней пункт меню Sketch -> Include Library -> Manage Libraries. Затем запустите поиск с фразой “LoRa Radio” и с его помощью найдите библиотеку, сделанную Sandeep Mistry. Нажмите кнопку для установки этой библиотеки и подождите пока она установится.

После установки библиотеки вы на экране компьютера должны увидеть примерно следующую картину:

Библиотека для работы с модулем LoRa установлена

После этого перезапустите Arduino IDE и откройте пример для работы с модулем LoRa, расположенный по адресу: File -> Example -> LoRa. После этого откройте программы для работы с передатчиком и приемником LoRa как показано на следующем рисунке.

Открытие программ для работы с передатчиком и приемником LoRa

Тексты обоих этих программ приведены в конце нашей статьи. Программа для передатчика будет передавать слово “hello” каждые 5 секунд со значением счетчика, который будет инкрементироваться. Приемник будет осуществлять прием данной информации и печатать ее в окне монитора последовательной связи (Serial monitor) вместе со значением RSSI (received signal strength indicator - показатель уровня принимаемого сигнала).

Но в представленном примере программы вам будет необходимо сделать такую важную вещь как изменить функцию LoRa.begin(). По умолчанию в примере она записана как “LoRa.begin(915E6)”, что означает что она устанавливает модуль LoRa на работу на частоте 915 МГц. Если у вас модуль LoRa для этой частоты, то все в порядке, мы же в нашем проекте используем модуль LoRa с частотой 433 МГц, поэтому нам необходимо изменить эту команду следующим образом:

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

Аналогичным образом необходимо изменить и рабочую частоту для приемного модуля LoRa.

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

Тестирование работы проекта

После загрузки программ в платы Arduino откройте окна монитора последовательной связи на обоих платах Arduino. Окно монитора последовательной связи передатчика должно показывать передаваемую информацию, а приемник должен принимать эту информацию и отображать ее в своем окне монитора последовательной связи. Экраны мониторов у вас должны выглядеть примерно следующим образом:

Внешний вид результатов работы программ в окнах монитора последовательной связи

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

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

Исходный код программы (скетча)

Код программы для работы с модулем LoRa на передающей стороне

Код программы для работы с модулем LoRa на приемной стороне

Видео, демонстрирующее работу схемы

Также можете посмотреть подробное обучающее видео про технологию LoRa (на английском языке):

(3 голосов, оценка: 4,00 из 5)
Загрузка...
19 212 просмотров

Комментарии

Подключение модуля LoRa SX1278 (Ra-02) к Arduino — 27 комментариев

  1. Добрый день. Подскажите, а как максимально снизить потребление тока на приёмнике в data на sx1278 указано 12мА для режима IDDR ? Если переводить в режим сна то 1.5мкА что является большое разницей. Есть в природе модули LoRa которые можно разбудить по приему так сказать в которых встроен амплитудный детектор?

    • Добрый день. К сожалению, точно не знаю, но попробуйте посмотреть модули LoRa серии E220 (их есть несколько модификаций) - они в несколько раз дороже стоят чем модули sx1278, поэтому логично предположить что и функции у них должны быть более продвинутыми.

  2. Доброго времени суток!
    Большое спасибо за познавательную статью
    Прочитав ее появился вопрос - а сколько отдельных плат в теории могут подключиться к одной?
    50-100-200

    • Добрый вечер. Вы имеете ввиду построение Mesh-сети из станций LoRa или подключение нескольких станций LoRa к одному шлюзу LoRaWAN? Если второе, то этот вопрос достаточно подробно рассмотрен здесь - mokolora.com/ru/calculate-the-network-capacity-of-lorawan-gateway/

      • Большое спасибо за ответ и за статью - почитаем
        Второй вариант мне подходит
        Стоит задача сделать 100 беспроводных автономных датчиков (охранная система) вот и прицеливаюсь потянет ли такое LoRa и шлюз из Raspberry Pi

        • Да не за что, заходите к нам на сайт еще. LoRa - это новая перспективная технология, ее только NB/IoT может подвинуть, но она платная, а на LoRa, пользуясь нелицензируемым спектром, можно никому ничего не платить.

          • Глупый вопрос, но все же:
            Если я все правильно прочитал, то для моей задачи нужно докупать шлюз Лора и сдружить его с Малинкой. Но если мне нужна только одностороння связь, выгрузка информации с датчиков раз в 5-10 минут и таких датчиков 50, они же по очереди могут подключаться к "импровизированном" шлюзу обычной платки Лора как в вашей статье.
            Или все таки не заморачиваться и взять себе уже готовый шлюз ЛораВан и снимать данные одновременно и без очередей (шлюз ЛораВан экзотика в моей стране, хер найдешь)))

            • К сожалению тут уже не могу подсказать вам ничего дельного потому что не знаю возможности шлюза Лораван, развернутого на основе платы Raspberry Pi

  3. Здравствуйте тема жива ещё,у меня появилась возможность кое что узнать

    • Добрый вечер. Конечно жива, я каждый день проверяю новые комментарии на сайте

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

        • Добрый вечер. Да, можете писать здесь. Если понадобится, позже можем перейти в телеграм

  4. Подскажите пожалуйста. Могу ли я использоввать два разных модуля LORA? Мне нужно только передавать данные. Например передетчик E32-433T30D на 1вт. Приемник SX1278 Ra-01.

    • Ну если они работают на одной частоте и остальные характеристики сигналов у них совпадают, то почему нет. Только вот я не знаю будет ли библиотека из данной статьи работать с вашим модулем LoRa E32-433T30D, этот вопрос требует уточнения

    • E32 построен на таком же модеме (SX1278), что и Ra-01 (и Ra-02). Так что с большой вероятностью можно будет запустить. Но интерфейс этого модуля - UART

  5. Здравствуйте. А есть возможность как то исключить посторонние сигналы и оставить только те, которые приходят с передатчика?

    • Добрый день. Каким образом вы хотите попробовать их исключить: с помощью методов обработки сигналов в антенне, частотной селекции или методах модемной компенсации помех? В теории есть много способов для этого, но надо для начала определиться с какими видами посторонних сигналов вы хотите бороться, от этого во многом и будет зависеть выбор метода борьбы с ними

  6. SPI вы как-то недооценили:
    К одному последовательному периферийному интерфейсу SPI ведущего устройства-микросхемы может присоединяться несколько микросхем. Ведущее устройство выбирает ведомое для передачи, активируя сигнал «выбор кристалла» (англ. chip select) на ведомой микросхеме. Периферия, не выбранная процессором, не принимает участия в передаче по SPI. (wiki)

    habr.com/ru/company/first/blog/661511/

  7. При передаче модуль LoRa потребляет до 120 мА, в то время, как от пина 3v3 можно запитать потребителя 40 мА. Как же ваш передатчик работал?

    • Ну, может быть, вы даташит на более мощный модуль LoRa смотрели чем тот, который использован в данной статье. Вот в этой статье питание модуля LoRa подключается к контакту 5 В Ардуино, но там и визуально модуль другой. А вот в этой статье использован точно такой же по внешнему виду модуль как и в представленной статье, но там он также подключается к контакту 3v3 и платы Ардуино, и платы Raspberry Pi.

      • А можно сделать сеть что бы от Лора 1 передавал 2 а 2 принимал и передавал 3 и т.д.?

        • Да, так работают так называемые Mesh сети, в которых каждый узел может играть роль ретранслятора/маршрутизатора для других узлов. Посмотрите для примера эту статью - создание Mesh сети между модулями ESP32 и NodeMCU ESP8266. Только вместо связи по WiFi нужно применить связь через модули LoRa. Технология LoRa поддерживает создание Mesh сетей.
          Можно сделать это и вручную, без использования технологии Mesh сетей, тогда алгоритм ретрансляции нужно запрограммировать вручную. Проблема состоит только в том, что используемые в статье модули LoRa подключаются к плате Ардуино по интерфейсу SPI, а у платы Ардуино Уно, использованный в данном проекте, всего один такой интерфейс, поэтому подключить два таких модуля к ней не удастся. Тогда на пункте ретрансляции нужно использовать либо две платы Ардуино, к каждой из которой будет подключено по одному модулю LoRa, либо использовать другую плату, у которая есть два интерфейса SPI

            • Будем признательны если отпишитесь потом о своих успехах в этом направлении

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *