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

מד מהירות אינטרנט: 4 שלבים (עם תמונות)
מד מהירות אינטרנט: 4 שלבים (עם תמונות)

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

וִידֵאוֹ: מד מהירות אינטרנט: 4 שלבים (עם תמונות)
וִידֵאוֹ: תינוק עם דרישות 2024, יולי
Anonim
Image
Image
מד מהירות אינטרנט
מד מהירות אינטרנט
מד מהירות אינטרנט
מד מהירות אינטרנט

סקירה כללית

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

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

איך זה עושה את הדברים

החלטתי על SNMP (פרוטוקול ניהול רשת פשוט) כדרך לקבל את המידע מהנתב. SNMP נמצא בשימוש נרחב בציוד רשת ואם המכשיר שלך אינו תומך בו כברירת מחדל ניתן להשתמש ב- DDWRT (קושחת נתב קוד פתוח) ליישום SNMP.

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

מכיוון שזה יהיה על השולחן שלי החלטתי שאעשה גם את התאורה האחורית RGB כי אביזרי מחשב כולם צריכים להיות RGB. ימין?

אתגרים

המדדים שהיו לי השתמשו במפעיל אוויר-ליבה. מעולם לא שמעתי על אלה לפני הפרויקט הזה.

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

לא הצלחתי למצוא ספרייה עבור Arduino שתמכה ב- SNMP בתצורת המנהל. ל- SNMP שתי צורות עיקריות, סוכן ומנהל. סוכנים עונים לבקשה ומנהלים שולחים פנייה לסוכנים. הצלחתי לגרום לפונקציונליות מנהל לפעול על ידי שינוי ספריית Arduino_SNMP שנוצרה על ידי 0neblock. מעולם לא תיכננתי ב- C ++ מלבד לגרום להבהבי LED על ארדואינו, כך שאם יש בעיות בספריית SNMP הודע לי ואנסה לתקן אותן, בינתיים זה עובד.

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

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

כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
עיצוב מעגלים
עיצוב מעגלים

נצטרך 3 גשרי H מלאים. הדגמים בהם השתמשתי הם Dual TB6612FNGand Dual L298N.

כל מפעיל Air-Core דורש 2 גשרי H מלאים מכיוון שצריך לשלוט בסלילים באופן עצמאי.

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

אני אשתמש בווסת 12v עד 5v שהוא חלק מלוח L298N שבחרתי להפעלת ה- ESP32.

כל מעגלי ה- LED הם אופציונליים, כמו גם מחברי JST. אתה יכול בקלות להלחם את החוטים ישירות ל- ESP32 ולנהג המנוע.

שלב 3: עיצוב קוד

הגדרת קוד

נצטרך להגדיר את Arduino כדי שנוכל להשתמש בלוח ESP32. יש כאן מדריך טוב שיוביל אותך בהתקנת ESP32 Arduino.

תזדקק גם לספריית Arduino_SNMP הממוקמת כאן.

כדי להגדיר את הקוד, יהיה עליך לאסוף קצת מידע.

  1. נתב IP
  2. מהירות העלאה מקסימלית
  3. מהירות הורדה מקסימלית
  4. שם ה- WiFi והסיסמה שלך
  5. OID המכיל את ספירת השמיניות של "in" ו- "out" בממשק ה- WAN של הנתבים שלך

ישנם OIDs סטנדרטיים (מזהי אובייקטים) למידע שאנו רוצים. על פי תקן MIB-2 המספרים שאנו רוצים הם:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

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

כדי להשיג מהירויות מקסימליות השתמשתי ב- SpeedTest.net. ברגע שיש לך את המהירות שלך ב- Mbps תצטרך להמיר אותם לאוקטטים באמצעות נוסחה זו.

אוקטטים לשנייה = (תוצאה ממבחן מהירות ב- Mbps * 1048576) / 8

קוד פונקציה

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

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

percentDown = ((float) (byteDown - byteDownLast)/(float) (maxDown * ((millis () - timeLast)/1000))) * 100;

המתמטיקה מתפרקת כך:

octetsDiff = snmp_result - הקודם_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second)/1000

אחוז = (octetsDiff / MaxPosableOverTime) * 100

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

שלב 4: עיצוב מארז

עיצוב מארז
עיצוב מארז
עיצוב מארז
עיצוב מארז
עיצוב מארז
עיצוב מארז

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

קבצי STL שלי זמינים ב- Thingiverse אם אתה רוצה להסתכל עליהם, אך אין זה סביר שהם יעבדו עבורך, אלא אם תקבל את אותם מדידים שבהם השתמשתי.

תיקי תיק:

תודה שקראתם. הודע לי אם יש לך שאלות ואני אעשה כמיטב יכולתי לענות.

מוּמלָץ: