
Съдържание:
- Стъпка 1: Необходими компоненти
- Стъпка 2: Инсталиране на необходимите библиотеки
- Стъпка 3: ESP32 LoRa Thingspeak Gateway
- Стъпка 4: ESP32 LoRa сензорен възел
- Стъпка 5: Настройване на Thingspeak
- Стъпка 6: Код на шлюза
- Стъпка 7: Код на сензорен възел
- Стъпка 8: Наблюдавайте данните на сървъра Thingspeak
- Стъпка 9: Препратки
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57

в този проект на IoT проектирах ESP32 LoRa Gateway и също ESP32 LoRa сензорен възел за наблюдение на сензора за безжично отчитане от няколко километра разстояния. Изпращачът ще прочете данните за влажността и температурата, използвайки сензора DHT11. След това предава данните чрез LoRa Radio. Данните се получават от приемния модул. След това приемникът ще изпрати данните на Thingspeak Server след определен интервал.
Стъпка 1: Необходими компоненти
1. Платка ESP32 - 2
2. Модул Lora SX1278/SX1276
3. DHT11 Температурен сензор за влажност
4. Платформа
5. Свързване на джъмперни проводници
Стъпка 2: Инсталиране на необходимите библиотеки
Първо трябва да инсталираме различни библиотеки:
1. Библиотека DHT11
2. Библиотека LoRa
Стъпка 3: ESP32 LoRa Thingspeak Gateway


Сега нека видим веригата на изпращача и приемника за изграждане на ESP32 LoRa Gateway & Sensor Node. Сглобих и двете схеми на макет. Можете да го направите на печатна платка, ако искате.
Ето една ESP32 LoRa модул SX1278 Gateway верига. Тази част работи като приемник. Данните за влажността и температурата се получават с помощта на LoRa Radio и се качват на Thingspeak Server.
Стъпка 4: ESP32 LoRa сензорен възел


Ето една верига на възел на сензор ESP32 LoRa със сензор DHT11. Тази част работи като предавател. Данните за влажността и температурата се отчитат от DHT11 датчик за температура на влажност и се предават с помощта на радио LoRa.
Стъпка 5: Настройване на Thingspeak

За да наблюдавате сензорните данни на Thingspeak сървъра, първо трябва да настроите Thingspeak. За да настроите Thingspeak Server, посетете https://thingspeak.com/. Създайте акаунт или просто влезте, ако сте го създали по -рано. След това създайте нов канал със следните подробности.
Стъпка 6: Код на шлюза
#включва
// Библиотеки за LoRa #include #include // дефинирайте щифтовете, използвани от модула за трансивър LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 за Азия, 866E6 за Европа, 915E6 за Северна Америка // Заменете с вашите мрежови идентификационни данни String apiKey = "14K8UL2QEK8BTHN6"; // Въведете своя API API ключ от ThingSpeak const char *ssid = "Wifi SSID"; // заменя с вашия wifi ssid и wpa2 ключ const char *password = "Password"; const char* server = "api.thingspeak.com"; Клиент WiFiClient; // Инициализиране на променливи за получаване и запазване на LoRa данни int rssi; Низ loRaMessage; Температура на низа; Влажност на струните; Низ за четенеID; // Заменя заместителя със стойности на DHT String процесор (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {температура на връщане; } иначе ако (var == "ВЛАЖНОСТ") {връща влажност; } иначе ако (var == "RRSI") {връща низа (rssi); } return String (); } void setup () {Serial.begin (115200); int брояч; // настройка на LoRa трансивър модул LoRa.setPins (ss, rst, dio0); // настройка на трансивър модул LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); брояч ++; забавяне (2000); } if (counter == 10) {// Увеличете ID на четене при всяко ново четене Serial.println ("Стартирането на LoRa не бе успешно!"); } Serial.println ("LoRa инициализацията е ОК!"); забавяне (2000); // Свързване към Wi-Fi мрежа със SSID и парола Serial.print ("Свързване към"); Serial.println (ssid); WiFi.begin (ssid, парола); while (WiFi.status ()! = WL_CONNECTED) {забавяне (2000); Serial.print ("."); } // Отпечатайте локален IP адрес и стартирайте уеб сървъра Serial.println (""); Serial.println ("WiFi свързан."); Serial.println ("IP адрес:"); Serial.println (WiFi.localIP ()); } // Прочетете пакета LoRa и получете показанията на сензора void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Получен пакет Lora:"); while (LoRa.available ()) // Четене на пакет {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Вземете температура на четене ID = LoRaData.substring (pos1 +1, pos2); // Получаване на температурна влажност = LoRaData.substring (pos2+1, LoRaData.length ()); // Получаване на влажност} rssi = LoRa.packetRssi (); // Вземете RSSI Serial.print ("с RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" или api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (readID); postStr += "& field2 ="; postStr += Низ (температура); postStr += "& field3 ="; postStr += Низ (влажност); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /актуализиране на HTTP /1.1 / n"); client.print ("Хост: api.thingspeak.com / n"); client.print ("Връзка: затвори / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Тип съдържание: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // забавяне (30000); }
Стъпка 7: Код на сензорен възел
#включва
#include // Библиотеки за LoRa #include "DHT.h" #дефинирайте DHTPIN 4 // пин, където dht11 е свързан DHT dht (DHTPIN, DHT11); // дефинираме пиновете, използвани от модула на трансивъра LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 за Азия, 866E6 за Европа, 915E6 за Северна Америка // брояч на пакети int readID = 0; int брояч = 0; Низ LoRaMessage = ""; температура на поплавъка = 0; влажност на поплавъка = 0; // Инициализиране на модул LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // настройка на трансивър модул LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); брояч ++; забавяне (500); } if (counter == 10) {// Увеличава readID при всяко ново четене readID ++; Serial.println ("Стартирането на LoRa не бе успешно!"); } Serial.println ("LoRa инициализацията е ОК!"); забавяне (2000); } void startDHT () {if (isnan (влажност) || isnan (температура)) {Serial.println ("Неуспешно четене от DHT сензор!"); връщане; }} void getReadings () {влажност = dht.readHumidity (); температура = dht.readTemperature (); Serial.print (F ("Влажност:")); Serial.print (влажност); Serial.print (F ("% Температура:")); Serial.print (температура); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readID) + "/" + String (температура) + "&" + String (влажност); // Изпращане на LoRa пакет до получателя LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Изпращане на пакет:"); Serial.println (readID); readID ++; Serial.println (LoRaMessage); } void setup () {// инициализира сериен монитор Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); забавяне (500); }
Стъпка 8: Наблюдавайте данните на сървъра Thingspeak


След като кодът бъде качен, можете да отворите серийния монитор както на веригата на шлюза и сензорния възел. Ще изпращате и получавате данни, ако кодът е правилен. Сега можете да посетите Thingspeak Private View. Там можете да видите данните за номер на пакет, температура, влажност и шлюз се качват след интервала от 15 секунди.
Стъпка 9: Препратки
1.
2.
Препоръчано:
Lora Gateway, базиран на MicroPython ESP32: 10 стъпки (със снимки)

Lora Gateway, базиран на MicroPython ESP32: Lora е много популярна през последните години. Безжичният комуникационен модул, използващ тази технология, обикновено е евтин (използва свободен спектър), малък по размер, енергийно ефективен и има голямо разстояние за комуникация и се използва главно за взаимна комуникация
15 $ LoRa шлюз/възел ESP8266 Изграждане на печатна платка 3cmX8cm Размер: 6 стъпки

15 $ LoRa Gateway/Node ESP8266 Build PCB 3cmX8cm Размер: Хей, какво има, момчета? Akarsh тук от CETech. Днес ще направим проект, който е прост възел LoRa и дори можете да го използвате като едноканален шлюз. Тук използваният от мен микроконтролер е ESP8266, който е свързан към платки LoRa
Интелигентен светодиод с възел Mcu и Tasker: 9 стъпки (със снимки)

Интелигентен светодиод с възел Mcu и Tasker: изтегляне на tasker
Сензорен екран за семейна синхронизация и домашен контролен панел със сензорен екран: 7 стъпки (със снимки)

Сензорен сензорен панел за семейно синхронизиране и домашен контролен панел: Имаме календар, който се актуализира ежемесечно със събития, но се извършва ръчно. Ние също сме склонни да забравяме неща, които сме свършили или други дребни задължения. На тази възраст си мислех, че е много по -лесно да има синхронизиран календар и система от тип бележник, която да
Дървото на живота (Arduino капацитивен сензорен сензорен задвижващ серво мотор): 6 стъпки (със снимки)

Дърво на живота (Arduino капацитивен сензорен сензор задвижващ серво мотор): За този проект направихме оризообразуващо дърво, състоящо се от капацитивен сензор за докосване и серво мотор. При докосване на подложката, сервомоторът ще се активира и оризът (или каквото искате да поставите в него) ще бъде освободен. Ето кратко видео