
תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46

בפרויקט 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.
מוּמלָץ:
IoT: הדמיה של נתוני חיישן אור באמצעות צומת אדום: 7 שלבים

IoT: הדמיה של נתוני חיישן אור באמצעות Node-RED: במדריך זה תלמד כיצד ליצור חיישן מחובר לאינטרנט! אני אשתמש בחיישן אור סביבה (TI OPT3001) להדגמה זו, אך כל חיישן לבחירתך (טמפרטורה, לחות, פוטנציומטר וכו ') יעבוד. ערכי החיישן
שליחת נתוני חיישן רטט וחיישן טמפרטורה לאקסל באמצעות צומת אדום: 25 שלבים

שליחת נתוני חיישן רטט וחיישן טמפרטורה לאקסל באמצעות Node-RED: הצגת חיישן רטט וטמפרטורה אלחוטי תעשייתי אלחוטי של NCD בטווח הרחוק של 2 קילומטרים בשימוש במבנה רשת אלחוטית. מכשיר זה כולל חיישן רטט וטמפרטורה מדויק של 16 סיביות, מכשיר זה עובר
יצירת התראות דוא"ל של חיישן טמפרטורה ולחות אלחוטי NCD באמצעות צומת אדום: 22 שלבים

יצירת התראות דוא"ל של חיישן טמפרטורה ולחות אלחוטי NCD באמצעות צומת אדום: אנו משתמשים כאן בחיישן הטמפרטורה והלחות של NCD, אך השלבים נשארים שווים לכל אחד ממוצר ה- ncd, כך שאם יש לך חיישנים אלחוטיים אחרים מסוג ncd, ניסיון ללא עלות להתבונן לצד חוץ מזה. בעזרת עצירת הטקסט הזה, עליך
חיישן טמפרטורה ולחות אלחוטי לטווח ארוך של IOT עם צומת אדום: 27 שלבים

חיישן טמפרטורה ולחות אלחוטי לטווח ארוך של IOT עם Node-Red: היכרות עם חיישן לחות טמפרטורה אלחוטית לטווח ארוך של NCD, המתגאה בטווח של עד 28 מייל באמצעות ארכיטקטורת רשת אלחוטית. שילוב חיישן הטמפרטורה ולחות הטמפרטורה של Honeywell HIH9130 מעביר טמפרטורה מדויקת ביותר
IOT123 - נקודת חיישן אסמיליטיבית: צומת ICOS10 3V3 MQTT: 6 שלבים

IOT123 - HUB SENSOR ASSIMILATE: ICOS10 3V3 MQTT MODE: זהו הראשון במגוון שילובי MCU/תכונה ב HUBS SENSOR ASSIMILATE: המאסטרים שאוספים את מזבלות הנתונים מעבדי I2C ASSIMILATE SENSORS. מבנה זה משתמש ב- Wemos D1 Mini, כדי לפרסם כל נתונים שנזרקו מה- ASSIMILATE