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

שרת נתונים בטמפרטורה כפולה של IOT: 12 שלבים (עם תמונות)
שרת נתונים בטמפרטורה כפולה של IOT: 12 שלבים (עם תמונות)

וִידֵאוֹ: שרת נתונים בטמפרטורה כפולה של IOT: 12 שלבים (עם תמונות)

וִידֵאוֹ: שרת נתונים בטמפרטורה כפולה של IOT: 12 שלבים (עם תמונות)
וִידֵאוֹ: הסבר RAM - זיכרון גישה אקראי 2024, יוני
Anonim
שרת נתונים בטמפרטורה כפולה של IoT
שרת נתונים בטמפרטורה כפולה של IoT

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

זהו פרויקט הנעילה שלי לניטור מרחוק של 2 טמפרטורות בחממה, אחת בגובה הרצפה ואחת ממש מתחת לגג. למרות שהשתמשתי בעבר ב- Raspberry Pi (RPi), הפרויקט הזה כלל מספר אלמנטים שלא השתמשתי בהם ובדרך מצאתי מספר הדרכות שהיו לא מעודכנות או שפשוט שגויות. זהו אוסף הידע שלי להכין צג טמפרטורה מרחוק כפול שעובד מחיישני טמפרטורה דיגיטליים של Pi Zero & 2 DS18B20+ One Wire Digital Temperature שנרכשו בדרך.

דברים שלמדתי עליהם:

  • הפיכת נתונים לזמינים ממכשיר כחלק מאינטרנט הדברים (IoT)
  • ממשק חד-חוטי עם 2 מכשירים
  • נתונים
  • נתוני JSON
  • הגדרת חומת האש UFW
  • שימוש ב- Freeboard.io להצגת הנתונים
  • הגדרת ה- RPi להפעלה אוטומטית של התוכנית

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

אספקה

  • תזדקק ל- Raspberry Pi (עם צג, עכבר ומקלדת להגדרה אך לא בעת הפעלת הפרויקט המוגמר)
  • חיבור אינטרנט עובד.
  • PSU עם מחבר מיקרו USB
  • 2 מחיישני הטמפרטורה הדיגיטליים DS18B20+ Wire One Wire. מצאתי שאמזון היא הזולה ביותר
  • נגד 4K7 אוהם או שהשתמשתי ב 2 נגדים של 10K אוהם.
  • קרש לחם קטן וכמה חוטים זכר/נקבה לבדיקה על הספסל
  • פיסת לוח קטנה להרכבה הסופית
  • כלים פשוטים להלחמה ולהפשטת חוטים.
  • קופסת פלסטיק קטנה להכנת העיצוב המוגמר

שלב 1: חומרה

חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה

כבר היה לי Raspberry Pi Zero W (עם אלחוטי) אבל אני בטוח שהפרויקט הפשוט הזה יפעל מצוין על כל אחד מה- RPI. בארגז הביטים האלקטרוניים המוזרים בבית המלאכה שלי היה כל השאר (קרש לחם, חוט, PSU וכו ') וכל מה שהייתי צריך לקנות זה שני חיישני 2 x DS18B20 מאמזון. אלו הם שבבי ה- DS18B20 הרגילים שפשוט מותקנים בנוחות בתוך בית עמיד למים וכבל 3 מ '. יש 3 חוטים מהכבל:

  • אדום - מתח - התחבר לפין 3.3v 1
  • שחור - החזר - חבר לסיכה הארקה 6
  • צהוב - נתונים - התחבר לפין GPIO4 7

החיישנים משתמשים בממשק 1-Wire והיה קל מאוד להתחבר ולקבל מהם נתונים. ישנם מספר דפים באינטרנט עם פרטים לחיבור מכשיר אחד אך מעט מאוד לחיבור 2 (או יותר).

לבדיקה על הספסל, המעגל הורכב באמצעות לוח לחם. ההדרכות שמצאתי הצהירו להשתמש בנגד 4K7 כדי להטות את קו הנתונים, אך לא הצלחתי למצוא אחת ולכן השתמשתי במקביל 2* 10K וזה עבד בסדר גמור. יש הרבה משאבים באינטרנט לשימוש בלוח לחם להרכבת מעגלי RPi ולכן לא אחזור עליהם כאן.

תרשים שנוצר באמצעות תרשים מעגל

שלב 2: הגדרת תוכנת OS Raspberry Pi

התקנת תוכנת מערכת הפעלה Raspberry Pi
התקנת תוכנת מערכת הפעלה Raspberry Pi
התקנת תוכנת מערכת הפעלה Raspberry Pi
התקנת תוכנת מערכת הפעלה Raspberry Pi
התקנת תוכנת מערכת הפעלה Raspberry Pi
התקנת תוכנת מערכת הפעלה Raspberry Pi

מכיוון שהשתמשתי ב- RPi זה בעבר, החלטתי להתחיל בהתקנה נקייה של מערכת ההפעלה, עיצבתי מחדש את כרטיס ה- SD והתקנתי גרסה נקייה של NOOBS. לאחר מכן התקנתי את גרסת שולחן העבודה המלאה של Raspian (האפשרות העליונה) מכיוון שתתקין גם PIP & GIT שגירסת הלייט לא עושה. למרות שלא הייתי צריך את ממשק המשתמש הגרפי (GUI) לפרויקט, זו דרך קלה להתקין את כל האפשרויות ועם כרטיס SD בנפח 16GB לא היה מחסור במקום.

הגדרתי גישה ל- WI-FI ואז הפעלתי את ההתקנה המלאה ולאחר מכן את האשף עם עדכונים ושדרוגים וכו '. באמצעות ה- GUI, הגדרתי את ה- RPI לפי הצורך רק בגלל שהשימוש ב- GUI פשוט יותר מממשק שורת הפקודה (CLI). נכנסתי לחלון התצורה מהתפריט ואז:

  • בכרטיסיית המערכת, שיניתי את הסיסמה, הגדרתי אתחול ל- CLI והתחלתי לא מסומן כניסה אוטומטית
  • בכרטיסיה ממשקים, הפעלתי חוט אחד
  • לחץ על אישור והפעלתי מחדש

אם אתה צריך לחזור ל- GUI בכל עת פשוט הקלד startx ב- CLI

startx

שלב 3: הגדר את נתוני הנתונים כדי לאפשר גישה מרחוק

הגדר את הנתונים כדי לאפשר גישה מרחוק
הגדר את הנתונים כדי לאפשר גישה מרחוק
הגדר את הנתונים כדי לאפשר גישה מרחוק
הגדר את הנתונים כדי לאפשר גישה מרחוק
הגדר את הנתונים כדי לאפשר גישה מרחוק
הגדר את הנתונים כדי לאפשר גישה מרחוק

מצאתי ערך בלוג מועיל מאוד באתר Dataplicity בכתובת https://blog.dataplicity.com/how-to-build-a-raspb… והשתמשתי בכמה חלקים מזה. חלק 3 של הבלוג מתאר את הגדרת Dataplicity לגישה מרחוק ל- RPi. מעולם לא השתמשתי ב- Dataplicity בעבר, אבל אני חייב לומר, אני ממליץ עליו ביסודיות ככלי פשוט מאוד לגישה מרחוק. למרות שצילומי המסך (בבלוג למעלה) מעט מיושנים, העיקרון בסדר.

במחשב האישי שלך, עבור אל Dataplicity.com וצור חשבון (תוכל להשתמש בדפדפן ב- GUI, אך לאט ב- RPi Zero). לאחר מכן לחץ על כפתור "הוסף מכשיר חדש" ושורת קוד מוצגת בחלון המוקפץ. לאחר מכן עבור אל CLI ב- RPi והקלד את שורת הטקסט. אם הכל בסדר, הלוגו של Dataplicity יוצג ותוכנית ההתקנה תפעל.

במחשב האישי שלך, המכשיר החדש אמור להופיע כעת באתר Dataplicity. לחץ על המכשיר ותראה מסך מסוף עבור ה- RPi שלך.

יש לשים לב לכמה דברים:

  • כדי להיכנס, הקלד "su pi" (לגישה למשתמש -על) ותתבקש להזין את הסיסמה (כפי שהוגדר קודם לכן)
  • עליך להפעיל את Wormhole (לשימוש מאוחר יותר)
  • תזדקק לכתובת Wormhole להצגת הנתונים מאוחר יותר (לחץ לחיצה ימנית להעתיק בעת הצורך)

אתה יכול להשתמש בגישה מרחוק זו לכל השלבים הבאים והרבה יותר קל להעתיק נתונים, תוכניות וכו 'מאשר ישירות ב- RPi.

שלב 4: בדוק את החיישנים

כעת תוכל להשתמש ב Dataplicity גישה מרחוק ל- RPI עבור כל הסעיפים הבאים.

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

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

cd/sys/bus/w1/התקנים/

זה אמור להראות 2 מכשירים המתחילים ב- 28 ובסטר האוטובוס. תוכניות שלי:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

2 מספרי הזהות האלה חשובים ויהיה צורך בהם מאוחר יותר! לאחר מכן שנה לאחד ממדריכי החיישנים:

תקליטור 28-011453ebfdaa

(למשל) ולאחר מכן לקרוא את הערך מהחיישן

חתול w1_slave

אמורות להיות מוצגות 2 שורות טקסט:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d YES

53 01 4b 46 7f ff 0c 10 2d t = 21187

ה- YES מראה שהחיישן קורא נכון וה- 21187 מציג טמפרטורה בצלזיוס של 21.187 (מחלקים ב- 1000) חזור על פעולה זו כדי לבדוק את החיישן השני. אם שניהם קוראים בסדר אז נוכל להמשיך לקרוא את הנתונים עם Python3.

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

צור ספרייה בשם פרויקטים ושנה לספרייה זו.

mkdir ~/פרויקטים

cd ~/פרויקטים

בספרייה זו, השתמש בעורך הטקסט (ננו) כדי ליצור ולערוך קובץ בשם thermo-test.py

סודו ננו thermo-test.py

זה היה צריך לפתוח את העורך וכאשר אתה משתמש ב- Dataplicity, אתה יכול פשוט להעתיק את הקוד הבא למטה (thermo-test.py) ולהדביק אותו בעורך. יהיה עליך לשנות את 2 שמות המכשירים (החל מה -28 עד…) לאלה שצוין לעיל. כאשר הכל נראה תקין, הקש ctrl+X לסיום, Y כדי לשמור ולחזור להשתמש בשם הקיים. אם אתה מעדיף להשתמש ב- GUI אז Thonny יעשה את אותו הדבר.

להפעלת תוכנית הבדיקה:

sudo python3 thermo-test.py

בסך הכל, זה צריך לבצע את הקובץ באמצעות פייתון 3 ולהדפיס למסך את 2 הטמפרטורות כל 10 שניות. אתה יכול לבדוק שהכל בסדר על ידי הכנסת חיישן אחד למים קרים או התחממות בעדינות עם מייבש שיער. אם הכל נראה תקין, אז אפשר להמשיך הלאה!

שלב 5: חומת אש של UFW

חומת אש של UFW
חומת אש של UFW

מכיוון ש- RPi זה יהיה מחובר לצמיתות לאינטרנט החלטתי שחומת אש תהיה רעיון טוב ופשוט לשימוש הוא חומת אש לא מסובכת (ufw). יש כאן הדרכה פשוטה מאוד

אני לא נכנס לעומק רב מכיוון שזו לא מטרתו של המדריך הזה, אבל בקיצור:

התקן את חומת האש באמצעות:

sudo apt-get להתקין ufw

הגדר את כללי ברירת המחדל:

sudo ufw ברירת מחדל לאפשר יוצאת

sudo ufw ברירת מחדל דוחה כניסה

פתח יציאה 80 עבור Dataplicity

sudo ufw אפשר 80

הפעל את חומת האש

sudo ufw אפשר

בדוק את הסטטוס וודא שהכל פועל

סטטוס sudo ufw

שלב 6: S סיום נתוני הטמפרטורה כ- JSON

S שמסיים את נתוני הטמפרטורה כ- JSON
S שמסיים את נתוני הטמפרטורה כ- JSON

חזרה לבלוג של טים פרננדו ולקטע 5.

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

לאחר מכן הפעל את התוכנית של טים ואז ה- RPi שלך אמור לספק נתוני JSON לחיישן הראשון.

cd home/pi/projects/temperature-serve-pi

sudo gunicorn temperature: app -b 0.0.0.0:80

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

תוכל גם להשתמש ב- JSON Viewer כדי לראות את הנתונים https://codebeautify.org/jsonviewer לחץ על הכפתור "טען כתובת URL" והדבק את כתובת Wormhole שציינה קודם לכן. בחלונית השמאלית, אתה אמור לראות שני ערכים, אחד עבור צלזיוס ואחד עבור פרנהייט.

שלב 7: שלח נתונים משני החיישנים

שלח נתונים משני החיישנים
שלח נתונים משני החיישנים

בהתבסס על הקוד ב- temperature.py ו- thermo-test.py, יצרתי 2temps.py ערוך כבעבר בספרייה /projects /temperature-serve-pi, הודבק בקוד ושמרתי. אחר כך רצתי

sudo gunicorn 2temps: app -b 0.0.0.0:80

עכשיו כשהרצתי מחדש את JSON Viewer קיבלתי ערכים עבור temp1 & temp2

הצלחה:)

