תוכן עניינים:
- שלב 1: נדרשת חומרה
- שלב 2: חיבורי חומרה
- שלב 3: קוד לתזמון משימות
- שלב 4: קוד לקריאת ערכי טמפרטורה ולחות
- שלב 5: קוד לאירוח שרת אינטרנט
- שלב 6: הגדרת Thingspeak
- שלב 7: קוד לפרסום נתונים לדבר דבר
- שלב 8: קוד כולל
- שלב 9: נקודות זכות
וִידֵאוֹ: אפליקציית טמפרטורה ולחות THINGSPEAK באמצעות ESP8266: 9 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
תוך כדי ההתעסקות בדברים האלקטרוניים שלי, קיבלתי את הרעיון הזה להכין אפליקציית מזג אוויר מבוססת אינטרנט. אפליקציית אינטרנט זו משתמשת בחיישן SHT31 לצורך קבלת נתוני הטמפרטורה והלחות בזמן אמת. פרסנו את הפרויקט שלנו במודול WiFi ESP8266. מקוון או לא מקוון! אין צורך לדאוג, בין אם אתה מחובר או לא מקוון תקבל את עדכוני מזג האוויר מכל מקום ובכל זמן. אפליקציית אינטרנט זו מפרסמת נתונים לשרת האינטרנט המקומי וגם לענן. עבור פעולות ענן, אנו משתמשים ב- ThingSpeak API. SHT31 משתמש ב- I2C כדי לקבל את הנתונים מהחיישן.
SHT 31 הוא חיישני טמפרטורה ולחות מתוצרת Sensirion. SHT31 מספק רמת דיוק גבוהה סביב ± 2% לחות יחסית. טווח הלחות שלו נע בין 0 ל -100% וטווח הטמפרטורות הוא בין -40 ל -125 מעלות צלזיוס. זה הרבה יותר אמין ומהיר עם 8 שניות זמן תגובה של חיישן. הפונקציונליות שלה כוללת עיבוד אותות משופר ותאימות I2C. יש לו אופני פעולה שונים שהופכים אותו לחסכוני בחשמל.
במדריך זה יש לנו ממשק SHT 31 עם לוח Adafruit Huzzah. לקריאת ערכי טמפרטורה ולחות השתמשנו במגן ESP8266 I2C. מתאם זה הופך את כל הפינים לנגישים למשתמש ומציע סביבת I2C ידידותית למשתמש.
שלב 1: נדרשת חומרה
חומרה המשמשת לביצוע משימה זו:
- SHT 31
- Adafruit Huzzah ESP8266
- מתאם I2C ESP8266
- כבל I2C
שלב 2: חיבורי חומרה
שלב זה כולל את מדריך החיבור לחומרה. סעיף זה בעצם מסביר את חיבורי החיווט הנדרשים בין החיישן לבין ה- ESP8266. החיבורים הם כדלקמן.
- SHT31 עובד על I2C. התמונה למעלה מדגימה את הקשר בין מודול ESP8266 ו- SHT31. אנו משתמשים בכבל I2C בשביל זה או שנוכל להשתמש ב -4 חוטי מגשר F עד F.
- חוט אחד משמש ל- Vcc, החוט השני ל- GND ושניים אחרים ל- SDA ו- SCL בהתאמה
- על פי מתאם I2C pin2 וסיכה 14 של לוח ESP8266 משמשים כ- SDA ו- SCL בהתאמה
שלב 3: קוד לתזמון משימות
במדריך זה אנו מבצעים שלוש פעולות
- קרא את הנתונים מ- SHT11 באמצעות פרוטוקול I2C
- לארח את שרת האינטרנט ולפרסם את קריאת החיישן לדף האינטרנט
- פרסם את קריאות החיישן ב- ThingSpeak API
כדי להשיג זאת אנו משתמשים בספריית TaskScheduler. קבענו שלוש משימות שונות המתייחסות לשלוש פעולות בקרה שונות. זה נעשה כדלקמן
- משימה 1 מיועדת לקריאת ערך החיישן משימה זו פועלת למשך שנייה אחת עד שהיא מגיעה לפסק זמן של 10 שניות.
- כאשר משימה 1 מגיעה לפסק הזמן פעלה משימה 2 ומשימה 1 מושבתת.
-
אנו מתחברים ל- AP בשיחה זו, שני משתנים בוליאנים נלקחים כדי לטפל במעבר בין STA ל- AP
- במשימה 2 אנו מארחים שרת אינטרנט בכתובת 192.168.1.4. משימה זו נמשכת כל 5 שניות עד שהיא מגיעה לפסק הזמן שלה שהוא 50 שניות
- כאשר משימה 2 מגיעה לפסק זמן משימה 3 מופעלת ומשימה 2 מושבתת.
- אנו מתחברים ל- STA (IP מקומי) ב Calback זה במשימה 3 אנו מפרסמים את קריאת החיישן לענן ה- ThingSpeak API של ענן
- משימה 3 פועלת כל חמש שניות עד שהגיעה לפסק הזמן שלה כלומר 50 שניות
- כאשר משימה 3 מגיעה לפסק הזמן, משימה 1 מופעלת שוב ומשימה 3 מושבתת.
- כשאין התקשרות חוזרת או שהמכשיר אינו פעיל הוא עובר לשינה קלה ובכך חוסך חשמל.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // משימות עבור i2c, אירוח שרת אינטרנט ופוסט ב- Task2 TI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); משימה tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); TAP Task (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); משימה tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // פסק זמן למשימות tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // אפשר את משימת I2C tI2C.enable ();
שלב 4: קוד לקריאת ערכי טמפרטורה ולחות
אנו משתמשים בספריית Wire.h כדי לקרוא את ערכי הטמפרטורה והלחות. ספרייה זו מאפשרת תקשורת i2c בין החיישן להתקן הראשי. 0x44 היא כתובת I2C עבור SHT31.
SHT31 פועל בצורה שונה של פעולות. תוכל להתייחס לגליון הנתונים לשם כך. אנו משתמשים ב 0x2C ו- 0x06 כ- MSB ו- LSB בהתאמה לפעולת זריקה בודדת.
// I2C callback void taskI2CCallback () {Serial.println ("taskI2CStarted"); שורש int ללא חתום [6]; // התחל את השידור מ- 0x44; Wire.beginTransmission (Addr); // עבור שידור זריקה אחת עם הדירות גבוהה אנו משתמשים ב- 0x2C (MSB) וב- 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // סיום שידור Wire.endTransmission (); // לבקש בתים מ- 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); אם (Wire.available () == 6) {// data [0] ונתונים [1] מכילים טמפרטורת 16 ביט. root [0] = Wire.read (); root [1] = Wire.read (); // נתונים [2] מכיל 8 סיביות של שורש CRC [2] = Wire.read (); // נתונים [3] ונתונים [4] מכילים 16 סיביות של שורש לחות [3] = Wire.read (); root [4] = Wire.read (); // data [5] מורכב משורש CRC של 8 סיביות [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // העברת MSB ב -8 סיביות הוספת LSB float cTemp = -45.0 + (175.0 * temp /65535.0); צף fTemp = (cTemp * 1.8) + 32.0; // העבר את ה- MSB ב -8 סיביות והוסף אותו LSB לחלק ברזולוציה מלאה ו * 100 לאחוזי לחות צפים = (100.0 * ((root [3] * 256.0) + root [4])) /65535.0; tempC = cTemp; tempF = fTemp; לח = לחות; Serial.print ("טמפרטורה ב- C: / t"); Serial.println (מחרוזת (cTemp, 1)); Serial.print ("טמפרטורה ב- F: / t"); Serial.println (מחרוזת (fTemp, 1)); Serial.print ("לחות: / t"); Serial.println (מחרוזת (לחות, 1)); }
שלב 5: קוד לאירוח שרת אינטרנט
אירחנו שרת אינטרנט מהמכשיר שלנו ב- IP סטטי.
ספריית ESP8266 WebServer משמשת לאירוח שרת האינטרנט
- ראשית עלינו להצהיר על כתובת IP, שער ומסכת רשת כדי ליצור את ה- IP הסטטי שלנו
- כעת הצהיר על ssid וסיסמה עבור נקודת הגישה שלך. התחבר לנקודת הגישה מכל מכשיר STA
- לארח את השרת ביציאה 80 שהיא יציאת ברירת מחדל לפרוטוקול תקשורת אינטרנט, פרוטוקול העברת הטקסט (Hypertext Transfer Protocol (HTTP) הזן 192.168.1.4 בדפדפן האינטרנט שלך עבור דף אינטרנט מבוא ו- 192.168.1.4/ערך לקריאת חיישני דף אינטרנט
// סטטי IP עבור APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid ו- AP עבור WiFi מקומי במצב STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid ו- pass עבור AP const char APssid = "********"; const char APpass = "********"; שרת ESP8266 WebServer (80); הגדרת void {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP התחיל"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "קובץ לא נמצא / n / n"; message += "URI:"; הודעה += server.uri (); message += "\ n שיטה:"; הודעה += (server.method () == HTTP_GET)? "GET": "POST"; הודעה += "\ n ארגומנטים:"; הודעה += server.args (); הודעה += "\ n"; server.send (404, "טקסט/רגיל", הודעה); } חיבור מחדש ריק של APWiFi () {WiFi.mode (WIFI_AP_STA); עיכוב (100); WiFi.disconnect (); סטטוס בוליאני = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("הגדרת AP-soft…"); בוליאני ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("מחובר ל: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
שלב 6: הגדרת Thingspeak
ThingSpeak היא פלטפורמת IoT. ThingSpeak הוא שירות אינטרנט בחינם המאפשר לך לאסוף ולאחסן נתוני חיישנים בענן.
בשלב זה, אני אתן לך הליך קצר להגדרת חשבון Thing Speak שלך
- הירשם לחשבון משתמש חדש ב- ThingSpeak
- צור ערוץ חדש על ידי בחירת ערוצים, הערוצים שלי ולאחר מכן ערוץ חדש
- ערוך את השדות שלך
- שדות אלה מכילים את נתוני החיישנים שלך
- שים לב למפתח ה- API ולמזהה הערוץ של Write API
- בשרטוט Arduino שלך, אתה יכול להשתמש בספריית ThingSpeak עבור Arduino או שאתה יכול להעביר את הנתונים ישירות ל- ThingSpeak API
- השלב הבא מפרט לגבי פרסום התוכן ל- Thing Speak API
שלב 7: קוד לפרסום נתונים לדבר דבר
כאן אנו מפרסמים את קריאות החיישן ל- Thing Speak. יש צורך בשלבים הבאים להשלמת משימה זו-
- צור את חשבונך בדבר מדבר צור ערוצים ושדות לאחסון נתוני החיישנים שלך
- אנו יכולים לקבל ולפרסם את הנתונים מ- ESP ל- thingSpeak ולהיפך באמצעות בקשות GET ו- POST ל- api.
- אנו יכולים לפרסם את הנתונים שלנו ל- ThingSpeak כדלקמן
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += מחרוזת (לחה); postStr += "& field2 ="; postStr += מחרוזת (tempC); postStr += "& field3 ="; postStr += מחרוזת (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /עדכון HTTP /1.1 / n"); wifiClient.print ("מארח: api.thingspeak.com / n"); wifiClient.print ("חיבור: סגור / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("סוג תוכן: application/x-www-form-urlencoded / n"); wifiClient.print ("אורך התוכן:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
שלב 8: קוד כולל
הקוד הכולל זמין במאגר GitHub שלי
שלב 9: נקודות זכות
- Arduino JSON
- ESP826 WebServer
- מתזמן משימות
- SHT 31
- סריקת I2C
- מדריך הוראות HIH6130
- חוּט
- NCD.io
מוּמלָץ:
לוח NodeMCU Lua זול 6 $ עם טמפרטורת ולחות רישום של טמפרטורה ולחות, סטטיסטיקות Wifi ומובייל: 4 שלבים
NodeMCU Lua לוח זול של 6 $ עם רישום טמפרטורות ולחות של MicroPython, סטטיסטיקות Wifi וסלולר: זוהי תחנת מזג אוויר עננית בעצם, תוכל לבדוק נתונים בטלפון שלך או להשתמש בטלפון כלשהו כצג חי עם מכשיר NodeMCU תוכל לרשום נתוני טמפרטורה ולחות בחוץ בחדר, בחממה, במעבדה, בחדר הקירור או בכל מקומות אחרים שהושלמו
ניטור טמפרטורה ולחות DHT באמצעות ESP8266 ופלטפורמת IoT של AskSensors: 8 שלבים
ניטור טמפרטורה ולחות DHT באמצעות ESP8266 ופלטפורמת IoT של AskSensors: בהנחיה קודמת הצגתי מדריך צעד אחר צעד להתחלת ה- nodeMCU ESP8266 ופלטפורמת IoT AskSensors. במדריך זה אני מחבר חיישן DHT11. לצומת MCU של הצומת. DHT11 הוא טמפרטורה נפוצה ולחות
נקודת גישה ESP8266 NodeMCU (שרת אינטרנט) עבור שרת אינטרנט עם חיישן טמפרטורה DT11 והדפסת טמפרטורה ולחות בדפדפן: 5 שלבים
נקודת גישה ESP8266 NodeMCU (AP) עבור שרת אינטרנט עם חיישן טמפרטורה DT11 וטמפרטורת הדפסה ולחות בדפדפן: שלום חברים ברוב הפרויקטים בהם אנו משתמשים ב- ESP8266 וברוב הפרויקטים אנו משתמשים ב- ESP8266 כשרת אינטרנט כך שניתן יהיה לגשת לנתונים ב כל מכשיר באמצעות wifi על ידי גישה לשרת האינטרנט המתארח על ידי ESP8266 אך הבעיה היחידה היא שאנחנו צריכים נתב עובד עבור
ניטור טמפרטורה ולחות מרחוק באמצעות אפליקציית ESP8266 ו- Blynk: 15 שלבים
ניטור טמפרטורה ולחות מרחוק באמצעות אפליקציית ESP8266 ו- Blynk: זה היה הפרויקט הראשון שלי עם שבב ESP8266. כרגע בניתי חממה חדשה ליד הבית שלי וזה היה מעניין אותי מה קורה שם במהלך היום? כלומר איך הטמפרטורה והלחות משתנים? האם החממה מאווררת מספיק? אז אני מחליטה
שלוט בארדואינו באמצעות סמארטפון באמצעות USB באמצעות אפליקציית Blynk: 7 שלבים (עם תמונות)
שליטה בארדואינו באמצעות סמארטפון באמצעות USB באמצעות אפליקציית Blynk: במדריך זה נלמד כיצד להשתמש באפליקציית Blynk ובארדואינו על מנת לשלוט במנורה, השילוב יהיה באמצעות יציאה טורית USB. מטרת ההוראה היא להראות את הפתרון הפשוט ביותר לשלוט מרחוק בארדואינו או ב