Оглавление:

Lora Gateway на базе MicroPython ESP32: 10 шагов (с изображениями)
Lora Gateway на базе MicroPython ESP32: 10 шагов (с изображениями)

Видео: Lora Gateway на базе MicroPython ESP32: 10 шагов (с изображениями)

Видео: Lora Gateway на базе MicroPython ESP32: 10 шагов (с изображениями)
Видео: LoRa Gateway selber bauen mit ESP32 LoRa Board & Daten an den eigenen Webserver senden 2024, Ноябрь
Anonim
Lora Gateway на базе MicroPython ESP32
Lora Gateway на базе MicroPython ESP32
Lora Gateway на базе MicroPython ESP32
Lora Gateway на базе MicroPython ESP32

Лора в последнее время пользуется большой популярностью. Модуль беспроводной связи, использующий эту технологию, обычно дешев (с использованием свободного спектра), имеет небольшие размеры, энергоэффективен и имеет большое расстояние связи и в основном используется для взаимной связи между терминалами IoT или обмена данными с хостом. На рынке есть много модулей LoRa, например RFM96W, который оснащен (совместимым) чипом SX1278, который очень мал. Я использую его с MakePython ESP32 в качестве шлюза.

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

Шаг 1. Расходные материалы

Запасы
Запасы

1 * MakePython ESP32

MakePython ESP32 - это плата ESP32 со встроенным OLED-дисплеем SSD1306.

2 * Радио Мадуино LoRa

Maduino Lora Radio - это решение для Интернета вещей (IoT), основанное на микроконтроллере Atmel Atmega328P и модуле Lora. Это может быть реальный проект для проектов IoT (особенно для приложений с большим радиусом действия и низким энергопотреблением).

2 * DHT11

1 * MakePython Лора

Шаг 2: узел LoRa

Узел LoRa
Узел LoRa
Узел LoRa
Узел LoRa

Это схема Мадуино Лора Радио.

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

(Этот WiKi знакомит с тем, как использовать Maduino Lora Radio, а также отправлять и получать данные)

Шаг 3: Подключение узла и датчика

Подключение узла и датчика
Подключение узла и датчика
Подключение узла и датчика
Подключение узла и датчика

VCC и GND DHT11 подключены к 3V3 и GND Maduino, а вывод DATA подключен к D4 Maduino.

Узел 0 находится в парке, узел 1 находится в офисном здании рядом с компанией, они находятся на расстоянии около 2 километров друг от друга, а затем я получаю их данные о температуре и влажности дома.

Шаг 4. Отправьте данные на шлюз

Скачайте TransmitterDHT11.ino, откройте его в Arduino IDE.

При добавлении узла измените номер узла соответствующим образом. Например, теперь используйте 2 узла: первый узел для изменения nodenum = 0 для запуска программы, второй узел для изменения nodenum = 1 для запуска программы и так далее, вы можете добавить еще узел.

int16_t packetnum = 0; // счетчик пакетов, мы увеличиваем на каждую передачу

int16_t nodenum = 0; // Изменяем номер узла

Соберите данные и распечатайте их

String message = "#" + (String) nodenum + "Humidity:" + (String) влажность + "% Temperature:" + (String) temperature + "C" + "num:" + (String) packetnum; Serial.println (message); packetnum ++;

Отправить сообщение на rf95_server

uint8_t radioPacket [message.length () + 1];

message.toCharArray (radioPacket, message.length () + 1); radioPacket [message.length () + 1] = '\ 0'; rf95.send ((uint8_t *) radioPacket, message.length () + 1);

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

# 0 Влажность: 6,00% Температура: 27,00 ° C число: 0

Передача: Отправка на rf95_server Отправка… Ожидание завершения пакета… Ожидание ответа… Нет ответа, есть ли слушатель?

Отложите это в сторону, теперь нам нужно сделать Врата Лора.

Шаг 5: MakePython Lora

MakePython Лора
MakePython Лора
MakePython Лора
MakePython Лора
MakePython Лора
MakePython Лора

Это соответствующий вывод модуля RFM96W и MakePython ESP32. Чтобы облегчить соединение с MakePython ESP32, я сделал печатную плату с модулем RFM96W. Да, на нем есть два RFM96W, которые могут отправлять и получать данные одновременно, но теперь мне нужен только один.

Шаг 6: шлюз LoRaWAN

LoRaWAN шлюз
LoRaWAN шлюз

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

Соберите MakePython Lora и ESP32, чтобы создать шлюз, который может получать удаленные данные и выгружать их в Интернет.

Шаг 7: Загрузите код

Загрузите все файлы «xxx.py» с WiKi и загрузите их в ESP32.

Откройте файл LoRaDuplexCallback.py. Вам необходимо внести некоторые изменения, чтобы ваш ESP32 мог подключаться к сети и загружать данные на сервер.

Измените API_KEY, который вы получили в ThingSpeak (я расскажу, как его получить позже)

#https://thingspeak.com/channels/1047479

API_KEY = 'UBHIRHVV9THUJVUI'

Измените SSID и PSW для подключения Wi-Fi

ssid = "Makerfabs"

pswd = "20160704"

Шаг 8: Получите данные

Найдите функцию on_receive (lora, payload) в файле LoRaDuplexCallback.py, где вы можете указать ESP32, что делать после получения данных. Следующий код анализирует и отображает полученные данные о температуре и влажности.

def on_receive (lora, полезная нагрузка):

lora.blink_led () rssi = lora.packetRssi () try: length = len (payload) -1 myStr = str ((payload [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1 + 1):(length1 + 6)] myNum2 = myStr [(length1 + 20):(length1 + 25)] print ("*** Полученное сообщение *** / n {}". format (payload)), если config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (payload [4: length])), rssi) if wlan.isconnected (): global msgCount print ('Отправка в сеть…') node = int (str (payload [5: 6], 'utf-8')), если node == 0: URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 = "+ myNum1 +" & field2 = "+ myNum2 res = urequests.get (URL) print (res.text) elif node == 1: URL =" https://api.thingspeak.com/update?api_key= "+ API_KEY +" & field3 = "+ myNum1 +" & field4 = "+ myNum2 res = urequests.get (URL) print (res.text) за исключением Exception as e: print (e) print (" with RSSI {} n ".format (rssi))

Судя по количеству, чтобы различать узлы, и загружая данные в Интернет через URL-адрес, мы можем отслеживать удаленные данные разных узлов в любое время. Вы можете добавить больше узлов и внести аналогичные изменения в код.

если узел == 0:

URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 =" + myNum1 + "& field2 =" + myNum2 res = urequests.get (URL) print (res.text)

Шаг 9. Используйте ThingSpeak IoT

Используйте ThingSpeak IoT
Используйте ThingSpeak IoT
Используйте ThingSpeak IoT
Используйте ThingSpeak IoT
Используйте ThingSpeak IoT
Используйте ThingSpeak IoT

Шаги:

  1. Зарегистрируйте аккаунт на https://thingspeak.com/. Если он у вас уже есть, войдите в систему напрямую.
  2. Щелкните Новый канал, чтобы создать новый канал ThingSpeak.
  3. Введите имя, описание, выберите поле 1. Затем сохраните канал внизу.
  4. Нажмите на опцию API Keys, скопируйте API Key, мы будем использовать его в программе.

Шаг 10: Результат

Результат
Результат
Результат
Результат
Результат
Результат

Вы можете видеть данные узла 0 и узла 1 на экране, хотя они находятся на расстоянии 2 км друг от друга.

Войдите в свою учетную запись ThingSpeak и щелкните созданный вами канал, вы увидите загруженные данные о температуре и влажности.

График field1 и графики field2 - это данные влажности и температуры узла Lora 0, а график field3 и график field4 - данные влажности и температуры узла Lora 1.

Рекомендуемые: