תוכן עניינים:
וִידֵאוֹ: שער ESP32 Lora Thingspeak עם צומת חיישן: 9 שלבים
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
בפרויקט IoT זה, עיצבתי את ESP32 LoRa Gateway וגם את צומת חיישן ESP32 LoRa כדי לעקוב אחר קריאת החיישן באופן אלחוטי ממרחק של כמה קילומטרים. השולח יקרא את נתוני הלחות והטמפרטורה באמצעות חיישן DHT11. לאחר מכן הוא מעביר את הנתונים באמצעות רדיו LoRa. הנתונים מתקבלים על ידי מודול המקלט. לאחר מכן המקלט ישלח את הנתונים לשרת Thingspeak לאחר מרווח מסוים.
שלב 1: דרושים רכיבים
1. לוח ESP32 - 2
2. מודול לורה SX1278/SX1276
3. חיישן טמפרטורת לחות DHT11
4. לוח לחם
5. חיבור חוטי מגשר
שלב 2: התקנת הספריות הנדרשות
עלינו להתקין ספריות שונות תחילה:
1. ספריית DHT11
2. ספריית LoRa
שלב 3: שער ESP32 LoRa Thingspeak
כעת בואו נראה את מעגל השולח והמקלט לבניית ESP32 LoRa Gate & Node Node. הרכבתי את שני המעגלים על קרש לחם. אתה יכול לעשות את זה על PCB אם אתה רוצה.
להלן מעגל שער ESP32 LoRa SX1278 של מודול LoRa. חלק זה עובד כמקלט. נתוני הלחות והטמפרטורה מתקבלים באמצעות רדיו LoRa ומועלים לשרת Thingspeak.
שלב 4: צומת חיישן ESP32 LoRa
להלן מעגל צומת חיישן ESP32 LoRa עם חיישן DHT11. חלק זה עובד כמשדר. נתוני הלחות והטמפרטורה נקראים על ידי חיישן טמפרטורת הלחות DHT11 ומועברים באמצעות רדיו LoRa.
שלב 5: הגדרת Thingspeak
על מנת לעקוב אחר נתוני החיישן בשרת Thingspeak, תחילה עליך להתקין את Thingspeak. כדי להגדיר את שרת Thingspeak, בקר בכתובת https://thingspeak.com/. צור חשבון או פשוט היכנס אם יצרת את החשבון קודם לכן. לאחר מכן צור ערוץ חדש עם הפרטים הבאים.
שלב 6: קוד שער
#לִכלוֹל
// ספריות עבור LoRa #include #include // הגדר את הסיכות המשמשות את מודול מקלט המשדרים LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 לאסיה, 866E6 לאירופה, 915E6 לצפון אמריקה // החלף עם אישורי הרשת שלך מחרוזת apiKey = "14K8UL2QEK8BTHN6"; // הזן את מפתח ה- Write 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; טמפרטורת מחרוזת; לחות מחרוזת; מזהה קריאה מחרוזת; // מחליף מציין מיקום במעבד מחרוזת DHT (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {טמפרטורת החזרה; } אחרת אם (var == "HUMIDITY") {לחות חוזרת; } else if (var == "RRSI") {מחזור החזרה (rssi); } מחזור מחזור (); } הגדרת חלל () {Serial.begin (115200); מונה int; // הגדרת מודול משדר LoRa LoRa.setPins (ss, rst, dio0); // הגדרת מודול משדר LoRa בעוד (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); מונה ++; עיכוב (2000); } if (counter == 10) {// תוספת קריאה מזהה בכל קריאה חדשה Serial.println ("הפעלת LoRa נכשלה!"); } Serial.println ("אתחול הלורה בסדר!"); עיכוב (2000); // התחבר לרשת Wi-Fi עם SSID וסיסמה Serial.print ("מתחבר ל-"); Serial.println (ssid); WiFi.begin (ssid, סיסמא); בעוד (WiFi.status ()! = WL_CONNECTED) {עיכוב (2000); Serial.print ("."); } // הדפס כתובת IP מקומית והפעל את שרת האינטרנט Serial.println (""); Serial.println ("WiFi מחובר."); Serial.println ("כתובת IP:"); Serial.println (WiFi.localIP ()); } // קרא את חבילת LoRa וקבל את קריאת החיישן לולאת חלל () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("חבילת לורה התקבלה:"); while (LoRa.available ()) // Read packet {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // קבל טמפרטורת ReadingID = LoRaData.substring (pos1 +1, pos2); // קבל לחות בטמפרטורה = LoRaData.substring (pos2+1, LoRaData.length ()); // קבל לחות} rssi = LoRa.packetRssi (); // קבל RSSI Serial.print ("עם RSSI"); Serial.println (rssi); } if (client.connect (שרת, 80)) // "184.106.153.149" או api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (readingID); postStr += "& field2 ="; postStr += מחרוזת (טמפרטורה); postStr += "& field3 ="; postStr += מחרוזת (לחות); postStr += "& field4 ="; postStr += מחרוזת (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 ("אורך התוכן:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // עיכוב (30000); }
שלב 7: קוד צומת חיישן
#לִכלוֹל
#include // Libraries for LoRa #include "DHT.h" #define DHTPIN 4 // pin שבו מחובר dht11 DHT dht (DHTPIN, DHT11); // הגדר את הפינים המשמשים את מודול מקלט המשדרים LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 לאסיה, 866E6 לאירופה, 915E6 לצפון אמריקה // מונה מנות int readingID = 0; מונה int = 0; מחרוזת LoRaMessage = ""; טמפרטורת מצוף = 0; לחות צפה = 0; // אתחל מודול LoRa חלל startLoRA () {LoRa.setPins (ss, rst, dio0); // הגדרת מודול משדר LoRa בעוד (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); מונה ++; עיכוב (500); } if (counter == 10) {// הגדלת קריאה מזהה בכל קריאת קריאה חדשה ++; Serial.println ("הפעלת LoRa נכשלה!"); } Serial.println ("אתחול הלורה בסדר!"); עיכוב (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 (readingID) + "/" + String (טמפרטורה) + "&" + String (לחות); // שלח חבילת LoRa למקלט LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("משלוח חבילה:"); Serial.println (readingID); readingID ++; Serial.println (LoRaMessage); } הגדרת void () {// לאתחל את Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } לולאת חלל () {getReadings (); sendReadings (); עיכוב (500); }
שלב 8: עקוב אחר הנתונים בשרת Thingspeak
לאחר העלאת הקוד, תוכל לפתוח את הצג הסידורי הן במעגל הצומת של Gateway & Sensor. תוכל לשלוח ולקבל נתונים אם הקוד נכון. עכשיו אתה יכול לבקר ב- Thingspeak View Private. שם אתה יכול לראות את הנתונים עבור מספר מנות, טמפרטורה, לחות ושער מועלה לאחר המרווח של 15 שניות.
שלב 9: הפניות
1.
2.