Подключение модуля LoRa SX1278 к ESP32


LoRa – это технология беспроводной передачи данных, разработанная компанией Semtech, ориентированная на передачу с небольшой скоростью данных на большие расстояния. Отличительной особенностью LoRa по сравнению с другими похожими технологиями является крайне низкое энергопотребление устройств, использующих данную технологию. Некоторые датчики LoRa могут работать от одной батарейки (без ее замены) в течение нескольких лет. Более подробно про технологию LoRa и используемый вместе с ней протокол LoRaWAN вы можете прочитать в статьях про подключение модулей LoRa к платам Arduino и Raspberry Pi.

Внешний вид подключения модуля LoRa SX1278 к модулю ESP32

В данной статье мы рассмотрим подключение модуля LoRa SX1278 к модулю ESP32. В проекте мы будем использовать два модуля LoRa – один будет подключен к модулю ESP32, а другой – к плате Arduino. Модуль LoRa, подключенный к ESP32, с помощью специального API будет запрашивать данные о погоде в определенном городе, и передавать их модулю LoRa, подключенному к плате Arduino, которая будет отображать их на экране ЖК дисплея 16x2. Таким образом, модуль LoRa, подключенный к ESP32, будет выступать в качестве передатчика, а модуль LoRa, подключенный к плате Arduino, будет выступать в качестве приемника. К модулю ESP32 будет также подключен OLED дисплей, который будет показывать значение температуры и влажности на стороне передатчика.

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

  1. Модуль ESP32 (купить на AliExpress).
  2. Плата Arduino Uno (купить на AliExpress).
  3. Шилд (плата расширения) Lora для Arduino.
  4. Модуль LoRa SX1278 (433MHz) – 2 шт. (купить на AliExpress).
  5. ЖК дисплей 16x2 (купить на AliExpress).
  6. OLED дисплей (купить на AliExpress).
  7. Макетная плата.
  8. Соединительные провода.

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

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

Схема проекта

В данном проекте мы будем передавать данные о погоде с модуля ESP32 на плату Arduino Uno используя модули LoRa SX1278. Данные о погоде и влажности будут считываться модулем ESP32 из сети интернет.

Схема передающей части

Схема подключения модуля LoRa SX1278 к ESP32 представлена на следующем рисунке.

Схема подключения модуля LoRa SX1278 к ESP32На данной схеме к модулю ESP32 также подключен OLED дисплей – на нем мы будем отображать считанные с интернета данные температуры и влажности. Схема соединений данной части проекта приведена в следующих таблицах.

Модуль LoRa SX1278 ESP32
3.3V 3.3V
GND GND
NSS D5
DIO0 D2
SCK D18
MISO D19
MOSI D23
RST D14
OLED дисплей ESP32
Vcc 3.3v
GND GND
SCL D22
SDA D21

На следующем рисунке показана собранная на макетной плате конструкция передающей части проекта.

Собранная на макетной плате конструкция передающей части проекта

Схема приемной части

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

Схема подключения модуля LoRa SX1278 к плате ArduinoШилд состоит из модуля Lora SX1278 433MHz с регулятором напряжения 3.3V на основе микросхемы LM317.

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

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

API средства для получения данных о погоде

Для получения данных о погоде мы будем использовать сервис Weather API, который достаточно прост в использовании. Зарегистрируйтесь на этом сервисе чтобы в дальнейшем получить на нем ссылку (API link) для считывания данных о погоде.

После регистрации на сервисе Weather API нажмите в нем на ссылку ‘My Account’ и после перехода по ней получите необходимые средства API. Для получения данных о погоде нам будет нужен API ключ.

Получение API ключа в сервисе Weather API

После этого вернитесь назад, на главную страницу сервиса, и нажмите на ссылку “API Explorer”.

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

Ввод параметров для получения данных о погоде в сервисе Weather API

Далее прокрутите страницу вниз и нажмите на кнопку ‘Show Response’ чтобы создать запрос. В результате вы получите API ключ, который можно будет потом использовать в программе.

API ключ с сервиса Weather API для использования в программе

После этого вставьте API URL в адресную строку в новой вкладке браузера, в результате чего вы увидите картину примерно как на рисунке ниже. Это так называемые JSON данные.

JSON данные в сервисе Weather API

После получения этих данных JSON нам необходимо сгенерировать код, с помощью которого мы будем считывать эти JSON данные и фразу, которая будет нам необходима. Для этого мы используем сервис ArduinoJson Assistant и вставим в его секцию входных данных (Input section) данные JSON.

Преобразование данных с помощью сервиса ArduinoJson Assistant

Затем пролистайте страницу вниз, к программе парсинга (parsing program) и скопируйте ее код – он нам понадобится в дальнейшем.

Объяснение программы для передающей части проекта

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим все необходимые библиотеки. Библиотека SPI.h используется для взаимодействия по интерфейсу SPI между модулями ESP32 и LoRa. Библиотека Wire.h используется для связи по протоколу I2C. Скачать все необходимые библиотеки для данной части проекта вы можете по следующим ссылкам:

Далее подключим все необходимые библиотеки в программе.

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

После этого укажем данные для подключения к сети Wi-Fi – ее имя и пароль для доступа к ней.

Далее укажем контакты, к которым подключен модуль LoRa.

После этого введем API ссылку (API link), которую мы сформировали ранее. С помощью этой ссылки мы будем считывать данные температуры и влажности из города Джайпур. Вы можете считывать эти данные для своего города.

Внутри функции setup инициализируем последовательную связь со скоростью 115200 для целей отладки, OLED дисплей и связь по технологии LoRa с помощью функции begin().

Далее внутри функции loop() мы будем проверять JSON файл, получаемый модулем ESP32, и выводить JSON данные в окно монитора последовательной связи.

Далее используем фразу, сгенерированную сервисом ArduinoJson Assistant. С помощью этой фразы мы будем считывать данные температуры и влажности в городе Jaipur.

Затем, на заключительном шаге, мы будем передавать данные температуры и влажности приемнику LoRa.

Объяснение программы для приемной части проекта (для Arduino)

Первым делом подключим используемые библиотеки и укажем контакты, к которым подключен ЖК дисплей.

Внутри функции void loop() мы будем принимать данные от модуля Lora. После приема пакетов плата Arduino начнет считывать их в виде символов и печатать их на экране ЖК дисплея. Когда она будет получать символ “c”, она будет печатать оставшуюся информацию на второй строчке дисплея.

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

После того как аппаратная и программная части проекта будут готовы, вы можете приступит к тестированию его работы. Передающий модуль Lora будет передавать данные температуры и влажности приемному модулю. А приемный модуль LoRa будет передавать принятые данные плате Arduino, которая будет отображать их на экране ЖК дисплея как показано на следующем рисунке.

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

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

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

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

Источник статьи

(Проголосуй первым!)
Загрузка...
2 322 просмотров

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

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