לחות וטמפרטורה הם פרמטרים נפוצים מאוד למדידה במקומות רבים כמו חווה, בית ירוק, רפואה, בית תעשיות ומשרדים. כבר כיסינו מדידת לחות וטמפרטורה באמצעות Arduino והצגנו את הנתונים על גבי LCD.
בפרויקט IoT זה אנו הולכים לעקוב אחר לחות וטמפרטורה דרך האינטרנט באמצעות ThingSpeak שם נציג את נתוני הלחות והטמפרטורה הנוכחיים דרך האינטרנט באמצעות שרת ThingSpeak. זה מושג על ידי תקשורת נתונים בין Arduino, מודול חיישן DHT11, מודול WIFI ESP8266 ו- LCD. מדחום בקנה מידה צלזיוס ומד לחות בקנה מידה אחוז מציג את טמפרטורת הלחות והלחות דרך צג LCD וגם שולח אותו לשרת ThingSpeak לניטור חי מכל מקום בעולם.
הגדרת עבודה ו- ThingSpeak:
פרויקט מבוסס IoT זה כולל ארבעה חלקים, ראשית חיישן לחות וטמפרטורה DHT11 חש את נתוני הלחות והטמפרטורה . שנית, Arduino Uno מחלץ את נתוני חיישן DHT11 כמספר מתאים באחוזים ובסולם צלזיוס, ושולח אותם למודול ה- Wi-Fi. שלישית מודול ה- Wi-Fi ESP8266 שולח את הנתונים ל- Sever של ThingSpeak. ולבסוף ThingSpeak מנתח את הנתונים ומציג אותם בצורה גרפית. LCD אופציונלי משמש גם להצגת טמפרטורה ולחות.
ThingSpeak מספק כלי טוב מאוד לפרויקטים מבוססי IoT עבור Arduino. באמצעות אתר ThingSpeak, אנו יכולים לפקח על הנתונים שלנו באינטרנט מכל מקום, ואנחנו יכולים גם לשלוט במערכת שלנו דרך האינטרנט, באמצעות הערוצים ודפי האינטרנט שמספקים ThingSpeak. ThingSpeak "אוסף" נתון החיישנים, "לנתח ולהציג" נתון "מעשי" על ידי מפעילת תגובה. כאן אנו מסבירים כיצד לשלוח נתונים לשרת ThingSpeak באמצעות מודול WIFI ESP8266:
1. קודם כל, המשתמש צריך ליצור חשבון ב- ThingSpeak.com, ואז להיכנס וללחוץ על התחל.
2. כעת עבור לתפריט 'ערוצים' ולחץ על אפשרות ערוץ חדש באותו עמוד להמשך התהליך.
3. כעת תראה טופס ליצירת הערוץ, מלא את השם והתיאור לפי בחירתך. לאחר מכן מלא את 'לחות' ו'טמפרטורה 'בתוויות שדה 1 ושדה 2, סמן את תיבות הסימון עבור שני השדות. סמן גם את תיבת הסימון של האפשרות 'הפוך לציבורי' למטה בטופס ולבסוף שמור את הערוץ. עכשיו הערוץ החדש שלך נוצר.
4. כעת לחץ על הכרטיסייה 'מפתחות API' ושמור את מפתחות ה- API של כתיבה וקריאה, כאן אנו משתמשים רק במפתח כתיבה. עליכם להעתיק את המפתח הזה ב- char * api_key בקוד.
5. אחריו, לחץ על 'ייבוא / ייצוא נתונים' והעתק את כתובת ה- URL של בקשת GET עדכון ערוץ, כלומר:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. כעת המשתמש צריך לפתוח את "api.thingspeak.com" באמצעות הפונקציה httpGet עם postUrl כ"עדכן? Api_key = SIWOYBX26OXQ1WMS & field1 = 0 "ואז לשלוח נתונים באמצעות עדכון נתונים או כתובת בקשת העדכון.
לפני שליחת הנתונים, המשתמש צריך לערוך מחרוזת שאילתה זו או postUrl עם שדות נתוני טמפרטורה ולחות, כפי שמוצג להלן. כאן הוספנו את שני הפרמטרים במחרוזת שעלינו לשלוח באמצעות בקשת GET לשרת, לאחר מכן השתמשנו ב- httpGet כדי לשלוח את הנתונים לשרת. בדוק את הקוד המלא שלהלן.
Sprintf (postUrl, "עדכן? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
התהליך כולו מודגם בסעיף הווידיאו בסוף מאמר זה.
עבודתו של פרויקט זה מבוססת על תקשורת טורית חד חוטית לאיסוף נתונים מ- DHT11. ראשית Arduino שולח אות התחלה למודול DHT ואז DHT נותן אות תגובה עם נתונים המכילים. Arduino אוסף ומחלץ את הנתונים בשני חלקים הראשון הוא הלחות והשני הוא הטמפרטורה ואז שולח אותם ל 16x2 LCD ושרת ThingSpeak. ThingSpeak מציג את הנתונים בצורה של גרף להלן:
תוכל ללמוד עוד על חיישן DHT11 ועל הממשק שלו עם Arduino כאן.
תיאור המעגל:
החיבורים לפרויקט ניטור טמפרטורה ולחות של ThingSpeak הם פשוטים מאוד. כאן משתמשים בתצוגת גביש נוזלית להצגת טמפרטורה ולחות, המחוברת ישירות לארדואינו במצב 4 סיביות. סיכות של LCD כלומר RS, EN, D4, D5, D6 ו- D7 מחוברות לסיכה הדיגיטלית של Arduino מספר 14, 15, 16, 17, 18 ו- 19. LCD זה אופציונלי.
מודול חיישן DHT11 מחובר לסיכה דיגיטלית 12 של Arduino. מודול ה- Wi-Fi של ה- VP וסיכות GND של ESP8266 מחובר ישירות ל -3.3 וולט ו- GND של Arduino ו- CH_PD מחובר גם ל -3.3 וולט. סיכות Tx ו- Rx של ESP8266 מחוברות ישירות לסיכה 2 ו- 3 של Arduino. הספרייה הסדרתית של התוכנה משמשת כאן גם כדי לאפשר תקשורת טורית בסיכה 2 ו- 3 של Arduino. כבר כיסינו בפירוט את ממשק ה- Wi-Fi ESP8266 ל- Arduino.
חלק תכנות:
חלק מתכנות של פרויקט זה ממלא תפקיד חשוב מאוד לביצוע כל הפעולות. קודם כל אנו כוללים ספריות נדרשות ומאתחלים משתנים.
#include "dht.h" // כולל ספרייה ל- dht #include
אחרי זה הזן את מפתח ה- API של כתוב וקח כמה מחרוזות.
char * api_key = "SIWOYBX26OXQ1WMS"; // הזן את מפתח ה- API שלך של כתוב מ- ThingSpeak char static char postUrl; int humi, tem; בטל httpGet (מחרוזת ip, נתיב מחרוזת, int יציאה = 80);
בשנת לולאת חלל () פונקציה אנחנו קוראים טמפרטורה ולחות ואז להראות קריאות אלה על LCD.
פונקציה void send2server () משמשת לשליחת הנתונים לשרת. פונקציית Send2server היא שגרת שירות להפסקת טיימר, המתקשרת כל 20 שניות. כאשר אנו קוראים לפונקציית העדכון, נקראת שגרת שירות להפסקת טיימר.
בטל send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "עדכן? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }