Arduino lora библиотека sandeep mistry описание функций

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Arduino и LoRa: подключаем модуль SX1278 (Ra-02) к Arduino

Arduino и сеть LoRa

Ожидается, что к 2020 году в мире будет 25 миллиардов устройств, подключенных к Интернету. Это более чем в три раза больше население Земли. С учетом того, что концепции Интернета вещей (IoT) и Четвертой промышленной революции (Industry 4.0) реализуются весьма успешно, это, скорее всего, произойдет. У нас уже есть несколько беспроводных протоколов, таких как BLE, Wi-Fi, сотовая связь и т. д., но эти технологии не были идеальными для сенсорных узлов Интернета вещей, поскольку им необходимо было передавать информацию на большие расстояния без использования большого количества энергии. Это привело к появлению технологии LoRa, которая может выполнять передачу на очень большие расстояния с низким энергопотреблением.

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

Что такое LoRa?

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

Сигналы LoRa при определенных условиях могут преодолевать расстояние 15-20 км и работать от батареи в течение многих лет. Помните, что LoRa, LoRaWAN и LPWAN – это три разных термина, и их не следует путать друг с другом.

Особенности сетей LoRa

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

В LoRa мы можем достичь связи на большом расстоянии, не используя много энергии, таким образом преодолевая недостатки сотовой связи, Wi-Fi и BLE. Но как это возможно? Если это так, почему BLE и сотовая связь все еще существуют?

Это потому, что LoRa имеет свои недостатки. Для достижения большого расстояния с низким энергопотреблением LoRa минимизирует пропускную способность, сеть работает при очень низкой пропускной способности. Максимальная пропускная способность для Lora составляет около 5,5 кбит/с, это означает, что вы сможете отправлять только небольшое количество данных через LoRa. Таким образом, вы не можете отправлять аудио или видео с помощью этой технологии, она отлично работает только для передачи меньшего количества информации, например показаний датчиков.

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

Вы можете думать о LoRa как о сотовой связи. Сигнал от одного узла LoRa достигает другого узла через шлюз (Gateway) LoRa, как показано на рисунке ниже.

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

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

LoRa подпадает под категорию LPWAN, где LPWAN обозначает глобальную сеть с низким энергопотреблением. Не только LoRa может работать в LPWAN, но у нас также есть другие технологии, такие как узкополосный IoT (NB-IOT), Sigfox и т. д., которые могут работать в той же концепции LPWAN. После внедрения технологии LoRa потребовался определенный набор протоколов, которым должны следовать все производители, поэтому был создан альянс LoRa, который затем представил LoRaWAN. LoRaWAN – это модифицированная форма LPWAN, которая определяет протокол использования LoRa на физическом уровне для отправки и получения данных между узлами, шлюзами и Интернетом.

LoRa SX1278 и Arduino

Пожалуй, достаточно теории. Попробуем построить такую сеть (или ее малую часть) самостоятельно и проверить, как она работает. Помните, что было сказано, что два модуля LoRa не могут общаться друг с другом? Что ж, это была небольшая ложь . да, протокол LoRaWAN не позволяет осуществлять связь между двумя модулями LoRa, но есть метод, называемый методом Radio Head Packet Method, который действительно следует протоколу LoRaWAN, но позволяет нам общаться с использованием двух модулей LoRa. Итак, давайте использовать два модуля LoRa и две платы Arduino для отправки данных с одной платы и получения их с другой. Мы будем использовать Arduino Uno на стороне передатчика и Arduino Nano на стороне приемника.

Модуль LoRa, который мы здесь используем, это SX1278 Ra-02, который работает на частоте 433 МГц. Модули LoRa бывают разных частотных диапазонов, наиболее распространенными из которых являются 433 МГц, 915 МГц и 868 МГц. Частота, с которой работает ваш модуль, будет указана на задней панели модуля. Также вы можете купить LoRa как модуль или просто чип. Если вы планируете приобрести только чип, убедитесь, что ваши навыки пайки хорошие, так как это сложная задача – припаять провода к чипу LoRa (как это видно ниже).

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

Передающая сторона – соединение LoRa SX1278 с Arduino UNO

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

Модуль LoRa имеет 16 контактов с 8 контактами на каждой стороне. Из этих 16 контактов шесть используются выводами GPIO в диапазоне от DIO0 до DIO5, а четыре для заземления. Модуль работает при напряжении 3,3 В и, следовательно, контакт 3,3 В на LoRa подключен к контакту 3,3 В на плате Arduino UNO. Затем мы подключаем вывод SPI на LoRa к выводам SPI на плате Arduino, как показано выше. Вы также можете использовать таблицу ниже, чтобы убедиться, что соединение установлено правильно.

Мы использовали соединительные провода, чтобы установить соединение между Arduino UNO и модулем LoRa. Конструкция выглядит примерно так, как показано ниже. Вся установка может питаться от аккумулятора, чтобы сделать ее портативной для проверки диапазона.

Принимающая сторона – соединение LoRa SX1278 с Arduino Nano

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

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

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

Подготовка Arduino IDE для беспроводной связи LoRa

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

Чтобы добавить библиотеку, откройте Arduino IDE и следуйте перейдите Sketch — Include Library — Manage Libraries. Затем найдите «LoRa Radio», найдите библиотеку, созданную Sandeep Mistry, и нажмите «Установить». Подождите, пока установка завершится, и вы должны увидеть что-то вроде этого.

Теперь перезапустите Arduino IDE и откройте программу-пример LoRa, используя File — Example — LoRa, а затем откройте и LoRa Receiver, и LoRa Sender Program, как показано ниже.

Обе программы также приведены в самом низу статьи. Программа Sender отправляет «hello» каждые 5 секунд с увеличением значения счетчика. Затем получатель получает это и печатает в последовательном мониторе со значением RSSI.

Одна важная строка, где вы должны внести изменения – это функция LoRa.begin(). По умолчанию программа имеет «LoRa.begin(915E6)», то есть модуль LoRa работает на частоте 915 МГц. Это нормально, если ваш модуль на самом деле 915 МГц, но в нашем случае он работает на частоте 433 МГц, поэтому нужно изменить значение на LoRa.begin(433E6). Аналогично, частота должна быть изменена и в программе Receiver. Как только программы готовы, загрузите код в соответствующие платы, убедившись, что соединения установлены правильно и антенна подключена к модулю LoRa.

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

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

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Основы работы с платой LoRa SX1276 в Arduino IDE

Как начать работу с платой TTGO LoRa32 SX1276 OLED в Arduino IDE

В последнее время для передачи данных на относительно большие расстояния все чаще используют связь LoRa (Long Range или связь на дальние расстояния). LoRa, по сути, является грамотным способом получить очень хорошую чувствительность приемника и низкую частоту ошибок по битам (BER) при использовании недорогих чипов. Это означает, что приложения с низкой скоростью передачи данных могут получить гораздо большую дальность, используя LoRa, а не другие схожие технологии радиосвязи.

На сегодняшний день на рынке представлено довольно большое количество микросхем и отладочных плат для сети LoRa, и сегодня мы поработаем с одной из них. TTGO LoRa32 SX1276 OLED – это плата разработки ESP32 со встроенным чипом LoRa и 0,96-дюймовым OLED-дисплеем SSD1306. В этом руководстве мы покажем, как отправлять и получать пакеты LoRa (соединение точка-точка) и использовать OLED-дисплей с Arduino IDE.

На плате также имеется несколько линий GPIO для подключения периферийных устройств, кнопки PRG (BOOT) и RST, а также разъем для литиевой батареи.

Распиновка платы следующая

Дисплей OLED обменивается данными с управляющим ESP32 по протоколу связи I2C. Здесь наблюдается следующее подключение: SDA – GPIO 4, SCL – GPIO 15, RST – GPIO 16.

Чип SX1276 LoRa обменивается данными по протоколу связи SPI и внутренне подключен к ESP32 следующим образом: MISO – GPIO 19, MOSI – GPIO 27, SCK – GPIO 5, CS – GPIO 18, IRQ – GPIO 26, RST – GPIO 14.

Для правильной работы с платой нам нужно установить несколько библиотек. Для управления дисплеем в этом руководстве мы будем использовать две библиотеки Adafruit: библиотеку Adafruit_SSD1306 и библиотеку Adafruit_GFX. Выполните следующие шаги, чтобы установить эти библиотеки. Во-первых, откройте IDE Arduino и выберите Скетч – Включить библиотеку –Управление библиотеками (Sketch – Include Library – Manage Libraries). Должен открыться менеджер библиотек. Далее введите «SSD1306» в поле поиска и установите библиотеку SSD1306 от Adafruit.

После установки библиотеки SSD1306 от Adafruit введите «GFX» в поле поиска и установите библиотеку.

Теперь пришло время для библиотеки LoRa. Есть несколько доступных библиотек для простой отправки и получения пакетов LoRa с ESP32. В этом примере мы будем использовать библиотеку arduino-LoRa от sandeep mistry. Также откройте менеджер библиотек и найдите «LoRa». Выберите библиотеку LoRa, выделенную на изображении ниже и установите ее.

После установки библиотек перезапустите вашу Arduino IDE. После этого можно будет программировать нашу плату LoRa. Скопируйте следующий код в вашу Arduino IDE. Этот код отправляет сообщение «Hello», за которым следует работа счетчика на 10 секунд. Также счет отображается на дисплее OLED.

Загрузите код на свою плату. Вам нужно выбрать правильную плату и COM-порт, который вы используете.

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

Теперь загрузите скетч приемника на другую плату TTGO LoRa32. Этот скетч прослушивает пакеты LoRa в пределах своего диапазона и выводит содержимое пакетов на OLED-дисплей, а также выводит RSSI (относительный уровень принимаемого сигнала).

Загрузите код на вторую плату. Не забывайте, что вам нужно выбрать TTGO LoRa32-OLED V1 в меню плат. После загрузки кода она должна начать получать пакеты LoRa с первой платы.

Благодаря таким платам и в целом технологии LoRa можно сделать целую экосистему Интернета вещей.

Источник

Adblock
detector