תוכן עניינים:
- שלב 1: נדרשת חומרה
- שלב 2: חיבורי חומרה
- שלב 3: קוד לתזמון משימות
- שלב 4: קוד לקריאת ערכי טמפרטורה ולחות
- שלב 5: קוד לאירוח שרת אינטרנט
- שלב 6: קוד לפרסום נתונים לדבר דבר
- שלב 7: קוד כולל
וִידֵאוֹ: אפליקציית Weather Weather באמצעות Esp8266: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
SHT 31 הוא חיישני טמפרטורה ולחות מתוצרת Sensirion. SHT31 מספק רמת דיוק גבוהה סביב ± 2% לחות יחסית. טווח הלחות שלו נע בין 0 ל -100% וטווח הטמפרטורות הוא בין -40 ל -125 מעלות צלזיוס. זה הרבה יותר אמין ומהיר עם 8 שניות זמן תגובה של חיישן. הפונקציונליות שלה כוללת עיבוד אותות משופר ותאימות I2C. יש לו אופני פעולה שונים שהופכים אותו לחסכוני בחשמל.
במדריך זה יש לנו ממשק SHT 31 עם לוח Adafruit Huzzah. לקריאת ערכי טמפרטורה ולחות השתמשנו במגן ESP8266 I2C. מתאם זה הופך את כל הפינים לנגישים למשתמש ומציע סביבת I2C ידידותית למשתמש.
שלב 1: נדרשת חומרה
חומרה המשמשת לביצוע משימה זו:
1. SHT31
2. חזרת Adafruit ESP8266
3. מתאם I2C ESP8266
4. כבל 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 מקומי) בשיחת החזרה הזו
- במשימה 3 אנו מפרסמים את קריאת החיישן לענן ה- ThingSpeak API
- משימה 3 פועלת כל חמש שניות עד שהגיעה לפסק הזמן שלה כלומר 50 שניות
- כאשר משימה 3 מגיעה לפסק הזמן שלה משימה 1 מופעלת שוב ומשימה 3 מושבתת.
- כשאין התקשרות חוזרת או שהמכשיר אינו פעיל הוא עובר לשינה קלה ובכך חוסך חשמל.
מתזמן ts;
// משימות עבור i2c, אחסון שרת אינטרנט ופרסום ב- Thingspeak
משימה 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 משימה I2CCallback ()
{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 שהיא יציאת ברירת מחדל לפרוטוקול תקשורת אינטרנט, פרוטוקול העברת הטקסט (HTTP)
- הזן 192.168.1.4 בדפדפן האינטרנט שלך עבור דף אינטרנט מבוא ו- 192.168.1.4/ערך לקריאת חיישני דף אינטרנט
// סטטי Ip עבור AP
IPAddress 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 והעבר ל- AP
const char APssid = "********";
const char APpass = "********";
שרת ESP8266 WebServer (80);
הגדרת בטל {
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);
אם (סטטוס == נכון) {
Serial.print ("הגדרת soft-AP …");
בוליאני ap = WiFi.softAP (APssid, APpass);
אם (ap == true) {
Serial.print ("מחובר ל: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
שלב 6: קוד לפרסום נתונים לדבר דבר
כאן אנו מפרסמים את קריאות החיישן ל- Thing Speak. יש צורך בשלבים הבאים להשלמת משימה זו-
- צור את החשבון שלך בדבר מדבר
- צור ערוצים ושדות לאחסון נתוני החיישנים שלך
- אנו יכולים לקבל ולפרסם את הנתונים מ- ESP ל- thingSpeak ולהיפך באמצעות בקשות GET ו- POST ל- api.
- אנו יכולים לפרסם את הנתונים שלנו ל- ThingSpeak כדלקמן
void 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 (); }
שלב 7: קוד כולל
הקוד הכולל זמין במאגר github שלי
נקודות זכות:
- Arduino JSON: ArduinoJson
- ESP826 WebServer
- מתזמן משימות
- SHT 31
- סריקת I2C
- מדריך הוראות HIH6130
- חוט ארדואינו
- NCD.io
מוּמלָץ:
שליטה ב- Led באמצעות אפליקציית Blynk באמצעות Nodemcu דרך האינטרנט: 5 שלבים
שליטה באמצעות LED באמצעות אפליקציית Blynk באמצעות Nodemcu דרך האינטרנט: שלום לכולם היום נראה לכם כיצד תוכלו לשלוט על LED באמצעות סמארטפון דרך האינטרנט
שליטה ב- ESP8266 באמצעות אפליקציית טלגרם: 7 שלבים
שליטה ב- ESP8266 באמצעות אפליקציית טלגרם: היי, מה קורה חבר'ה! אקרש כאן מ- CETech. האם תהית פעם על צ'ט עם המכשירים שלך באמצעות אפליקציית העברת הודעות? נשמע מוזר, נכון. אבל היום אנחנו הולכים לעשות דבר דומה לזה. אל תדאג אתה לא צריך לקנות טלפונים ניידים
IOT: ESP 8266 Nodemcu השליטה ברצועת LED Neopixel Ws2812 באמצעות האינטרנט באמצעות אפליקציית BLYNK: 5 שלבים
IOT: ESP 8266 Nodemcu השליטה ברצועת LED Neopixel Ws2812 באמצעות האינטרנט באמצעות אפליקציית BLYNK: שלום חבר'ה, במדריך זה הכנתי מנורה באמצעות רצועת LED של neopixel הניתנת לשליטה באינטרנט מכל רחבי העולם באמצעות אפליקציית BLYNK ו- nodemcu היא עובד כמוח של הפרויקט הזה, אז הפוך את אור הסביבה שלך עבורך
שלוט בארדואינו באמצעות סמארטפון באמצעות USB באמצעות אפליקציית Blynk: 7 שלבים (עם תמונות)
שליטה בארדואינו באמצעות סמארטפון באמצעות USB באמצעות אפליקציית Blynk: במדריך זה נלמד כיצד להשתמש באפליקציית Blynk ובארדואינו על מנת לשלוט במנורה, השילוב יהיה באמצעות יציאה טורית USB. מטרת ההוראה היא להראות את הפתרון הפשוט ביותר לשלוט מרחוק בארדואינו או ב
ROOMBA מונע על ידי ARDUINO YUN באמצעות אפליקציית Wifi באמצעות STEFANO DALL'OLIO: 4 שלבים (עם תמונות)
ROOMBA מונע על ידי ARDUINO YUN באמצעות אפליקציית Wifi על ידי STEFANO DALL'OLIO: בעזרת מדריך זה אני משתף את הקוד לחיבור ARDUINO YUN לרומבה על מנת להסיע את Roomba באמצעות Wifi. הקוד והאפליקציה נוצרים ומפותחים במלואם על ידי עצמי סטפנו דאל ' Olio.My Roomba הוא Roomba 620 אבל אתה יכול להשתמש באותו קוד עבור Roomb אחר