לחות, טמפרטורה ולחץ הם שלושה פרמטרים בסיסיים לבניית כל תחנת מזג אוויר ולמדוד תנאי סביבה. בנינו בעבר מיני תחנת מזג אוויר באמצעות Arduino והפעם אנו מאריכים את תחנת מזג האוויר עם Raspberry Pi. פרויקט זה מבוסס IoT מטרתו להציג את הפרמטרים הנוכחיים של לחות, טמפרטורה ולחץ על ה- LCD וכן בשרת האינטרנט באמצעות Raspberry Pi, מה שהופך אותו לתחנת מזג אוויר של Raspberry Pi. אתה יכול להתקין התקנה זו בכל מקום ויכול לפקח על תנאי מזג האוויר של אותו מקום מכל מקום בעולם באינטרנט, הוא לא רק יציג את הנתונים הנוכחיים אלא יכול גם להציג את ערכי העבר בצורה של גרפים.
השתמשנו בחיישן לחות וטמפרטורה DHT11 לחישת הטמפרטורה ומודול חיישן הלחץ BM180 למדידת לחץ ברומטרי. מדחום בקנה מידה צלזיוס זה ובאחוזים מד לחות מציג את טמפרטורת הסביבה והלחות באמצעות צג LCD והלחץ הברומטרי מוצג במיליבר או hPa (hektopascal). כל הנתונים הללו נשלחים לשרת ThingSpeak לניטור חי מכל מקום בעולם באמצעות האינטרנט. בדוק את תוכנית ההפגנה וידאו ופייתון, שניתנה בסוף מדריך זה.
הגדרת עבודה ו- ThingSpeak:
פרויקט מבוסס IoT זה כולל ארבעה חלקים. ראשית חיישן DHT11 חש את נתוני הלחות והטמפרטורה וחיישן BM180 מודד את הלחץ האטמוספרי. שנית Raspberry Pi קורא את תפוקת חיישן DHT11 באמצעות פרוטוקול חוט יחיד ופלט חיישן לחץ BM180 באמצעות פרוטוקול I2C ומחלץ את שני ערכי החיישנים למספר מתאים באחוזים (לחות), סולם צלזיוס (טמפרטורה), hectoPascal או מיליבר (לחץ). שלישית, ערכים אלה נשלחים לשרת ThingSpeak באמצעות Wi-Fi מובנה של Raspberry Pi 3. ולבסוף ThingSpeak מנתח את הנתונים ומציג אותם בצורה גרפית. LCD משמש גם להצגת ערכים אלה באופן מקומי.
ThingSpeak מספק כלי טוב מאוד לפרויקטים מבוססי IoT. באמצעות אתר ThingSpeak, אנו יכולים לפקח על הנתונים שלנו ולשלוט במערכת שלנו דרך האינטרנט, באמצעות הערוצים ודפי האינטרנט שמספקים ThingSpeak. ThingSpeak "אוסף" נתון החיישנים, "לנתח ולהציג" נתון "מעשי" על ידי מפעילת תגובה. הסברנו בעבר אודות שליחת נתונים ל- ThingSpeak בפירוט, אתה יכול לבדוק שם. כאן אנו מסבירים בקצרה להשתמש ב- ThingSpeak לתחנת מזג האוויר של פטל זה.
ראשית עליך ליצור חשבון באתר ThingSpeak וליצור בו 'ערוץ חדש'. בערוץ חדש עליכם להגדיר כמה שדות עבור הנתונים שרוצים לפקח עליהם, כמו בפרויקט זה ניצור שלושה שדות לנתוני לחות, טמפרטורה ולחץ.
כעת לחץ על הכרטיסייה 'מפתחות API' ושמור את מפתחות ה- API של כתיבה וקריאה, כאן אנו משתמשים רק במפתח כתיבה. עליך להעתיק מפתח זה במשתנה 'מפתח' בקוד.
לאחר מכן לחץ על 'ייבוא / ייצוא נתונים' והעתק את כתובת ה- URL של בקשת GET עדכון ערוץ, כלומר:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
כעת אנו זקוקים ל'כתובת URL של בקשת עדכון 'זו בקוד הפייתון שלנו כדי לפתוח את "api.thingspeak.com" ואז לשלוח נתונים באמצעות בקשת העדכון הזו כמחרוזת שאילתה. ולפני שליחת נתונים המשתמש צריך להזין את נתוני הטמפרטורה, הלחות והלחץ בשאילתה זו מחרוזת באמצעות משתנים בתוכנית, בדוק את הקוד בסוף מאמר זה.
URL = 'https://api.thingspeak.com/update?api_key=%s' מפתח מפתח finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (לַחַץ)
העבודה של DHT11 מבוססת על תקשורת טורית חד חוטית לאיסוף נתונים מ- DHT11. כאן השתמשנו בספריית AdaFruit DHT11 לממשק DHT11 עם Raspberry Pi. Raspberry Pi כאן אוסף את נתוני הלחות והטמפרטורה מ- DHT11 ולחץ האטמוספירה מחיישן BMP180 ואז שולח אותם ל 16x2 LCD ושרת ThingSpeak. ThingSpeak מציג את הנתונים בצורה של גרף להלן:
תוכל ללמוד עוד על חיישן DHT11 ועל הממשק שלו עם Arduino כאן.
תרשים מעגל:
Raspberry Pi תצורה ותוכנית Python:
אנו משתמשים כאן בשפת פיתון לצורך התוכנית. לפני קידוד, המשתמש צריך להגדיר את Raspberry Pi. אתה יכול לבדוק את ההדרכות הקודמות שלנו בנושא התחלת העבודה עם Raspberry Pi והתקנה והגדרת תצורה של Raspbian Jessie OS ב- Pi.
ראשית כל מה שאנחנו צריכים להתקין קבצי ספריית חיישני Adafruit Python DHT כדי להפעיל את הפרויקט הזה ב- Raspberry Pi. לשם כך עלינו לבצע את הפקודות הנתונות:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py להתקין
לאחר מכן, המשתמש צריך לאפשר את Raspberry Pi I2C על ידי מעבר גם לתצורת תוכנת RPi:
sudo raspi-config
לאחר מכן עבור אל 'אפשרויות מקדימות', בחר 'I2C' ו'אפשר 'אותו.
חלק מתכנות של פרויקט זה ממלא תפקיד חשוב מאוד לביצוע כל הפעולות. קודם כל אנו כוללים את כל הספריות הנדרשות, משתנים initiaze ומגדירים סיכות עבור LCD ו- DHT11.
ייבוא sys ייבא RPi.GPIO כ- GPIO ייבוא os ייבוא Adafruit_DHT ייבוא urllib2 ייבוא זמן ייבוא smbus מ- ctypes ייבוא c_short # רישום כתובת regCall = 0xAA……………..
ב def main (): פונקציה, מתחת לקוד משמש לשליחת הנתונים לשרת ולהצגתם על גבי ה- LCD, ברציפות תוך כדי לולאה.
def main (): הדפס 'מערכת מוכנה…' URL = 'https://api.thingspeak.com/update?api_key=%s'% מפתח הדפס "המתן…." בעוד נכון: (humi, temp) = readDHT () (לחץ) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (לחץ) הדפס finalURL s = urllib2.urlopen (finalURL); הדפס humi + "" + temp + "" + לחץ s.close () time.sleep (10)
עבור LCD, def lcd_init () פונקציה משמש לאתחול LCD במצב ארבעה סיביות, def lcdcmd (ch) פונקציה משמש לשליחת פקודה ל- LCD, def lcddata (ch) פונקציה משמש לשליחת נתונים ל LCD ו- def lcdstring (Str ) פונקציה משמשת לשליחת מחרוזת נתונים ל- LCD. אתה יכול לבדוק את כל הפונקציות האלה בקוד שניתן לאחר מכן.
פונקציית def readDHT () נתונה משמשת לקריאת חיישן DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
פונקציית def readBmp180 משמשת לקריאת לחץ מחיישן BM180. חיישן BM180 יכול גם לתת טמפרטורה, אך כאן השתמשנו בו רק לחישוב הלחץ.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # קרא נתוני כיול # המרת נתוני בתים לערכי מילים AC1 = convert1 (ערך, 0) AC2 = convert1 (ערך, 2) AC3 = convert1 (ערך, 4) AC4 = convert2 (ערך, 6)……………………..
אז זו תחנת מזג האוויר הבסיסית של פטל, תוכלו להרחיב אותה עוד יותר כדי למדוד פרמטרים שונים הקשורים למזג האוויר כמו מהירות רוח, טמפרטורת קרקע, עוצמת הארה (לוקס), גשמים, איכות אוויר וכו '.