Mục lục:
- Bước 1: Các thành phần cần thiết
- Bước 2: Cài đặt Thư viện Bắt buộc
- Bước 3: Cổng ESP32 LoRa Thingspeak
- Bước 4: Nút cảm biến ESP32 LoRa
- Bước 5: Thiết lập Thingspeak
- Bước 6: Mã cổng
- Bước 7: Mã nút cảm biến
- Bước 8: Giám sát dữ liệu trên máy chủ Thingspeak
- Bước 9: Tham khảo
Video: ESP32 Lora Thingspeak Gateway với nút cảm biến: 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
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
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
Đâ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
Để 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
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:
Tự làm cảm biến hơi thở với Arduino (Cảm biến kéo giãn dệt kim dẫn điện): 7 bước (có hình ảnh)
Cảm biến hơi thở tự làm với Arduino (Cảm biến kéo giãn dệt kim dẫn điện): Cảm biến tự làm này sẽ có dạng một cảm biến kéo giãn dệt kim dẫn điện. Nó sẽ quấn quanh ngực / dạ dày của bạn và khi ngực / dạ dày của bạn giãn ra và co lại, cảm biến cũng sẽ như vậy, và do đó, dữ liệu đầu vào được cung cấp cho Arduino. Vì thế
Cảm biến giao diện, SPS-30, Cảm biến vật chất dạng hạt với Arduino Duemilanove sử dụng chế độ I2C: 5 bước
Cảm biến giao diện, SPS-30, Cảm biến vật chất hạt với Arduino Duemilanove Sử dụng chế độ I2C: Khi tôi đang xem xét các cảm biến giao tiếp SPS30, tôi nhận ra rằng hầu hết các nguồn đều dành cho Raspberry Pi nhưng không nhiều cho Arduino. Tôi dành một ít thời gian để làm cho cảm biến hoạt động với Arduino và tôi quyết định đăng trải nghiệm của mình ở đây để nó có thể
Giao diện Arduino với cảm biến siêu âm và cảm biến nhiệt độ không tiếp xúc: 8 bước
Giao diện Arduino với cảm biến siêu âm và cảm biến nhiệt độ không tiếp xúc: Ngày nay, các nhà sản xuất, nhà phát triển đang ưa thích Arduino để phát triển nhanh chóng việc tạo mẫu của các dự án. Arduino là một nền tảng điện tử mã nguồn mở dựa trên phần cứng và phần mềm dễ sử dụng. Arduino có cộng đồng người dùng rất tốt. Trong chương trình này
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] DỮ LIỆU CẢM BIẾN NHIỀU LOẠI CẢM BIẾN !: 3 bước
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] DỮ LIỆU CẢM BIẾN NHIỀU LẦN!: Xin chào, tôi thấy rằng thiếu thông tin về cách đăng nhiều dữ liệu cảm biến để điều khiển bằng Arduino Uno với mô-đun SIM900. Vì vậy, tôi đã hướng dẫn ngắn gọn về kết nối và cấu hình Arduino UNO với SIM900 và cảm biến DHT22. Dữ liệu từ DHT22 (temper
Cảm biến cảm ứng & Cảm biến âm thanh Điều khiển đèn AC / DC: 5 bước
Cảm biến cảm ứng & Cảm biến âm thanh Điều khiển đèn AC / DC: Đây là dự án đầu tiên của tôi và dự án này hoạt động dựa trên hai cảm biến cơ bản, một là Cảm biến cảm ứng và cảm biến thứ hai là Cảm biến âm thanh, khi bạn nhấn bàn phím trên cảm biến cảm ứng, đèn AC sẽ chuyển BẬT, nếu bạn nhả nó ra, Đèn sẽ TẮT và cùng