ESP32 та технологія LoRa в Arduino IDE

title 8

У цьому посібнику ми розглянемо основні принципи роботи протоколу LoRa і те, як його можна використовувати з ESP32 для IoT проектів в Arduino IDE. Для початку покажемо, як запрограмувати відправника та приймача на базі модуля приймача RFM95.

ЩО ТАКЕ LORA?

LoRa – це технологія бездротової передачі даних, в якій використовується метод радіомодуляції, який може здійснюватись приймачами Semtech LoRa.

radio modulation

Цей протокол модуляції забезпечує передачу невеликих даних великі відстані, високу стійкість до перешкод при мінімальному споживанні енергії.

icons

ЧАСТОТИ LORA

LoRa використовує неліцензовані частоти, доступні в усьому світі. Ось найчастіше використовувані частоти:

  • 868 МГц для Європи (Росія – 863 – 870MГц, 433 МГц)
  • 915 МГц для Північної Америки
  • 433 МГц для Азії

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

ДЕ МОЖНА ЗАСТОСУВАТИ ПРОТОКОЛ LORA?

LoRa має великий діапазон дії та низьке енергоспоживання, що робить його придатним для датчиків з живленням від батареї та додатків з низьким енергоспоживанням. Застосовують LoRa в:

  • Інтернет речей (IoT)
  • Проекти «Розумний дім»
  • Міжмашинна взаємодія
  • та ін.

Отже, LoRa – гарний вибір для нод датчиків, що працюють на батарейках типу R або на сонячній батареї, які передають невеликі обсяги даних.

cr2032solar panel

Майте на увазі, що LoRa не підходить для проектів, які:

  • Вимагають високої швидкості передачі;
  • Вимагають високої частоти передачі;
  • Працюють у місцях, де дані частоти переповнені.

ТОПОЛОГІЇ LORA

Ви можете використовувати LoRa в:

  • Мережах «крапка-крапка»
  • Мережі LoRa (наприклад, створені за допомогою LoRaWAN)
lora topology

МЕРЕЖА «КРАПКА-КРАПКА»

У мережі точка-точка два пристрої з підтримкою LoRa взаємодіють один з одним за допомогою радіосигналів.

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

point to point

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

lora wifi comparing

Досить легко організувати передачу даних на відстані більше 200 метрів (залежно від місцевості та налаштувань LoRa можна отримати ще більше цифр). Існують також інші рішення LoRa, які мають дальність дії понад 30 км.

LORAWAN

Ви також можете побудувати мережу LoRa за допомогою LoRaWAN.

Протокол LoRaWAN – це специфікація глобальної мережі з низьким енергоспоживанням (LPWAN), отримана на основі технології LoRa, стандартизованої LoRa Alliance. Ми не будемо досліджувати LoRaWAN у цьому посібнику, але для отримання додаткової інформації ви можете перевірити веб-сайти LoRa Alliance та The Things Network .

ЧИМ МОЖЕ БУТИ КОРИСНИЙ ПРОТОКОЛ LORA?

Уявіть, що ви хочете виміряти вологість поруч із будинком/на дачі. Найімовірніше, там немає покриття Wi-Fi. Тобто, потрібно зробити незалежний вузол з ESP32 і датчиком вологості, який відправлятиме показання вологості один або два рази на день на іншу ESP32 за допомогою LoRa.

moisture sensor

А за допомогою ESP32 можна створити веб-сервер, на якому можна буде спостерігати ці показання.

moisture sensor 2
sensor 1
 

ESP32 З LORA

У цьому розділі розглянемо, як організувати роботу LoRa з платою ESP32 в Arduino IDE. Як приклад створимо кілька відправників та одержувачів.

Відправимо вітальне повідомлення із лічильником. Зрозумівши, як це працює, ви зможете використовувати цей код для відправки, наприклад, показань датчиків.

esp32 boards

Вам потрібні такі компоненти:

  • 2 плати ESP32
  • 2 модулі приймача LoRa (RFM95)
  • Провід DuPont
  • Макетна плата
lora receiver

ПІДГОТОВКА ДО РОБОТИ. ВСТАНОВЛЕННЯ БІБЛІОТЕКИ LORA

У цьому прикладі ми будемо використовувати бібліотеку arduino-LoRa від sandeep mistry .

Відкрийте Arduino IDE, перейдіть до Скетчу > Підключити бібліотеку > Керувати бібліотеками…, введіть у пошуку LoRa . Виберіть бібліотеку LoRa, виділену нижче, і встановіть її.

lora library manager

МОДУЛІ RFM95

Для надсилання та отримання повідомлень LoRa з ESP32 ми будемо використовувати 2 модулі приймача RFM95. Всі модулі LoRa є трансіверами, тобто вони можуть надсилати та отримувати інформацію.

2xRFM95

Ви також можете використовувати інші сумісні модулі, такі як плати на базі Semtech SX1276/77/78/79, включаючи RFM96W, RFM98W і т.д.

Перед тим, як вмикати модуль приймача LoRa, переконайтеся, що ви вибрали правильну частоту. У цьому проекті ми будемо використовувати RFM95, який працює на частоті 868 МГц.

ПІДГОТОВКА МОДУЛЯ ПРИЙМАЧА RFM95

Якщо у вас є плата ESP32 із вбудованою LoRa, ви можете пропустити цей крок.

Приймач RFM95 несумісний з макетною платою. Звичайний ряд контактів 2,54 мм не підходить для контактів трансівера.

RFM95

Є кілька варіантів, які можна використовувати для підключення трансивера.

  • Ви можете припаяти дроти прямо до трансівера;
  • Розламайте контакти гребінки та припаяйте кожен окремо;

Ми припаяли контакти до модуля, як показано нижче.

RFM95 contacts

АНТЕНА

Для мікросхеми приймача RFM95 потрібна зовнішня антена, підключена до виведення ANA.

ANA pin

Ви можете підключити куплену антену або зробити її самостійно, використовуючи провід, як показано на малюнку нижче.

antenna

Довжина дроту залежить від частоти:

  • 868 МГц: 86,3 мм.
  • 915 МГц: 81,9 мм.
  • 433 МГц: 173,1 мм.

Для нашого модуля знадобиться провід довжиною 86,3 мм, припаяний безпосередньо до контакту ANA трансівера. Зауважте, що використання правильної антени збільшує дальність зв'язку.

Важливо: ви повинні припаяти антену до модуля.

ПІДКЛЮЧЕННЯ МОДУЛЯ ПРИЙМАЧА RFM95 LORA

Модуль приймача RFM95 обмінюється даними з ESP32 за допомогою протоколу зв'язку SPI. Підключіть обидві плати ESP32 до відповідних модулів приймачів, як показано на наступній принциповій схемі:

scheme 3 689x720

Розпинування:

  • ANA: Антена
  • GND: GND
  • DIO3: не підключати
  • DIO4: не підключати
  • 3,3 В: 3,3 В
  • DIO0: GPIO 2
  • DIO1: не підключати
  • DIO2: не підключати
  • GND: не підключати
  • DIO5 не підключати
  • RESET: GPIO 14
  • NSS: GPIO 5
  • SCK: GPIO 18
  • MOSI: GPIO 23
  • MISO: GPIO 19
  • GND не підключати

Примітка: модуль приймача RFM95 має 3 контакти GND. Не має значення, який ви використовуєте, але вам потрібно підключити хоча б один.

З практичних міркувань ми виконали цю схему на макетній платі (це зручніше).

endpoint device

СКЕТЧ ДЛЯ ПЛАТИ-ВІДПРАВНИКА LORA

Відкрийте Arduino IDE та скопіюйте наступний код. Цей скетч базується на прикладі з бібліотеки LoRa. Він передає повідомлення кожні 10 секунд, відправляє повідомлення "hello" та число, яке зростає з кожним повідомленням.

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

Потім визначаємо контакти, які використовуються модулем LoRa. Якщо ваша схема ідентична нашій, можете залишити як є.

Ініціалізуємо лічильник (з нуля);

У setup() запускаємо монітор порту.

Встановіть піни для модуля LoRa.

І ініціалізуємо модуль приймача з зазначеною частотою.

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

І одержувач, і відправник повинні використовувати те саме слово синхронізації. Таким чином, одержувач ігнорує будь-які пакети, які не містять цього слова.
Потім loop () відправляємо повідомлення. Ви ініціалізуєте його за допомогою beginPacket().

Ви записуєте дані у пакет за допомогою методу print(). Як можна побачити в наступних двох рядках, ми надсилаємо вітальне повідомлення, за яким слідує лічильник.

Потім використовуємо метод endPacket(), щоб закінчити формування пакета.

Після цього повідомлення лічильника збільшується на одиницю у кожному циклі, котрий відбувається кожні 10 секунд.

ТЕСТУЄМО СКЕТЧ

Завантажте код на плату ESP32. Переконайтеся, що вибрано правильний COM-порт.

Після цього відкрийте монітор порту та натисніть кнопку увімкнення ESP32. Ви повинні побачити повідомлення про успішне надсилання. Лічильник повинен збільшуватись кожні 10 секунд.

serial monitor lora

СКЕТЧ ДЛЯ ПЛАТИ-ПРИЙМАЧА

Тепер візьміть ще одну ESP32 та завантажте наступний скетч. Він приймає пакети LoRa за допомогою заданого вами слова синхронізації і виводить вміст пакетів і RSSI (відносну потужність сигналу, що приймається) в монітор порту.

Цей скетч дуже схожий на попередній. Відрізняється лише функція loop().
Можливо, вам потрібно буде змінити частоту та слово синхронізації, щоб вони відповідали тому, що використовувалося в скетчі для плати-відправника.
У циклі loop() код перевіряє, чи був отриманий новий пакет за допомогою методу parsePacket().

Якщо є новий пакет, читаємо його вміст, доки він доступний.
Для читання вхідних даних використовуємо метод readString().

Вхідні дані зберігаються в змінній LoRaData і виводяться на монітор порту.
Нарешті, наступні два рядки коду виводять RSSI отриманого пакета дБ.

ТЕСТУЄМО СКЕТЧ

Завантажте цей код у ESP32. На цьому етапі у вас мають бути дві плати ESP32 з різними скетчами: відправник та одержувач.

Відкрийте монітор порту для плати-одержувача та натисніть кнопку увімкнення плати-відправника. Повинні починати надходити пакети LoRa на приймачі.

serial monitor lora 2

ЗБІЛЬШУЄМО ВІДСТАНЬ МІЖ ПЛАТАМИ

Тепер ви повинні перевірити працездатність проекту там, де ви збираєтеся його використовувати. Дальність зв'язку сильно варіюється в залежності від місцевості. Щоб перевірити дальність зв'язку, можна додати OLED-дисплей до приймача LoRa і прогулятися, щоб подивитися, на якій відстані буде зберігатися з'єднання.

test lora

ВИСНОВОК

У цьому посібнику ми розібрали основи технології LoRa:

  • LoRa - це метод радіомодуляції, який дозволяє передавати невеликі обсяги даних на великі відстані та має невелике енергоспоживання;
  • Протокол LoRa може бути корисним, якщо ви хочете отримувати показання датчиків, які не охоплені вашою мережею Wi-Fi і знаходяться на відстані один від одного.

Додати коментар


Захисний код
Оновити

EcoMonitoring

ЛІЧІЛЬНИК ВІДВІДУВАННЬ

Сьогодні 351
Вчора386
Цього тижня 737
Минулого тижня 2264
Цей місяць 8298
Минулий місяць 9310
За весь час 172332
Ваш IP: 3.137.203.53
Сегодня: 2025-04-28
Пользователей на сайте: 0
Гостей на сайте: 24