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

רשת חיישן אלחוטית בעלות נמוכה בפס 433MHz: 5 שלבים (עם תמונות)
רשת חיישן אלחוטית בעלות נמוכה בפס 433MHz: 5 שלבים (עם תמונות)

וִידֵאוֹ: רשת חיישן אלחוטית בעלות נמוכה בפס 433MHz: 5 שלבים (עם תמונות)

וִידֵאוֹ: רשת חיישן אלחוטית בעלות נמוכה בפס 433MHz: 5 שלבים (עם תמונות)
וִידֵאוֹ: גלאי תנועה בית חכם 2024, נוֹבֶמבֶּר
Anonim
רשת חיישן אלחוטית בעלות נמוכה בפס 433MHz
רשת חיישן אלחוטית בעלות נמוכה בפס 433MHz

תודה רבה לטרזה רג'בה על שנתנה לי בחביבות את קבלתה להשתמש בנתונים מפרסומיהם במאמר זה

* בתמונה למעלה - חמש יחידות החיישן -שולח בהן השתמשתי לבדיקה

מהן רשתות חיישנים אלחוטיות?

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

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

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

ועוד הרבה מאוד יישומים אחרים.

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

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

שלב 1: שיקולים תיאורטיים

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

עם זאת, כעת המצב השתנה באופן קיצוני. אנו מסוגלים למצוא חיישנים זולים ואיכותיים (טמפרטורה ולחות), ויש לנו גם גישה למשדרים ומקלטים זולים בפס 433 מגה-הרץ. יש רק בעיה אחת: אם יש לנו יותר חיישנים (נניח 20) כיצד נפתור את ההתנגשויות (אנא זכור כי מדובר בתקשורת חד כיוונית), כלומר חפיפה של פליטת 2 חיישנים או יותר? בעת חיפוש אחר פתרון אפשרי נתקלתי במאמרים מעניינים מאוד אלה:

חיישן אלחוטי מתכנס יצוק המבוסס על הליך פעולה אקראית - מאת RAJBA, T. ו- RAJBA, S.

ו

ההסתברות להתנגשויות ברשת החיישנים האלחוטית עם שליחה אקראית - על ידי RAJBA S. ו- RAJBA. ט

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

תמצית מהמאמר לעיל מפרטת את מאפייני הרשת הנחקרת.

  • מספר לא מבוטל של יחידות חיישן-שולח N;
  • יחידות חיישן-שולח נשארות עצמאיות לחלוטין ולהדלקה או כיבוי שלה אין השפעה על פעולת הרשת;
  • כל יחידות החיישן-שולח (או חלק מהן) עשויות להיות ניידות בתנאי שהן ממוקמות בטווח הרדיו של התחנה המקבלת;
  • הפרמטרים הפיזיים המשתנים לאט כפופים למדידות מה שאומר שאין צורך להעביר את הנתונים בתדירות גבוהה (למשל כל מספר דקות או כמה עשרות דקות);
  • השידור הוא מסוג חד כיווני, כלומר מיחידת שולח החיישן עד לנקודת הקבלה במרווחי זמן ממוצעים של T. המידע מועבר בפרוטוקול ב- tעמ משך זמן;
  • כל חיישן שנבחר מתחיל לשדר באופן אקראי בזמנים של פויסון. PASTA (Poisson Arrivals See ממוצעי זמן) ישמשו כדי להצדיק שליחת בדיקות בתקופות פואסון;
  • כל יחידות החיישן-שולח נשארות עצמאיות באופן אקראי והן ישדרו את המידע ברגע שנבחר באופן אקראי של tעמ משך זמן T וחזרה ממוצעת;
  • אם אחד או יותר החיישנים מתחילים לשדר בזמן שהפרוטוקול של tעמ משך הזמן מועבר מחיישן אחר, מצב כזה נקרא התנגשות. התנגשות לא מאפשרת לתחנת בסיס מרכזית לקבל את המידע בצורה נכונה.

זה מתאים כמעט בצורה מושלמת לרשת החיישנים שאני רוצה לבדוק …

כִּמעַט.

אני לא אומר שהבנתי לגמרי את המתמטיקה בעיתון, אבל על סמך הנתונים המוצגים ועל פי המסקנות הצלחתי להבין קצת במה מדובר. הדבר היחיד הוא שערך המשמש בעיתון גרם לי קצת לדאוג:). זהו המשתנה tעמ - משך העברת הנתונים הנחשב 3.2x10-5 ש. אז זמן השידור של הנתונים שנאספו יהיה 3.2 אנחנו! לא ניתן לעשות זאת בפס 433 מגה -הרץ. אני רוצה להשתמש במתג rcs או ברדיו כדי לתכנת את חיישני המשדר. בחנתי את הקודים של שתי הספריות והגעתי למסקנה שזמן השידור הקטן ביותר יהיה 20ms, הרבה מעל הערך של 3.2 us. עם משדרי 2.4 GHz אפשר tעמ הזמן כל כך קטן … אבל זה כבר סיפור אחר.

אם ניישם את הנוסחה המוצעת על ידי כותבי מאמר זה התוצאה תהיה:

נתונים ראשוניים (דוגמא):

  • מספר חיישנים N = 20;
  • משך העברת הנתונים tעמ= 20x10-3 שניות (0.020 שניות)
  • מרווח שידור ממוצע T = 180 שניות

הנוסחה:

ההסתברות להתנגשות במרווח T היא

תמונה
תמונה

אם ניקח בחשבון את הנתונים הראשוניים ההסתברות להתנגשות במרווח T תהיה 0.043519

ערך זה, המעיד על הסבירות שיהיו 4.35 התנגשויות לכל 100 מדידות הוא, לדעתי, די טוב. ההסתברות יכולה להשתפר אם נגדיל את זמן השידור הממוצע, כך שבשווי 300s תהיה לנו הסתברות של 0.026332, כלומר 2.6 התנגשויות לכל 100 מדידות. אם נשקול שאנו יכולים לצפות לאובדן נתוני מנות בכל מקרה במהלך פעולת המערכת (תלוי בתנאי מזג האוויר למשל) אז המספר הזה ממש מצוין.

רציתי לעשות הדמיה של סוג זה של רשת אבל גם מעין עוזר עיצוב, אז הכנתי תוכנית קטנה ב- C, תוכל למצוא את קוד המקור ב- github (גם בינארי מקובץ הפועל בשורת הפקודה של חלונות - לְשַׁחְרֵר).

נתוני קלט:

  • sensor_number - מספר החיישנים ברשת;
  • מדידות_מספר - מספר מדידות לדמות;
  • ממוצע_העברה_מרווח -זמן ממוצע בין שידורי נתונים רצופים;
  • transmission_time - משך הזמן האפקטיבי של העברת הנתונים.

תְפוּקָה:

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

התוצאות די מעניינות:)

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

שלב 2: יישום מעשי - החומרה

עבור משדרים-חיישנים נזדקק לרכיבים הבאים:

  • מיקרו -בקר ATtiny85 1.11 $;
  • שקע מעגל משולב 8DIP 0.046 $;
  • חיישן טמפרטורה/לחות DHT11 0.74 $;
  • מודול משדר H34A 433MHz 0.73 $;
  • מחזיק סוללה 4xAA עם מתג 1 $;

סה כ 3.63 $;

המקלט המשמש לבדיקות הוא UNO Arduino (רק לבדיקה) ומודול קבלה H3V4F (0.66 $) עם אנטנת קשת זולה (0.32 $).

סכמטי חיישן-שולח

תמונה
תמונה

יחידות המשדר-חיישן מופעלות עם סוללות 3xAA, 1.5v (בתא הרביעי של מחזיק הסוללות יש את הרכבה האלקטרונית). כפי שניתן לראות את ספק הכוח של המשדר וחיישן הלחות והטמפרטורה מחוברים לפין PB0 של הבקר (המשדר והחיישן מופעלים כאשר הסיכה מוגדרת ל- HIGH). אז כאשר המיקרו-בקר נמצא במצב שינה עמוקה, הוא יכול להגיע לצריכה נוכחית של 4.7uA. בהתחשב בעובדה שזמן ההשכמה של חיישן המשדר יהיה בערך 3s (מדידה, שידור וכו ') והזמן הממוצע בין שידורים של 180s (כדוגמה בפרק הקודם), הסוללות צריכות להתנגד לא מעט. עם כמה סוללות אלקליין באיכות טובה (כלומר 2000 מיליאמפר / שעה), האוטונומיה עשויה להיות מעל 10 חודשים כפי שחושב ב- omnicalculator.com (כאשר הצריכה הנוכחית הכוללת היא: חיישן - 1.5mA, מודול משדרים - 3.5mA ומיקרו -בקר ATtiny85 - 5mA, סה כ 10mA).

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

תמונה
תמונה

להלן התמונה של יחידת מקלט הבדיקה.

תמונה
תמונה

שלב 3: יישום מעשי - תוכנה

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

// ספריית rcswitch שונה מ https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// הקוד הוא גרסה שונה מדוגמאות של ספריית rcswitch המקורית #כלול RCSwitch mySwitch = RCSwitch (); נתונים ארוכים ללא סימן = 0; הגדרת void () {Serial.begin (9600); mySwitch.enableReceive (0); // מקלט בהפסקה 0 => כלומר סיכה מספר 2} לולאת void () {if (mySwitch.available ()) {נתונים ארוכים ללא סימן = mySwitch.getReceivedValue (); // output (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int לחות = bitExtracted (נתונים, 7, 1); // פחות 7 סיביות משמעותיות ממיקום 1 - הטמפרטורה int bit bitth first = bitExtracted (data, 7, 8); // 7 סיביות הבאות ממיקום 8 ימינה וכן הלאה int v_min = bitExtracted (נתונים, 1, 15); int packet_id = bitExtracted (נתונים, 3, 16); // 3 סיביות - 8 מזהי מנות מ 0 עד 7 int sensor_id = bitExtracted (נתונים, 6, 19); // 6bit עבור 64 מזהי חיישן - סה"כ 24 סיביות Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (טמפרטורה); Serial.print (","); Serial.print (לחות); Serial.println (); mySwitch.resetAvailable (); }} // קוד מאת https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (מספר ארוך לא חתום, int k, int p) {return (((1 (p- 1)));}

ניסיתי לכלול כמה שיותר הערות כדי שיהיה קל יותר להבין.

לצורך איתור באגים השתמשתי בספריית התוכנות הסינית ולוח הפיתוח attiny85 עם מתכנת USBasp (ראה גם את ההנחיות שלי בנושא). הקישור הטורי נעשה עם ממיר סידורי ל- TTL (עם שבב PL2303) המחובר לפינים הכפופים (3 ו -4) של לוח הפיתוח (ראו תמונה למטה). כל זה היה לעזר רב ערך להשלמת הקוד.

תמונה
תמונה

שלב 4: תוצאות הבדיקה

תוצאות מבחן
תוצאות מבחן
תוצאות מבחן
תוצאות מבחן

יצרתי 5 יחידות חיישן-שולח שאוספות ושולחות ערכים הנמדדים על ידי חיישני DHT11. רשמתי ושמרתי מדידות בעזרת מקלט הבדיקה ותוכנית אמולציה סופנית (foxterm), במהלך שלושה ימים. בחרתי מרווח של 48 שעות ללימוד. לא בהכרח התעניינתי בערכים הנמדדים (חיישן 2, למשל, הוא מראה לי ערכים לא נכונים) אלא במספר ההתנגשויות. בנוסף, החיישנים הוצבו קרוב מאוד (בטווח של 4-5 מ ') על ידי המקלט כדי לחסל סיבות אחרות לאובדן מנות. תוצאות הבדיקה נשמרו בקובץ cvs והועלו (עיין בקובץ למטה). העליתי גם קובץ אקסל המבוסס על קובץ csv זה. צילמתי כמה צילומי מסך כדי להראות לכם איך נראית התנגשות (במבחנים שלי כמובן), הוספתי הערות גם לכל צילום מסך.

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

בסופו של דבר, 4598 מדידות על 5 יחידות חיישן-שולח (בערך 920/חיישן) הביאו ל -5 התנגשויות בסך הכל במשך 48 שעות (0.5435 התנגשויות/100 מדידות). לעשות קצת חשבון (שימוש בתוכנית wsn_test עם נתונים ראשוניים: 5 חיישנים, זמן ממוצע של 180 שניות, זמן שידור 110 אלפיות השנייה) הסתברות להתנגשות תהיה 0.015185 (1.52 התנגשויות/100 מדידות). התוצאות המעשיות אפילו טובות יותר מהתוצאות התאורטיות לא?:)

תמונה
תמונה

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

שלב 5: מחשבות אחרונות

יישום מיידי

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

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

מה הלאה?

  • בדיקה עם מספר חיישנים גדול יותר;
  • בדיקות בזמן אמת עם חיישנים מרוחקים באזור הכיסוי;
  • התקנה והגדרת שרת IoT מקומי (ב- Raspberry Pi למשל);
  • בדיקות גם עם משדרים (משדרים)-חיישנים בנפח 2.4Ghz.

אז … להמשיך …:)

כתב ויתור: השימוש בפס התדרים של 433MHz באזור שלך עשוי להיות כפוף לתקנות תדרי רדיו. אנא בדוק את חוקיותך לפני שתנסה את הפרויקט הזה

תחרות חיישנים
תחרות חיישנים
תחרות חיישנים
תחרות חיישנים

סגנית בתחרות החיישנים

מוּמלָץ: