תוכן עניינים:

תחנת מזג האוויר Inky_pHAT: 5 שלבים
תחנת מזג האוויר Inky_pHAT: 5 שלבים

וִידֵאוֹ: תחנת מזג האוויר Inky_pHAT: 5 שלבים

וִידֵאוֹ: תחנת מזג האוויר Inky_pHAT: 5 שלבים
וִידֵאוֹ: התפקיד שלי הוא לתצפת על היער ומשהו מוזר קורה כאן. 2024, יולי
Anonim
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT
תחנת מזג אוויר Inky_pHAT

אני כאן רוצה לתאר תחנת מזג אוויר מבוססת פטל אפס פשוטה וקומפקטית מאוד, המציגה את הערכים הנמדדים על ידי חיישן טמפרטורה/לחץ/לחות BME280 בתצוגת נייר אלקטרוני/דיו של Pimoroni Inky. כדי לאפשר את חיבור החיישנים ואת ה- pHAT ל- GPIO של ה- Pi הצבתי האקר של Pimorini Pico HAT עם שתי כותרות נקבות מחוברות בין ה- GPIO לתצוגה. המכשיר שימש לחיבור מספר חיישנים, כך שגרסת BME280 המתוארת כאן היא רק דוגמה.

בניגוד למסכי LCD, תצוגות דיו אלקטרוני שומרות על התמונה גם אם החשמל נכבה. לכן הם מהווים פתרון טוב מאוד אם ברצונך להציג מידע המתעדכן מעת לעת, במיוחד לבניית התקנים בעלי אנרגיה נמוכה. היתרון העיקרי של הגרסה המונוכרום/שחור של ה- Inky pHAT הוא שעדכון התצוגה לוקח כשנייה אחת בלבד, במקום עשר עד חמש עשרה שניות הנדרשות על ידי הגרסאות בתלת הצבעים. לראות סרט.

ספריית Blinka של Adafruit מאפשרת להריץ קוד מעגל פייתון ב- Raspberry Pi, ודוגמאות מעגל פייתון למגוון רחב של חיישנים זמינים ב- Adafruit. ניתן למצוא תיאור מפורט כיצד להתקין את Blinka וקודי Circuit Python באתר Adafruit. הספריות שבדקתי עד כה (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) עבדו טוב מאוד, בעוד שהיו בעיות קלות בחלק מהקודים לדוגמה.

BME280 הוא חיישן למדידת טמפרטורה, לחות ולחץ אטמוספרי. התפרצויות BMP280 זמינות מספקים רבים, כולל Adafruit, אבל אני כאן השתמשתי בגרסה סינית זולה. לידיעתך, אלה משתמשים בכתובות i2c שונות (Adafruit: 0x77, אחרות: 0x76).

הפריצה מחוברת ל- Pi על ידי i2c, וקריאת החיישן פשוטה מאוד באמצעות הספרייה והקוד לדוגמה.

שלב 1: חומרים בשימוש

חומרים בשימוש
חומרים בשימוש
חומרים בשימוש
חומרים בשימוש
חומרים בשימוש
חומרים בשימוש
חומרים בשימוש
חומרים בשימוש

פטל פייס אפס, עם כותרת גברית מצורפת. אבל כל גרסת Raspberry Pi תעשה זאת.

פיאטורוני אינקי pHAT, גרסה שחורה/מונוכרום, 25 € | 22 £ | 20US $, ב- Pimoroni.

האקר Pimoroni Pico HAT, 2.50 € | 2 £, עם שתי כותרות מחוברות, אחת מהן כותרת הגבהה עם סיכות ארוכות יותר. בניתי שתי גרסאות שונות, ראה תיאור להלן.

פריצת BME280, משלוח AZ דרך Amazon.de @ 7.50 €, עם כותרת מצורפת.

כבלי מגשר הארכה

אופציונאלי:

מארז חשמל USB, ליישומים ניידים

דיור לפי או למכשיר (לא מוצג כאן)

שלב 2: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
  • הלחם את הכותרות הנשיות להאקר פיקו HAT. לפני הלחמה, בדוק את הכיוון הנכון. בניתי שתי גרסאות של זה למטרות שונות. אחת עם כותרת הגבהה כלפי מטה ממוקמת בשורה הראשונה וכותרת רגילה כלפי מעלה/פונה בשורה האחורית, וגרסה עם כותרת הגבהה כלפי מטה בשורה האחורית, וכותרת נקבה בזווית ישרה בשורה הראשונה. ראה תמונות. הגרסה הראשונה מאפשרת לחבר ולהחליף חיישנים וכבלים בצורה קלה מאוד, בעוד שהגרסה עם הכותרת הפונה פנימה אכן מאפשרת להקיף את פי, החיישן ו- Inky pHAT לתוך בית. לחלופין תוכל להלחם את הכבלים המחברים בין GPIO וחיישן ישירות להאקר ה- Pico HAT ו/או להלחם את האקר ה- Pico HAT ישירות לסיכות GPIO. בכל מקרה השתמש בכמות הלחמה המינימלית הנדרשת.
  • הלחם את הכותרת לחיישן, במידת הצורך.
  • ערמו את יחידת ההאקר Pico HAT שהשתנתה בפי, והוסיפו את ה- pHAT Inky. במידת הצורך, הכנס קצת תמיכה, למשל. בלוק קצף או סטנד-אפים, עבור ה- pHAT Inky.
  • חבר את הכבלים והחיישן באמצעות יציאות 3V, GND, SDA ו- SCL. לא כל החיישנים ישרדו 5V, לכן אנא בדוק לפני שאתה מחבר אותם ליציאות 5V.
  • התקן את ספריית Blinka ולאחר מכן התקן את ספריית ה- Circuit Python BME280 מ- Adafruit.
  • התקן את ספריית Inky pHAT מפימורוני.
  • התקן את קוד Python לדוגמה המתואר בשלב מאוחר יותר ומצורף להוראה זו.
  • הפעל את הקוד.

שלב 3: שימוש במכשיר

שימוש במכשיר
שימוש במכשיר

ישנן שתי אפשרויות לשימוש במכשיר.

הקוד כפי שמוצג כאן יתחיל באמצעות מסך מצורף, אך לאחר מכן יוכל לפעול ללא.

עם שינויים קלים בקוד תוכל להשתמש ב- crontab לביצוע מדידות בנקודות זמן מוגדרות. זה יאפשר להפחית את צריכת החשמל עוד יותר. ניתן למצוא תיאורים מצוינים כיצד להשתמש ב- crontab במקומות אחרים.

יחד עם מארז חשמל אתה יכול לבנות מכשיר נייד ולהשתמש בו למדידת התנאים בפנים או בחוץ, במקרר, בסאונה, בהומידור שלך, במרתף היין, במטוס,….

שימוש ב- Zero W אינך יכול להציג רק את הערכים בתצוגה, אלא גם לשלוח אותם לשרת או לאתר שלך באמצעות WLAN, כפי שמתואר במקומות אחרים.

שלב 4: הסקריפט BME280

הסקריפט BME280
הסקריפט BME280

כפי שצוין קודם לכן, עליך להתקין את ספריות Adafruit Blinka ו- Circuit Python BME280 וכן את ספריית ה- pHAT של פימורוני אינקי.

הקוד מאתחל לראשונה את החיישן ואת Inky pHAT, ואז קורא את ערכי הטמפרטורה, הלחץ והלחות מהחיישן ומציג אותם על המסך ותצוגת הדיו האלקטרוני. באמצעות הפקודה time.sleep (), מדידות נלקחות מדי דקה. התאם כנדרש. על ידי הגדרת פרמטר שפה, תוכל לשנות את השפה המשמשת להצגת התוצאות.

באמצעות תצוגת הדיו האלקטרוני Inky pHAT, אתה בונה תחילה את התמונה שתוצג בזיכרון לפני שהיא תועבר לבסוף למסך באמצעות הפקודה inkyphat.show (). ספריית Inky pHAT מפשטת את התהליך, ומציעה פקודות לציור ועיצוב טקסט, קווים, מלבנים, עיגולים או שימוש בתמונות רקע.

בנוסף לערכים הנמדדים, מוצג גם זמן המדידה.

זכור כי התסריט והספריות כתובות ב- Python 3, לכן פתח והפעל באמצעות Py3 IDLE או שווה ערך.

# תסריט לחיישן טמפרטורה/לחץ/לחות bme280 (גרסה שאינה Adafruit) # ו- pHAT הדיו - גרסה שחורה # # גרסה 01 בדצמבר 2018, ד"ר H # # דורש Adafruit Blinka ו- Circuit Python BME280 # ו- Pimoroni Inky זמן ייבוא ספריית pHAT יבוא תאריך לוח יבוא busio מ- adafruit_bme280 יבוא Adafruit_BME280 מ- adafruit_bme280 יבוא Adafruit_BME280_I2C ייבוא sysy יבוא inkyphat מ- PIL import ImageFont inkyphat.set_colour ('שחור') # לתצוגה דו -כיוונית (דקה) 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # בחר גופן רגיל font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # בחר נתוני גופנים סטנדרטיים # lang = "DE" # פרמטר שפה להגדיר, ברירת מחדל ("") -> אנגלית lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, כתובת = 0x76) # כתובת ברירת מחדל i2c (עבור Adafruit BMP280) 0x77 (ברירת מחדל), 0x76 לפריצה סינית) # לחץ התייחסות מוגדר # נדרש עבור al חישוב כותרת, אנא התאם. ערך סטנדרטי 1013.25 hPa # קלט ידני: #reference_hPa = קלט ("הזן לחץ התייחסות ב- hPa:") # או # הגדר לחץ בזמן ההתחלה כהפניה, למשל. למדידות גובה יחסית זמן. שינה (1) # המתן שנייה לפני המדידה הראשונה j = 0 pres_norm_sum = 0 בעוד j בטווח (5): # קח חמש מדידות כדי להגדיר את ערך ההתייחסות pres_norm_sum = pres_norm_sum + bmp.press j = j + פעם אחת.שינה (1) reference_hPa = (pres_norm_sum/j) # הגדר מדידה פנימית כנקודת התייחסות כדי לאפשר מדידות גובה bmp.sea_level_pressure = float (reference_hPa) print () בעוד True: # פועל לנצח, שנה עבור crontab-version # נמדד ערכים t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # מחושב על ידי ספריית adafruit מהלחץ #timestamp ts = datetime.datetime.now () # חותמת זמן ts0_EN = '{:%Y-% m-%d} '. פורמט (ts) # חותמת זמן - תאריך, פורמט EN ts0_DE =' {:%d.%m.%Y} '. פורמט (ts) # חותמת זמן - תאריך, פורמט גרמני ts1 =' {: %H:%M:%S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". פורמט (t) pre = "{0: 0.1f}". פורמט (p) hyg = "{0: 0.1f}". פורמט (h) alt="{0: 0.1f}". פורמט (א) tText = "Temp.:" pText_EN = "לחץ:" pText_DE = "Luftdruck:" h Text_EN = "לחות:" hText_DE = "יחס. LF: "aText_EN =" Altitude: "aText_DE =" Hühe üNN: " # מדויק: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = h: # ברירת מחדל באנגלית ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # ערכי הדפסה להצגת הדפס (ts) הדפסה (tText, tmp, "° C") הדפסה (pText, pre, "hPa") הדפסה (hText, hyg, " %") הדפסה (aText, alt, "m") הדפסה () # ערכי הדפסה ל- Inky pHAT t1 = 5 # tab 1, טור frist, מפשט את אופטימיזציה של פריסה t2 = 110 # tab 2, inkyphat עמודה שנייה. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # לכתוב תאריך חותמת תאריך inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # לכתוב חותמת זמן inkyphat.line ((t1, 25, 207, 25), 1, 3) # צייר קו inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat. BLACK, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # לחלופין הצג גובה מחושב # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # המתן מספר שניות לפני המדידות הבאות, +19 שניות למחזור inkyphat.clear () # הליך תצוגת pH של Inky pH, inkyphat.show () # שתיקה לגרסת crontab

שלב 5: הסקריפט BMP280

BMP280 דומה מאוד לחיישן BME280, אך רק מודד טמפרטורה ולחץ. התסריטים דומים מאוד, אבל אתה צריך ספריות שונות של מעגלי פייתון. כאן במקום הלחות מוצג גובה מחושב, המבוסס על לחץ ייחוס.

מצורף אתה מוצא את התסריט.

מוּמלָץ: