Mục lục:

ESP32 Lora Thingspeak Gateway với nút cảm biến: 9 bước
ESP32 Lora Thingspeak Gateway với nút cảm biến: 9 bước

Video: ESP32 Lora Thingspeak Gateway với nút cảm biến: 9 bước

Video: ESP32 Lora Thingspeak Gateway với nút cảm biến: 9 bước
Video: PHẦN CỨNG SẢN PHẨM ESP32 KẾT HỢP LORA CHO ỨNG DỤNG IOT 2024, Tháng mười một
Anonim
Cổng ESP32 Lora Thingspeak với nút cảm biến
Cổng ESP32 Lora Thingspeak với nút cảm biến

trong Dự án IoT này, tôi đã thiết kế ESP32 LoRa Gateway và cả ESP32 LoRa Sensor Node để theo dõi cảm biến đọc không dây từ khoảng cách vài km. Người gửi sẽ đọc dữ liệu độ ẩm và nhiệt độ bằng Cảm biến DHT11. Sau đó, nó truyền dữ liệu qua LoRa Radio. Dữ liệu được nhận bởi mô-đun máy thu. Sau đó người nhận sẽ gửi dữ liệu đến Máy chủ Thingspeak sau một khoảng thời gian nhất định.

Bước 1: Các thành phần cần thiết

1. Ban ESP32 - 2

2. Mô-đun Lora SX1278 / SX1276

3. Cảm biến nhiệt độ độ ẩm DHT11

4. Breadboard

5. Kết nối dây Jumper

Bước 2: Cài đặt Thư viện Bắt buộc

Trước tiên, chúng ta cần cài đặt các thư viện khác nhau:

1. Thư viện DHT11

2. Thư viện LoRa

Bước 3: Cổng ESP32 LoRa Thingspeak

Cổng ESP32 LoRa Thingspeak
Cổng ESP32 LoRa Thingspeak
Cổng ESP32 LoRa Thingspeak
Cổng ESP32 LoRa Thingspeak

Bây giờ chúng ta hãy xem mạch người gửi và người nhận để xây dựng ESP32 LoRa Gateway & Sensor Node. Tôi đã lắp ráp cả hai mạch trên một breadboard. Bạn có thể làm nó trên PCB nếu bạn muốn.

Đây là một mạch cổng mô-đun ESP32 LoRa SX1278. Phần này hoạt động như một Bộ thu. Dữ liệu về độ ẩm và nhiệt độ được nhận bằng LoRa Radio và được tải lên Máy chủ Thingspeak.

Bước 4: Nút cảm biến ESP32 LoRa

Nút cảm biến ESP32 LoRa
Nút cảm biến ESP32 LoRa
Nút cảm biến ESP32 LoRa
Nút cảm biến ESP32 LoRa

Đây là một mạch nút cảm biến ESP32 LoRa với cảm biến DHT11. Bộ phận này hoạt động như một máy phát. Dữ liệu về độ ẩm và nhiệt độ được đọc bởi Cảm biến nhiệt độ độ ẩm DHT11 và được truyền qua LoRa Radio.

Bước 5: Thiết lập Thingspeak

Thiết lập Thingspeak
Thiết lập Thingspeak

Để theo dõi dữ liệu cảm biến trên máy chủ Thingspeak, trước tiên bạn cần thiết lập Thingspeak. Để thiết lập Máy chủ Thingspeak, hãy truy cập https://thingspeak.com/. Tạo một tài khoản hoặc chỉ cần đăng nhập nếu bạn đã tạo tài khoản trước đó. Sau đó, tạo một kênh mới với các chi tiết sau.

Bước 6: Mã cổng

#bao gồm

// Các thư viện cho LoRa #include #include // xác định các chân được sử dụng bởi mô-đun thu phát LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 cho Châu Á, 866E6 cho Châu Âu, 915E6 cho Bắc Mỹ // Thay thế bằng thông tin đăng nhập mạng của bạn String apiKey = "14K8UL2QEK8BTHN6"; // Nhập khóa API Viết của bạn từ ThingSpeak const char * ssid = "Wifi SSID"; // thay thế bằng khóa wifi ssid và wpa2 của bạn const char * password = "Password"; const char * server = "api.thingspeak.com"; Máy khách WiFiClient; // Khởi tạo biến để lấy và lưu dữ liệu LoRa int rssi; Chuỗi loRaMessage; Nhiệt độ chuỗi; Độ ẩm chuỗi; Chuỗi readID; // Thay thế trình giữ chỗ bằng các giá trị DHT Bộ xử lý chuỗi (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {nhiệt độ trả về; } else if (var == "HUMIDITY") {trả về độ ẩm; } else if (var == "RRSI") {return String (rssi); } return String (); } void setup () {Serial.begin (115200); bộ đếm int; // thiết lập module thu phát LoRa LoRa.setPins (ss, rst, dio0); // thiết lập module thu phát LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); bộ đếm ++; chậm trễ (2000); } if (counter == 10) {// Số đọc tăng lên trên mỗi lần đọc mới Serial.println ("Không khởi động được LoRa!"); } Serial.println ("Khởi tạo LoRa OK!"); chậm trễ (2000); // Kết nối với mạng Wi-Fi bằng SSID và mật khẩu Serial.print ("Đang kết nối với"); Serial.println (ssid); WiFi.begin (ssid, mật khẩu); while (WiFi.status ()! = WL_CONNECTED) {delay (2000); Serial.print ("."); } // In địa chỉ IP cục bộ và khởi động máy chủ web Serial.println (""); Serial.println ("Đã kết nối WiFi."); Serial.println ("Địa chỉ IP:"); Serial.println (WiFi.localIP ()); } // Đọc gói LoRa và nhận các kết quả đọc của cảm biến void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Đã nhận gói Lora:"); while (LoRa.available ()) // Đọc gói {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Lấy nhiệt độ readID = LoRaData.substring (pos1 +1, pos2); // Lấy nhiệt độ độ ẩm = LoRaData.substring (pos2 + 1, LoRaData.length ()); // Lấy độ ẩm} rssi = LoRa.packetRssi (); // Lấy RSSI Serial.print ("với RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" or api.thingspeak.com {String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (readID); postStr + = "& field2 ="; postStr + = String (nhiệt độ); postStr + = "& field3 ="; postStr + = String (độ ẩm); postStr + = "& field4 ="; postStr + = String (rssi); postStr + = "\ r / n / r / n / r / n / r / n"; client.print ("ĐĂNG / cập nhật HTTP / 1.1 / n"); client.print ("Máy chủ: api.thingspeak.com / n"); client.print ("Kết nối: close / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Loại-Nội dung: application / x-www-form-urlencoded / n"); client.print ("Nội dung-Độ dài:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // độ trễ (30000); }

Bước 7: Mã nút cảm biến

#bao gồm

#include // Libraries for LoRa #include "DHT.h" #define DHTPIN 4 // pin nơi dht11 được kết nối DHT dht (DHTPIN, DHT11); // xác định các chân được sử dụng bởi mô-đun thu phát LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 cho Châu Á, 866E6 cho Châu Âu, 915E6 cho Bắc Mỹ // bộ đếm gói int readID = 0; int bộ đếm = 0; Chuỗi LoRaMessage = ""; nhiệt độ phao = 0; độ ẩm phao = 0; // Khởi tạo mô-đun LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // thiết lập module thu phát LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); bộ đếm ++; chậm trễ (500); } if (counter == 10) {// Số đọc tăng lên trên mỗi lần đọc mới readID ++; Serial.println ("Khởi động LoRa không thành công!"); } Serial.println ("Khởi tạo LoRa OK!"); chậm trễ (2000); } void startDHT () {if (isnan (độ ẩm) || isnan (nhiệt độ)) {Serial.println ("Không đọc được từ cảm biến DHT!"); trở lại; }} void getReadings () {độ ẩm = dht.readHumidity (); nhiệt độ = dht.readTempentic (); Serial.print (F ("Độ ẩm:")); Serial.print (độ ẩm); Serial.print (F ("% Nhiệt độ:")); Serial.print (nhiệt độ); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (nhiệt độ) + "&" + String (độ ẩm); // Gửi gói LoRa tới máy thu LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Đang gửi gói tin:"); Serial.println (readID); readID ++; Serial.println (LoRaMessage); } void setup () {// khởi tạo Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); chậm trễ (500); }

Bước 8: Giám sát dữ liệu trên máy chủ Thingspeak

Giám sát dữ liệu trên máy chủ Thingspeak
Giám sát dữ liệu trên máy chủ Thingspeak
Giám sát dữ liệu trên máy chủ Thingspeak
Giám sát dữ liệu trên máy chủ Thingspeak

Sau khi mã được tải lên, bạn có thể mở Serial Monitor trên cả Gateway & Sensor Node Circuit. Bạn sẽ gửi và nhận dữ liệu nếu mã chính xác. Bây giờ bạn có thể truy cập Thingspeak Private View. Ở đó, bạn có thể thấy dữ liệu về Số gói, Nhiệt độ, Độ ẩm & Cổng được tải lên sau khoảng thời gian 15 giây.

Bước 9: Tham khảo

1.

2.

Đề xuất: