למיקרו-בקרים יש זיכרון פנימי קטן שאינו מספיק כדי לשמור על נתונים שנוצרו חיישנים לאורך זמן, או שתצטרכו להשתמש בהתקן זיכרון חיצוני כלשהו או שתוכלו לשמור את הנתונים בענן כלשהו באמצעות האינטרנט. כמו כן, מתישהו קשה להתנהל כאשר החיישן פרוס באיזה אתר במצב קיצוני שבו בני אדם לא יכולים להגיע או שקשה לבקר שם לעתים קרובות. כדי לתקן בעיות מסוג זה אנו בודקים תמיד את הדרכים בהן אנו רוצים לפקח על נתוני החיישנים בזמן אמת מכל מקום ללא כל נוכחות פיזית במקום זה.
מסדי נתונים בזמן אמת ניתן להשתמש בתרחיש זה שבו אנו רק צריכים להתממשק בקר אחדים שיכולים להיות מחוברים לאינטרנט ויכול להיות מסוגל להחליף נתונים עם שרת ענן. נתוני השרת יכולים להיות שימושיים במעקב אחר התנהגות מערכת בזמן אמת, ניתוח נתונים, ניתוח ועיבוד סטטיסטי ופרשנות למקרה שימוש עתידי. יש הרבה פלטפורמות חומרה של IoT ופלטפורמות ענן הזמינות לשרת מטרה זו. אם אתה מוצא קשיים במציאת הפלטפורמה המתאימה ליישום ה- IoT שלך, לחץ על הקישור.
בעבר כבר סיקרנו את ThingSpeak, Adafruit IO ותוכנות IoT רבות אחרות. היום אנחנו יהיה לבנות פרויקט דומה שבו נשתמש טמפרטורה ולחות חיישן DHT11 וכן NodeMCU ESP8266 מודול להיכנס הטמפרטורה והלחות בזמן אמת על שרת מסד Firebase של גוגל.
נחלק את הפרויקט לשני חלקים. ראשית, נתחיל בהרכבת רכיבי החומרה והעלאת הקושחה לתוכם. ושנית נשתמש ב- Firebase כדי להתקין עם NodeMCU להחלפת נתונים בזמן אמת. אם אתה לא חדש ב- ESP8266 או ב- Firebase, עקוב אחר ההדרכה הקודמת שלנו בנושא שליטה על LED באמצעות Firebase.
רכיבים נדרשים
- מודול NodeMCU ESP8266
- חיישן טמפרטורה ולחות DHT11
תרשים מעגל
חיישן טמפרטורה ולחות DHT11
מודול DHT11 כולל מתחם לחות וטמפרטורה עם פלט אות דיגיטלי מכויל, כלומר מודול חיישן DHT11 הוא מודול משולב לחישת לחות וטמפרטורה הנותן אות פלט דיגיטלי מכויל. DHT11 נותן לנו ערך מדויק מאוד של לחות וטמפרטורה ומבטיח אמינות גבוהה ויציבות לטווח הארוך. לחיישן זה יש רכיב למדידת לחות מסוג התנגדות ורכיב מדידת טמפרטורה מסוג NTC עם מיקרו-בקר מובנה בעל 8 סיביות, בעל תגובה מהירה וחסכונית וזמין בחבילה של שורה אחת עם 4 פינים.
בעבר השתמשנו ב- ESP12E כדי לעדכן את קריאות ה- DHT11 בשרת האינטרנט, מלבד זאת תוכלו לבדוק את כל הפרויקטים המבוססים על DHT11 שבהם השתמשנו ב- DHT11 כדי להתממשק למיקרו-בקרים רבים אחרים כמו ארדואינו, PIC, פטל ובנו באמצעותם תחנת מזג אוויר.
תכנות NodeMCU ESP8266 ניטור טמפרטורה ולחות חיה
תוכנית שלמה עם וידאו עובד ניתנת בסוף. כאן אנו מסבירים כמה חלקים חשובים בקוד.
ראשית כלול את הספריות לשימוש ב- ESP8266 ו- Firebase.
#לִכלוֹל
הורד והתקן את הספריות באמצעות הקישורים הבאים:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
במהלך הידור , אם נתקלת בשגיאה שספריית ArduinoJson.h אינה מותקנת, אנא התקן אותה באמצעות הקישור לעיל.
אנו נתכנת את NodeMCU שייקח קריאות מחיישן DHT11 ונדחוף אותו ל- Firebase כל 5 שניות במרווח. נקבע נתיב לדחיפת נתונים. כרגע שני פרמטרים כלומר. לחות וטמפרטורה נשלחים באותו מסלול הורה ובמסלול שונה לילדים.
שני פרמטרים אלה חשובים מאוד לתקשורת עם Firebase. הגדרת פרמטרים אלה תאפשר החלפת נתונים בין ו- ESP8266 ו- Firebase. כדי למצוא פרמטרים אלה עבור הפרויקט שלך, עקוב אחר ההדרכה הקודמת שלנו בנושא הגדרת Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // כתובת שם הפרויקט ממזהה Firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // המפתח הסודי שנוצר מ- Firebase
לאחר מציאת האישורים בהצלחה, פשוט החלף את הקוד שלעיל.
הזן את ה- SSID והסיסמה של ה- Wi-Fi שלך כדי להתחבר לרשת שלך.
# הגדר WIFI_SSID "שם רשת" // הזן את שם ה- wifi הביתי או הציבורי שלך # הגדר WIFI_PASSWORD "סיסמה" // סיסמת wifi ssid
הגדר את סיכת נתוני DHT ב- NodeMCU. אתה יכול להשתמש בכל סיכה דיגיטלית של GPIO ב- NodeMCU.
#define DHTPIN D4
ספריית DHT מיוצרת עבור כל גרסאות ה- DHT ומגיעה עם אפשרות לאיזה חיישן DHT ברצונך להשתמש למשל DHT11 או DHT22. פשוט בחרו בחיישן ה- DHT הנכון והמשיכו.
#define DHTTYPE DHT11 // בחר סוג dht כ- DHT 11 או DHT22 DHT dht (DHTPIN, DHTTYPE);
התחבר לרשת ה- Wi-Fi שנבחרה והתחבר גם לשרת מסד הנתונים של firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
התחל לקחת קריאה בסיכה D4 של NodeMCU.
dht.begin ();
קח קריאות לחות וטמפרטורה מחיישן DHT ושמור כערך צף.
לצוף h = dht.readHumidity (); // קריאת טמפרטורה או לחות אורכת כ -250 אלפיות השנייה! לצוף t = dht.readTemperature (); // קרא את הטמפרטורה כצלזיוס (ברירת המחדל)
רק בדוק אם חיישן ה- DHT מחובר כראוי או שהוא אינו פגום והבקר מסוגל לקרוא קריאות ממנו. אם הקריאות אינן מוצגות, כנראה שהחיישן פגום, פשוט הראה הודעת שגיאה וחזור לבדוק שוב מבלי להמשיך קדימה.
אם (isnan (h) - isnan (t)) {// בדוק אם קריאות נכשלו ויצא מוקדם (כדי לנסות שוב). Serial.println (F ("הקריאה נכשלה מחיישן DHT!"); לַחֲזוֹר; }
הדפס נתוני חיישנים בצג סדרתי לצורך איתור באגים ושמור את ערכי הטמפרטורה והלחות בצורה מחרוזת כדי לשלוח אותם לבסיס האש. שים לב גם שהעיכוב המינימלי הנדרש בין שתי קריאות מחיישן DHT11 הוא 2 שניות, לכן השתמש תמיד בעיכוב גדול משתי שניות. למידע נוסף על DHT11 תוכלו לעיין בגליון הנתונים הרשמי.
Serial.print ("לחות:"); Serial.print (h); מחרוזת fireHumid = מחרוזת (h) + מחרוזת ("%"); // להמיר לחות שלמה ללחות מחרוזת Serial.print ("% Temperature:"); סידורי.דפוס (t); Serial.println ("° C"); מחרוזת fireTemp = מחרוזת (t) + מחרוזת ("° C"); עיכוב (4000);
לבסוף, שלח את נתוני הטמפרטורה והלחות לבסיס האש בדרך "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / לחות", fireHumid); // נתיב התקנה ושליחת קריאות Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // נתיב ההתקנה ושליחת קריאות
אתה יכול לראות את כל הנתונים בחשבון firebase שלך. פשוט ללכת " מסד " סעיף ב " הפרויקט שלך " בבית " הקונסולה שלי " בשנת Firebase.
כדי להגדיר את Firebase לשליחה ולניטור הנתונים תוכלו לעיין בהדרכה הקודמת שלנו.
קוד ווידאו מלא עבור ניטור טמפרטורה ולחות מבוסס IoT זה מופיע להלן.