שלב 8: התחלה אוטומטית

התחלה אוטומטית
התחלה אוטומטית

מכיוון שהחשמל לחממה אכן נכבה מדי פעם, רציתי שה- RPi יטען את התוכנית באופן אוטומטי ויתחיל להוכיח את הנתונים. נראה שהדרך הפשוטה ביותר היא לערוך את קובץ rc.local ולהוסיף את הקוד הנדרש בתחתית ממש מעל לשורת היציאה 0.

תקליטור וכו '

sudo nan rc.local

לאחר מכן תוסף

לישון 10

cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • הסיום & בסוף אומר למחשב להריץ את הסקריפט במעטפת משנה כך שהמחשב שלך לא יחכה שהפונקציה תסתיים ותמשיך באתחול
  • שינה 10 [שניות] מוודאת שכל הפעולות הקודמות הושלמו לפני תחילת השירות.

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

אם אתה רוצה מידע נוסף על תוכניות הפעלה אוטומטית יש כאן הדרכה מצוינת

שלב 9: הצג את הנתונים ב- Freeboard.io (1)

הצג את הנתונים ב- Freeboard.io (1)
הצג את הנתונים ב- Freeboard.io (1)

השלבים בבלוג של טים עובדים מצוין, לסיכום; צור חשבון ב- www.freeboard.io ולאחר מכן צור לוח לוח חדש, קראתי לשלי SHEDTEMPERATURES.

ראשית, הוסף מקור נתונים, לחץ על הוסף בפינה השמאלית העליונה ומתוך הקופץ בחר JSON כסוג, תן למקור הנתונים שם, הוסף את כתובת חור התולעת מלפני ככתובת ה- URL ולחץ על NO כדי לנסות דבר. הטמפרטורות רק משתנות לאט מאוד ולכן רענון בכל 15 שניות זה בסדר. לחץ על שמור.

שלב 10: הצג את הנתונים ב- Freeboard.io (2)

הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)
הצג את הנתונים ב- Freeboard.io (2)

לחץ על הוסף חלונית ולאחר מכן על + כדי להוסיף את הווידג'ט הראשון. אתה יכול לבחור ולשחק עם סוגים שונים אך מצאתי ש- Gauge בסדר גמור. תן TITLE, UNITS (C), MINIMUM ו- MAXIMUM המתאימים ליישום שלך. עבור DATASOURCE, לחץ על + והמקור שנוצר למעלה יופיע.

התפריט הנפתח אמור כעת להציג את 2 מקורות הנתונים של JSON (temp2 & temp2) שנבנו קודם לכן. בחר את המקור המתאים ולחץ על שמור.

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

הנתונים אמורים להיות מוצגים כעת על 2 המדדים ואם עדיין יש לך את ה- PRi מחובר למסך, אתה אמור לראות את הבקשות מ- Freeboard.io כשהן מגיעות.

שלב 11: בנה את הפרויקט לתוך קופסה

בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה
בנה את הפרויקט לתוך קופסה

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

נמצאה קופסת אחסון קטנה של לגו ורודה בהירה שהיתה בה הרבה מקום ושם RPI לא יתחמם מדי. חורים נקדחו בצידי הקופסה & עמודי הרכבה מניילון בגודל 3 מ"מ שימשו לחיזוק ה- RPi והלוח במקומם.

יש רק 3 חיבורים הנדרשים מה- GPIO, 3.3v, GND ונתונים.

  • 3.3vdc סיכה 1
  • סיכת GND 6
  • נתונים (GPIO4) סיכה 7

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

שלב 12: סיים

גָמוּר
גָמוּר
גָמוּר
גָמוּר

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

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

מוּמלָץ: