תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
מכיוון ששאלתי את עצמי לא פעם מה רוחב הפס המסופק כיום על ידי ספק שירותי האינטרנט שלי (אני משתמש במודם LTE לחיבור האינטרנט), חשבתי על מערכת ניטור רוחב פס. מכיוון שהמערכת צריכה להיות קומפקטית וחסכונית בחשמל, בחרתי ב- Raspberry Pi Zero כרכיב המרכזי. הפטל מחובר למודם באמצעות WLAN, ולכן ניתן לזהות גם בעיות WLAN.
אספקה
- Raspberry Pi Zero WH
- תצוגת דיו אלקטרוני של Waveshare (מודול נייר 2.9 אינץ ')
- ממיר DC-DC (למשל DEBO DCDC 20W)
- LED RGB (הוצא מהמכשיר הישן)
- לחץ על הכפתור
- החלף
- מודול ממסר (למשל מודול ממסר דו כיווני מודול ממסר דו כיווני)
- מחבר זכר + מחבר נקבה (שניהם מתאימים לגודל תקע אספקת החשמל של המודם)
- מארז מודפס בתלת מימד
שלב 1: תכונות
- ה- Raspberry Pi Zero מחובר באמצעות WLAN, בודק את מהירות ההורדה וההורדה ומבצע מדידת פינג כל חצי שעה. גרסת שורת הפקודה של speedtest.net משמשת כבסיס למדידות.
- התוצאה של רוחב הפס ומדידת הפינג מוצגת בתצוגת דיו אלקטרוני. מוצג גם זמן המדידה.
- אם מהירות ההורדה יורדת מתחת לערך סף מוגדר, ממסר כבה ומדליק את המודם לזמן קצר. המודם מתאפס אפוא ללא כל שינוי במכשיר (רק אספקת החשמל מופרעת).
- לחצן בחזית המכשיר זמין להפעלת מדידת רוחב הפס באופן ידני.
- הערכים הנמדדים מוצגים בלוח המחוונים של Ubidots (IOT Portal). בסקירה תוכל לראות גם את היסטוריית הזמן של הערכים הנמדדים ואת הסיבות לאיפוס האחרון.
- בפורטל IOT ניתן למצוא גם לחצן לאיפוס מרחוק של המודם.
- צג רוחב הפס משתמש באספקת החשמל של המודם. אין צורך באספקה נוספת. הממסרים מפסיקים את העברת אספקת החשמל למודם - הפטל נשאר מופעל.
שלב 2: חיווט
בתמונה הראשונה ניתן לראות את העיצוב הפנימי של צג רוחב הפס:
המרכיבים העיקריים הם:
- לחץ על הכפתור
- תצוגת דיו אלקטרוני
- פטל פי אפס
- מודול ממסר
- נגדי LED + RGB (בהתאם לנורית ה- RGB שבה אתה משתמש)
- החלף
- ממיר DC-DC
- מחבר נקבה
התמונה השנייה מציגה סכמטי של החיווט. הקוטב החיובי של מתח האספקה מוזרם דרך המתג לממיר המתח DC-DC (הממיר את מתח האספקה של 12V של הנתב ל- 5V עבור הפטל) ודרך הממסר (באמצעות הסיכה המחוברת כרגיל) חזרה אל מחבר פלט. לפיכך המודם מסופק גם כאשר צג רוחב הפס כבוי.
ניתן להתחיל את מדידת רוחב הפס באופן ידני באמצעות כפתור. מנורת RGB משמשת להדמיה של מצבי ההפעלה השונים.
החיבור בין Raspberry Pi לתצוגת הדיו האלקטרוני אינו מוצג בתרשים המעגלים. חבר את הצג בהתאם לטבלה ולפין החוצה למעלה.
שלב 3: הדפסה תלת מימדית ובניית המרדף
החלקים הבאים נחוצים למארז (ראו תמונה למעלה):
- החלק התחתון
- חלק עליון
- חֲזִית
- חזור
- 4x הר
ניתן להדפיס את כל החלקים ללא תומכים. תוכל גם למצוא את הקבצים וכמה מהעיצובים האחרים שלי ב- Thingiverse:
ניתן לחבר את התצוגה ללוח הקדמי עם התושבים והקלטת דו צדדית. מתג לחצנים ומחבר נקבה מוברגים ללוח האחורי והאחורי. השתמשתי בברגים בגודל 3x20 מ מ לחיבור שני חצאי הדיור. הסובלנות בחריצים ללוחות הקדמיים והאחוריים צפופים יחסית. במידת הצורך, יש ללטש את הלוחות הקדמיים והאחוריים על הקצה (מבפנים כדי למנוע הרס של המשטח).
שלב 4: הגדרת ה- PI של פטל
מדריך התקנה זה מבוסס על חיבור מספר הוראות התקנה ממקורות שונים (יצרני תצוגות דיו אלקטרוני, …). מבחינתי ההוראות הובילו לתוצאה הרצויה. מכיוון שאני לא מומחה לינוקס, לא בוצעו אופטימיזציות או דברים דומים. אני מודע לכך שיש בוודאי פתרונות טובים ויעילים יותר.
נניח שכבר מותקנת אצלך Raspbian ב- Pi שלך (יש הרבה הדרכות כיצד להתקין את מערכת ההפעלה הבסיסית) ויש לך מסך (באמצעות miniHDMI), עכבר ומקלדת מחוברים. יש להניח גם חיבור WLAN שהוגדר כראוי לנתב או לאינטרנט. אלא אם צוין אחרת, כל הליכי ההתקנה מבוצעים במסוף.
התקן שולחן עבודה מרוחק (כדי לגשת ל- PI מהמחשב שלך):
עדכון sudo apt-get
sudo apt-get
התקן xrdp
או שאתה יכול גם לעבוד ללא ראש באמצעות ssh (ראה למשל
שנה סיסמא:
www.raspberrypi.org/forums/viewtopic.php?t=193620
התקן את בדיקת המהירות:
סודו
apt-get להתקין python-pip
sudo pip התקן speedtest-cli
כדי לבדוק אם ההתקנה הצליחה הפעל את Speedtest במסוף:
speedtest-cli
אם הכל נכון אתה צריך לקבל משהו כמו בתמונה הראשונה למעלה.
התקן wiringPI
sudo apt-get להתקין git-core
שיבוט git git: //git.drogon.net/wiringPi
חיווט תקליטורים
./לִבנוֹת
(ראה גם
חלופה:
sudo apt-get להתקין wiringpi
(ראה
התקן את BCM2835
(ראה
הורד את bcm2835-1.60.tar.gz (או גירסה חדשה יותר אם יש)
זפת zxvf bcm2835-1.60.tar.gz
תקליטור bcm2835-1.60
./configure
עשה
סודו בדוק
sudo עשה התקנה
התקן את ספריית ההדמיה של פייתון
sudo apt-get install python imaging
חלופה:
sudo apt-get להתקין python-pil
הפעל את הפונקציה I2C.
הפעל את הפקודה הבאה כדי להגדיר את לוח Raspberry Pi שלך:
sudo raspi-config
בחר אפשרויות ממשק-> I2C -> כן, כדי להפעיל את מנהל ההתקן הליבה של I2C. לאחר מכן עליך גם לשנות את קובץ התצורה. הפעל את הפקודה הבאה כדי לפתוח את קובץ התצורה:
sudo nano /etc /modules
הוסף את שתי השורות הבאות לקובץ התצורה
i2c-bcm2708
i2c-dev
ראה גם
הפעל את פונקציית SPI
הפעל את הפקודה הבאה כדי להגדיר את לוח Raspberry Pi שלך:
sudo raspi-config
בחר אפשרויות ממשק-> SPI -> כן, כדי להפעיל את מנהל ההתקן של SPI.
התקן גופנים נוספים:
sudo apt-get install ttf-mscorefonts-installer
הורד והתקן גופנים (Roboto + Droid)
gksudo
pcmanfm
כדי להתחיל מנהל קבצים עם הרשאות שורש ולהעתיק גופני truetype לתיקייה/usr/share/fonts/truetype
חלופה:
העתק את הגופנים לתיקיית ההורדות באמצעות WinSCP (יש להפעיל ssh כדי להשתמש ב- WinSCP)
sudo cp -r/home/pi/הורדות/droid/usr/share/fonts/truetype
sudo cp -r/home/pi/הורדות/roboto/usr/share/fonts/truetype
אתה צריך הרשאות שורש כדי לגשת לתיקיית הגופנים. אולי יש דרכים טובות יותר לעשות זאת (כפי שציינו כבר אני לא מומחה ללינוקס) אבל שתי הדרכים עבדו בשבילי.
קבצי פייתון:
השתמש במנהל הקבצים כדי ליצור תיקיה חדשה "bandwidth_monitor"
העתק את כל הקבצים לספריית bandwidth_monitor
הפוך קבצי פייתון ותסריט להפעלה
chmod +x *.py
chmod +x speedtest-cron.sh
הגדר את crontab
crontab -e
Crontab משמש לתזמון ביצוע התוכנית למשל בדיקת מהירות כל 30 דקות. הוסף את השורות הבאות לקרונטאב שלך (ראה גם איור שני):
@reboot/usr/bin/python /home/pi/bandwidth_monitor/post_restart_message.py &
@reboot sleep 30 &&/usr/bin/python /home/pi/bandwidth_monitor/poll_test_now_button.py */30 * * * * /home/pi/bandwidth_monitor/speedtest-cron.sh */3 * * * */usr/ bin/python /home/pi/bandwidth_monitor/poll_killswitch.py 13 03 * * */usr/bin/python /home/pi/bandwidth_monitor/refresh_display.py
תיאור המשימות המתוכננות:
- בעת אתחול ההודעה מחדש נכתבת ללוח המחוונים של IOT
- בעת אתחול מחדש התחיל test_now_button
- כל 30 דקות מבוצעת מדידת רוחב פס
- כל 3 דקות המצב של לחצן האיפוס מרחוק (בלוח המחוונים של IOT) נבדק
- פעם ביום מתחיל מחזור רענון תצוגה.
עיין בסעיף התוכנה לתיאור קצר של התוכניות.
שלב 5: תוכנה
התוכנה מחולקת למספר קבצים / תוכניות:
bandwidth_monitor_0_4.py היא התוכנית העיקרית שמפעילה Crontab כל חצי שעה. הוא מבצע בדיקת רוחב פס (באמצעות גירסת שורת הפקודה של speedtest.net). במהלך הבדיקה, נורית ה- RGB כחולה. אם רוחב הפס עולה על הסף שנבחר, הערך מוצג בתצוגת הדיו האלקטרוני (יחד עם חותמת זמן) ומיוצא ללוח המחוונים של Ubidots. אם רוחב הפס מתחת לסף הנורית הופכת לאדומה והמדידה חוזרת על עצמה לאחר עיכוב קצר. לאחר 3 ניסיונות שליליים הממסר מופעל וכך אספקת החשמל של המודם נקטעת. קוד איפוס (ערך = 2) נכתב למקטע היומן.
poll_killswitch.py קורא את הסטטוס של משתנה בוליאני בלוח המחוונים. אם killswitch_state נכון הריליס מופעל כאשר אספקת החשמל של המודם מופסקת. נורית ה- RGB הופכת לירוקה במהלך הסקר של הרוצח. לאחר האיפוס ה- killswitch_state מוגדר כ- false ונוצר ערך בחלק היומן של לוח המחוונים (value = 1).
poll_test_now_button.py ממתין ללחיצת הלחצן בלוח הקדמי של המארז. על ידי הפעלת הכפתור, מדידת רוחב הפס מופעלת באופן ידני. כאשר התוכנית מופעלת (באתחול מחדש של ה- Raspberry Pi) נורית ה- RGB מהבהבת באדום.
post_restart_message.py כותב את קוד האיפוס (value = 3) לחלק היומן של לוח המחוונים. זה מצביע על כך שצג רוחב הפס הופעל מחדש. במהלך הפעלת התוכנית נורית ה- RGB מהבהבת בכחול.
test_LED.py ו- test_relay.py הם סקריפטים פשוטים שניתן להשתמש בהם כדי לבדוק את פונקציית החומרה של ה- RGB LED והממסר.
epdconfig.py ו- epd2in9.py הם מנהל התקן עבור תצוגת הדיו האלקטרוני המסופקת על ידי Waveshare.
על מנת לאפשר לתוכניות לגשת ללוח המחוונים של Ubidots, עליך להוסיף אסימונים ושמות מכשירים או משתנים בודדים שלך (אם אתה משתמש בסימונים שונים). חפש קטע כמו זה שמוצג בתמונה למעלה (החלף את XXXXXXXX באסימון שלך).
הדרכות מקיפות כיצד לבנות את לוח המחוונים וכיצד לשלב את לוח המחוונים בתוכנית Python ניתן למצוא ישירות בדף Ubidots (https://help.ubidots.com/en/) או דרך Google.
שלב 6: לוח מחוונים IOT
לוח המחוונים בהנחיית Ubidots (ראה https://ubidots.com) מכיל מספר אזורים המתוארים בקצרה להלן.
- רצף זמן של מהירות העלאה והורדה. כל חצי שעה מוכנס ערך חדש לתרשים.
- מהלך הזמן של זמן הפינג הנמדד. כל חצי שעה מוכנס ערך חדש בתרשים.
- רצף הזמן של מהירות ההורדה הממוצעת. הערך הממוצע מעל 24 שעות מחושב ונכתב לתרשים.
- ייצוג גיליון אלקטרוני של ערכי המדידה הנוכחיים כולל חותמת זמן.
- לחצן שלט רחוק לאיפוס המודם באמצעות האינטרנט. השאילתה מתרחשת כל 3 דקות, כלומר, עשויה להימשך זמן מה עד לביצוע הפעולה.
- רישום האיפוסים האחרונים כולל הסיבה לאיפוס (הפעלה מרחוק, כיבוי או אובדן מתח, ירידה מתחת לרוחב הפס המינימלי)
הדרכות מקיפות כיצד לבנות את לוח המחוונים וכיצד לשלב את לוח המחוונים בתוכנית Python ניתן למצוא ישירות בדף Ubidots (https://help.ubidots.com/en/) או דרך Google.