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

תחנת מזג אוויר נוספת של IoT: 8 שלבים
תחנת מזג אוויר נוספת של IoT: 8 שלבים

וִידֵאוֹ: תחנת מזג אוויר נוספת של IoT: 8 שלבים

וִידֵאוֹ: תחנת מזג אוויר נוספת של IoT: 8 שלבים
וִידֵאוֹ: Camera-LAMP עם מעקב וזיהוי של אדם. 2024, נוֹבֶמבֶּר
Anonim
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT
עוד תחנת מזג אוויר IoT

להלן מתנת יום הולדת לאבי; בהשראת הוראה נוספת שראיתי ובתחילה התכוונתי להוכיח לו כערכה לבנייה עצמית. אולם כשהתחלתי לעבוד על הפרויקט הזה איתו מהר מאוד הבנתי שההדרכה הראשונית שנתנה השראה למתנה מיושנת וכי להרבה מהדרכות מקוונות אחרות יש פערים משמעותיים בהסברים שלהן. לכן החלטתי לפרסם תחנת מזג אוויר נוספת של IoT, שנקווה שיהיה קל לעקוב אחר הטופס מתחילתו ועד סופו.

עוד מדריך זה מראה לך כיצד להשתמש ב- Blynk, Google Sheets או שניהם כדי לפקח ולהקליט קריאות חיישן. יתרה מכך, ערכי Google Sheets נכתבים ישירות לדף (ללא צורך בשירות של צד שלישי).

לגבי מסך סטיבנסון, יש הרבה זמינים ברשת שניתן להדפיס בתלת מימד למשל https://www.thingiverse.com/thing:1718334. אני אבנה על זה בשביל המדריך הזה.

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

חלקים

  • Wemos LolIn - NodeMCU v3 (1.43 דולר)
  • BME280 (חיישן טמפרטורה, לחץ ולחות) (USD 2.40)
  • פאנל סולארי 6V 1000mA (9.96 דולר)
  • 5V 1A מיקרו USB 18650 סוללת ליתיום טעינת לוח מטען+הגנה פונקציות כפולות TP4056 (USD 0.99)
  • 4 x סוללות נטענות NiMH 1.2V
  • מחזיק סוללות (4x AA, זה לצד זה וקצה לקצה)
  • תקע מחבר מיקרו USB זכר
  • קשרי כבל
  • 3x אגוזי כנף
  • מוט או מקל מטאטא
  • אפוקסי ו/או דבק-על (בדיעבד, הסיליקון אולי היה עובד טוב יותר)

תוֹכנָה

  • אפליקציית Blynk
  • Google Sheets (אם ברצונך לקבל גישה לנתונים ההיסטוריים)
  • EasyEDA (לציור סכמטי)
  • Arduino IDE

כלים

  • מלחם
  • לְרַתֵך
  • צינורות כיווץ חום
  • מדפסת תלת מימד
  • אקדח דבק

שלב 1: הדפסה תלת מימדית - מסך סטיבנסון

הדפסה תלת מימדית - מסך סטיבנסון
הדפסה תלת מימדית - מסך סטיבנסון
הדפסה תלת מימדית - מסך סטיבנסון
הדפסה תלת מימדית - מסך סטיבנסון
הדפסה תלת מימדית - מסך סטיבנסון
הדפסה תלת מימדית - מסך סטיבנסון

כפי שכבר צוין, הורד את הקבצים מ- https://www.thingiverse.com/thing:1718334 והדפס את הביטים הנדרשים. הוראות הרכבה נמצאות גם בקישור לעיל. עשיתי כמה שינויים (ראה הערות להלן).

החלקים המודפסים הם:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL מצורף למעלה)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL מצורף למעלה)

צו ההרכבה הוא:

  • השחילו את החורים
  • הברג את מוטות M3 לשקעי הברגה
  • כיסוי עליון
  • לוח_סוליד
  • טבעות_אמצע
  • החלק את Sensor_Grid
  • Mount_Mount
  • Solid_Plate_Bottom
  • Pole_Mount
  • My_Solar_Cell_Mounts מועברים אל החלק העליון של ה- Top_Cover

קידחתי חורים בלוחות Solid כדי לאפשר לכבל הטעינה מהפאנל הסולארי להתחבר למטען ולאחר מכן לאפשר לכבל לפעול מהבקר אל החיישן ב- Sensor_Grid.

לאחר השלמתו, החיישן תוכנת לבצע את הקריאות הבאות כל 60 דקות:

  • טֶמפֶּרָטוּרָה
  • לחות
  • לַחַץ

הערות

  • התאמתי אישית את תושבות התא הסולארי כך שיתאימו יותר לאחיזה של התא הסולארי שלי.
  • התקנתי את האלקטרוניקה בין ה- Pole_Mount ו- Solid_Plate. נראה שזה לא סיפק הגנה טובה לאלקטרוניקה. לכן שיניתי את Solid_Plate כך שיהיה לה חצאית שתסגור את הפער ובכך תספק הגנה טובה יותר לאלקטרוניקה. חלק מהתמונות לעיל צולמו לפני שביצעתי את השינוי הזה.
  • האפוקסי שלי נחת ולא החזיק את הפאנל הסולארי שאותו חיברתי מחדש עם דבק סופר. אני חושב שאזכה להשתמש בסיליקון.

שלב 2: המעגל

המעגל
המעגל
המעגל
המעגל

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

BME280 -> לילון

  • VCC -> 3.3V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

לילון -> לילון

D0 -> RST (יש צורך בכך כדי להעיר את הבקר משינה עמוקה אך יש לחבר אותו רק לאחר העלאת הקוד לבקר)

הערה

היו לי אתגרים להשיג סוללת לילון מתאימה. גם משום מה לא הצלחתי להפעיל באמצעות VIN. לכן הפעלתי כדלקמן:

  • הפלט מה- TP4056 היה מחובר למחבר ה- USB של זכר אשר חובר לאחר מכן לשקע ה- USB של הלוח על מנת להפעיל אותו.
  • B- ו- B+ ב- TP4056 חוברו למחזיק הסוללות AA שהכיל את סוללות ה- NiMH.

שלב 3: IoT - בלינק

IoT - בלינק
IoT - בלינק
IoT - בלינק
IoT - בלינק
IoT - בלינק
IoT - בלינק
IoT - בלינק
IoT - בלינק

"Blynk היא פלטפורמת IoT אגנוסטית לחומרה עם יישומים ניידים הניתנים להתאמה אישית, ענן פרטי, מנוע כללים ולוח מחוונים לניהול מכשירים". בעיקרון הוא מאפשר לך לנהל ולפקח באופן מאובטח על חיישנים מרוחקים מכל מקום בעולם באמצעות האינטרנט. בעוד שהוא שירות מסחרי, לכל חשבון יש 2000 זיכויים בחינם. זיכויים מאפשרים לך לשייך מדידים, תצוגות, הודעות וכו 'לחיישן או לחיישנים שלך. בעוד שתמחור המנויים הוא מחוץ לתחום התקציב של חובבנים, הזיכויים החינמיים מספיקים לפרויקט פשוט כמו זה.

כדי להתחיל להשתמש בשירות, יהיה עליך להוריד תחילה את אפליקציית Blynk לטלפון/למכשיר שלך, ליצור חשבון (או להיכנס עם חשבון קיים) ולאחר מכן ליצור פרויקט חדש כדלקמן:

  • בחר את החומרה שלך
  • תן שם לפרויקט שלך (במקרה זה השתמשתי ב"תחנת מזג אוויר ".
  • לחץ על "צור"
  • לאחר מכן אתה מקבל אליך קוד אימות בדואר אלקטרוני.

לא תצטרך להוסיף את הווידג'טים הנדרשים. עם 2000 הקרדיטים החינמיים שלי הוספתי את הדברים הבאים:

  • 3 מדידים
  • 1 סופר תרשים

המדדים והתרשימים הוצבו בהתאם לתמונות המצורפות, ולכל אחד מהם הוקצה סיכה וירטואלית משלו שתשמש את הקוד האחרון.

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

למידע נוסף ראו

docs.blynk.cc/#getting-started.

שלב 4: קוד - הכנת IDE Arduino

כדי להוסיף פרויקט זה יהיה צורך להוסיף את הספריות הבאות ל- Arduino IDE:

  • https://github.com/adafruit/Adafruit_BME280_Library (צורך בחיישן הטמפרטורה, הלחץ והלחות)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (זה נותן לך גישה ללוח ESP8266)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (ספריית Blynk)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (נדרש HTTPSRedicect לחיבור ל- Google Sheets)

להוראות התקנת ספריות עבור Arduino IDE, בקר בכתובת

הגדרות החומרה שלי הן כדלקמן:

  • לוח: NodeMCU 1.0 (מודול ESP-12E)
  • מהירות העלאה: 115200

בעת שימוש בקוד המצורף בשלבים הבאים, אנא עיין תמיד בהערות בקוד ביחס להוספת הדברים הבאים:

  • SID Wifi
  • סיסמת Wifi
  • מפתח הרשאה Blynk
  • מזהה סקריפט של Google
  • מפתח שיתוף של Google Sheet

שלב 5: קוד - בלינק

נלחמתי שנים רבות כדי לגרום לחיישן BME280 שלי לעבוד עד שמצאתי דוגמה שהכילה את השורה הבאה.

status = bme.begin (0x76); // כתובת I2C של החיישן שאני משתמש בו היא 0x76

נראה שהייתי צריך להגדיר את כתובת החיישן. ברגע שעשיתי את זה הכל עבד בסדר גמור.

לבליק יש ממשק משתמש נייד ממש נחמד, אך יש לו את המגבלות הבאות:

  • רק 2000 זיכויים בחינם, פרויקטים הדורשים יותר מזה דורשים מנוי חודשי יקר (אלא אם אתה מארח ומתחזק שרת Blynk משלך).
  • אלא אם כן אתה מארח שרת Blynk משלך, אינך יכול לייצא נתונים היסטוריים.

מהסיבות שלעיל בדקתי כיצד אוכל לשלב את תהליך איסוף הנתונים שלי בגיליון Google. זה מכוסה בפרק הבא.

שלב 6: קוד - Google Sheets

קוד - Google Sheets
קוד - Google Sheets
קוד - Google Sheets
קוד - Google Sheets
קוד - Google Sheets
קוד - Google Sheets

על מנת לרשום את הקריאות שלך כך שתוכל לנתח נתונים היסטוריים במועד מאוחר יותר עליך לכתוב אותם למאגר מידע כלשהו. ספריית HTTPSRedirect מאפשרת לנו לעשות זאת על ידי כתיבת הנתונים שלנו לגיליון Google.

המגבלות העיקריות בגישה זו הן כדלקמן:

  • אין ממשק משתמש נייד נחמד
  • גיליון Google יכול להכיל לכל היותר 400 000 תאים. עבור פרויקט זה אינו נושא גדול מכיוון שייקח קצת יותר מ -11 שנים עד שמגבלה זו תגיע.

גיליון Google מוגדר כדלקמן.

צור גיליון Google עם שני גיליונות.

גיליון 1: נתונים

גליון הנתונים דורש 4 עמודות כלומר תאריך/שעה, טמפרטורה, לחות, לחץ (עמודות א 'עד ד'). עיצב את העמודות כראוי למשל. עמודה A תהיה "שעה תאריך" כך שהתאריך והשעה יוצגו בתאים.

גיליון 2: לוח מחוונים

צור את דף לוח המחוונים בהתאם לתמונות המצורפות, והזן את הנוסחאות כמפורט להלן:

  • B2: = ספירה (נתונים! ב: ב) -1
  • B3: = B1+TIMEVALUE (CONCATENATE ("00:", טקסט (G7, "0")))
  • B6: = שאילתה (Data! A2: D, "בחר סדר B לפי מגבלת הגבלה 1")
  • C6: = שאילתה (Data! A2: D, "בחר סדר C לפי מגבלת הגבלה 1")
  • D6: = שאילתה (Data! A2: D, "בחר סדר D לפי מגבלת הגבלה 1")
  • B8: = שאילתה (Data! A2: D, "בחר הזמנה לפי B desc limit 1")
  • C8: = שאילתה (Data! A2: D, "בחר הזמנה לפי גבול הגדרת C 1")
  • D8: = שאילתה (Data! A2: D, "בחר הזמנה לפי D desc limit 1")
  • B9: = שאילתה (Data! A2: D, "בחר סדר B לפי מגבלת B desc 1")
  • C9: = שאילתה (Data! A2: D, "בחר סדר C לפי גבול הגבלה 1 של C")
  • D9: = שאילתה (Data! A2: D, "בחר סדר D לפי מגבלת הגבלה 1 D")
  • B11: = שאילתה (Data! A2: D, "בחר A כאשר B אינו סדר בטל לפי B asc limit 1")
  • C11: = שאילתה (Data! A2: D, "בחר A כאשר C אינו סדר בטל על ידי C asc limit 1")
  • D11: = שאילתה (Data! A2: D, "בחר A כאשר D אינו סדר בטל לפי D asc limit 1")
  • B12: = שאילתה (Data! A2: D, "בחר B כאשר B אינו סדר בטל לפי B asc limit 1")
  • C12: = שאילתה (Data! A2: D, "בחר C כאשר C אינו סדר בטל לפי C asc limit 1")
  • D12: = שאילתה (Data! A2: D, "בחר D כאשר D אינו סדר בטל לפי D asc limit 1")
  • G3: = 4+B2*4+29+17
  • G4: = (G2-G3)/G2
  • G6: = G2/4 G8: = G7*G6
  • G9: = (G8/60)/24
  • G10: = G9/365
  • G11: = (((((G2-G3)/4)*G7)/60)/24/365)

Google Sheets יכול להכיל לכל היותר 400, 000 תאים. זה משמש, יחד עם העובדה שכל קריאה משתמשת ב -4 תאים, כדי לחשב כמה מקום נותר ומתי היא תיגמר.

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

צילום המסך "עורך התרשימים" מציג את ההגדרה הבסיסית של תרשים הטמפרטורה. שאר הגרפים נוצרו באמצעות אותו מערך. ההבדל היחיד בין הגרפים היה ערכי הציר האנכיים המינימליים (נמצא בכרטיסייה התאמה אישית). לכרטיסייה ההתאמה האישית יש גם את ההגדרות האחרות כמו שמות גישה, כותרות תרשים וכו '.

כעת אנו זקוקים לסקריפט של Google שיאפשר לנו לכתוב את הנתונים שלנו על ידי קריאת כתובת URL.

יצירת התסריט

בכתובת ה- URL של Google Sheet, רשום את המפתח בין "d /" ו- " / edit". זהו מפתח ה--שלך-Google-Sheet-Sharing שלך, ויהיה צורך בקוד שלהלן.

לאחר מכן עבור אל כלים> עורך סקריפט וצור את סקריפט האפליקציות של Google, והדבק את הקוד בקובץ ה- GS המצורף. עדכן את var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); כדי לשקף את מפתח השיתוף שלך.

כעת פרסם את הסקריפט על ידי מעבר לפרסום> פריסה כאפליקציית אינטרנט.

העתק את כתובת האתר הנוכחית של אפליקציית האינטרנט ושמור אותה במקום כלשהו, כיוון שתזדקק לה לחילוץ ה- GScriptID (-Your-Google-Script-ID–). ה- GScriptID הוא המחרוזת בין "s /" ו- " / exec?". ודא של"כל אחד, אפילו אנונימי "יש גישה לאפליקציה. במהלך תהליך זה תתבקש לתת כמה הרשאות. חשוב שתעניקו אלה.

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

כעת תוכל לבדוק את הסקריפט על ידי גלישה אל https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12. בכל פעם שאתה מרענן את הקישור הזה, יש להוסיף ערך חדש לגיליון Google.

זה לעיל נלקח מהדרכה הבאה: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. אולם הדרכה זו מיושנת ולכן קוד Arduino המשויך בחלק הבא השתנה כך שיתאים לספרייות ה- HTTPSRedirect העדכניות ביותר.

קוד הארדואינו

עיין בקוד המצורף.

שלב 7: קוד - Blynk ו- Google Sheets

על מנת להפיק את המיטב משני העולמות, ניתן לשלב את הקוד הן עבור Blynk והן ל- Google Sheets.

עיין בקוד המצורף.

שלב 8: הערות אחרונות

הערות אחרונות
הערות אחרונות
הערות אחרונות
הערות אחרונות

אף אחד מהאמור לעיל אינו הרעיונות שלי, אלא זהו פרויקט הבנוי על רעיונות ועבודה של אחרים. נהניתי למשוך אותו לגמרי למקום אחד. שימוש בטכנולוגיות וכלים שונים לפרוייקט מהנה ומעשי. נהניתי במיוחד ללמוד כיצד לאחסן את הקריאות שלי בגיליון Google. על כך אני רוצה להודות ל- ElectronicsGuy (Sujay Phadke).

עדכון

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

מוּמלָץ: