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

 

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

Автор: Mike(admin) от 25-02-2019, 11:15

Arduino и сеть LoRa


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


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

Так же как и модули 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 также может отправлять информацию на несколько шлюзов, таким образом информация от узла будет приниматься шлюзом без потери. Когда идентификатор информации отправляется от узла к шлюзу, он называется восходящей линией связи, а когда он отправляется от шлюза к узлу, он называется нисходящей линией связи.


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 (как это видно ниже).


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

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


Lora

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


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


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

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


соединение LoRa SX1278 с Arduino UNO

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


соединение LoRa SX1278 с Arduino UNO

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


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


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

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


соединение LoRa SX1278 с Arduino Nano

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


соединение LoRa SX1278 с Arduino Nano

Подготовка 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

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


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

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


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


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


Arduino и LoRa

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


Код Arduino для работы с LoRa модулями SX1278


Код передающей части:



#include <SPI.h>
#include <LoRa.h>

int counter = 0;

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Sender");

  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }

  LoRa.setTxPower(20);
  
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;

  delay(5000);
}

Код приемной части:



#include <SPI.h>
#include <LoRa.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}



© digitrode.ru


Теги: Arduino, LoRa, SX1278, Интернет вещей



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

Комментарии:

Оставить комментарий
Цитата
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
Подскажите , как все это подключить на модуле что приведен ниже.Нету контактов MISO , MOSI . Внутри одинаковый чип sx1276 но контакты другие подскажите как правильно подключить.

ebyte
Цитата
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
А можно ли создать связку LORA+Arduino <-> LORA (голая)? Неужели для того, чтобы сделать датчик с LORA к ней нужна еще и ардуина?

И еще такой вопрос: приемник ловит все передатчики на выбранной частоте?
Как реализовать работу только со своими передатчиками и ограничить доступ к ним посторонних приемников?