วีดีโอ: มาตรวัดความเร็วอินเทอร์เน็ต: 4 ขั้นตอน (พร้อมรูปภาพ)
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ภาพรวม
"มาตรวัดความเร็วอินเทอร์เน็ต" นี้จะช่วยให้คุณดูแลการใช้งานเครือข่ายของคุณแบบเรียลไทม์ ข้อมูลนี้มีอยู่ในเว็บอินเตอร์เฟสของเราเตอร์ในบ้านส่วนใหญ่ อย่างไรก็ตาม ในการเข้าถึงคุณต้องหยุดงานปัจจุบันเพื่อค้นหา
ฉันต้องการดูข้อมูลนี้โดยไม่ต้องขัดจังหวะงานปัจจุบันของฉัน เพื่อแสดงในรูปแบบที่เข้าใจได้เพียงแค่ชำเลืองมอง และเพื่อให้ได้ข้อมูลในลักษณะที่จะทำงานร่วมกับเราเตอร์ได้มากที่สุดเท่าที่เป็นไปได้ เพื่อให้ผู้อื่นสามารถทำได้ อาจใช้มันด้วย
มันทำสิ่งต่าง ๆ ได้อย่างไร
ฉันตัดสินใจใช้ SNMP (Simple Network Management Protocol) เป็นวิธีการรับข้อมูลจากเราเตอร์ SNMP ใช้กันอย่างแพร่หลายในอุปกรณ์เครือข่าย และหากอุปกรณ์ของคุณไม่รองรับโดยค่าเริ่มต้น DDWRT (เฟิร์มแวร์เราเตอร์โอเพนซอร์ส) ก็สามารถนำมาใช้เพื่อปรับใช้ SNMP ได้
เพื่อแสดงข้อมูลในลักษณะที่เข้าใจง่าย ผมใช้เกจวัดจากรถ มาตรวัดในรถยนต์ได้รับการออกแบบมาเพื่อให้ข้อมูลแก่คุณโดยไม่เสียสมาธิหรือสับสน ดังนั้นผู้ขับขี่จึงสามารถละสายตาจากท้องถนนได้ นอกจากนี้ ฉันยังมีบางอย่างนอนอยู่รอบๆ
เนื่องจากสิ่งนี้จะอยู่บนโต๊ะของฉัน ฉันจึงตัดสินใจว่าจะทำไฟแบ็คไลท์ RGB ด้วย เพราะอุปกรณ์คอมพิวเตอร์ควรเป็น RGB ทั้งหมด ถูกต้อง?
ความท้าทาย
เกจที่ฉันเคยใช้แอคชูเอเตอร์ของ Air-Core ฉันไม่เคยได้ยินเรื่องนี้มาก่อนโครงการนี้
จากวิกิพีเดีย: เกจแกนอากาศประกอบด้วยคอยล์ตั้งฉากอิสระสองตัวล้อมรอบห้องกลวง ก้านเข็มยื่นออกมาในห้องซึ่งมีแม่เหล็กถาวรติดอยู่กับเพลา เมื่อกระแสไหลผ่านขดลวดตั้งฉาก สนามแม่เหล็กของพวกมันจะซ้อนทับกัน และแม่เหล็กจะมีอิสระในการจัดแนวกับสนามแม่เหล็กที่รวมกัน
ฉันไม่พบไลบรารี่สำหรับ Arduino ที่รองรับ SNMP ในการกำหนดค่าตัวจัดการ SNMP มีสองรูปแบบหลัก คือ ตัวแทนและผู้จัดการ ตัวแทนตอบสนองต่อคำขอและผู้จัดการส่งคำขอไปยังตัวแทน ฉันสามารถใช้ฟังก์ชันผู้จัดการได้โดยการปรับเปลี่ยนไลบรารี Arduino_SNMP ที่สร้างโดย 0neblock ฉันไม่เคยตั้งโปรแกรมใน C ++ นอกจากทำให้ LED กะพริบบน Arduino ดังนั้นหากมีปัญหากับไลบรารี SNMP แจ้งให้เราทราบและฉันจะพยายามแก้ไขสำหรับตอนนี้ก็ใช้งานได้
นอกจากนี้ SNMP ไม่ได้ออกแบบมาสำหรับการดูแบบเรียลไทม์ วัตถุประสงค์การใช้งานมีไว้สำหรับการติดตามสถิติและการตรวจจับการหยุดทำงาน ด้วยเหตุนี้ ข้อมูลบนเราเตอร์จึงอัปเดตทุกๆ 5 วินาทีเท่านั้น (อุปกรณ์ของคุณอาจแตกต่างกันไป) นั่นเป็นสาเหตุของความล่าช้าระหว่างตัวเลขในการทดสอบความเร็วกับการเคลื่อนที่ของเข็ม
ขั้นตอนที่ 1: เครื่องมือและวัสดุ
เราต้องการสะพาน H เต็มรูปแบบ 3 แห่ง รุ่นที่ฉันใช้คือ Dual TB6612FNG และ Dual L298N
แอ๊คทูเอเตอร์ Air-Core แต่ละตัวต้องการ H-bridge 2 ตัว เนื่องจากคอยล์ต้องควบคุมอย่างอิสระ
เกจที่ฉันใช้อยู่ตัวหนึ่งมีคอยล์หนึ่งตัวที่ลัดวงจรลงกราวด์ด้วยไดโอดและตัวต้านทาน ฉันไม่แน่ใจเกี่ยวกับวิทยาศาสตร์ที่อยู่เบื้องหลัง แต่การทำเช่นนั้นทำให้สามารถหมุนได้ประมาณ 90 องศาโดยใช้ขดลวดเพียงอันเดียว
ฉันจะใช้ตัวควบคุม 12v ถึง 5v ซึ่งเป็นส่วนหนึ่งของบอร์ด L298N ที่ฉันเลือกเพื่อจ่ายไฟให้กับ ESP32
วงจร LED ทั้งหมดเป็นอุปกรณ์เสริม เช่นเดียวกับขั้วต่อ JST คุณสามารถบัดกรีสายไฟเข้ากับ ESP32 และไดรเวอร์มอเตอร์ได้โดยตรง
ขั้นตอนที่ 3: การออกแบบโค้ด
ตั้งค่ารหัส
เราจะต้องตั้งค่า Arduino เพื่อให้สามารถใช้บอร์ด ESP32 ได้ มีคำแนะนำที่ดีอยู่ที่นี่ซึ่งจะแนะนำคุณเกี่ยวกับการตั้งค่า ESP32 Arduino
คุณจะต้องมีไลบรารี Arduino_SNMP อยู่ที่นี่ด้วย
ในการกำหนดค่ารหัส คุณจะต้องรวบรวมข้อมูลบางอย่าง
- IP ของเราเตอร์
- ความเร็วในการอัพโหลดสูงสุด
- ความเร็วในการดาวน์โหลดสูงสุด
- ชื่อ WiFi และรหัสผ่านของคุณ
- OID ที่มีออคเต็ตนับสำหรับ "เข้า" และ "ออก" บนอินเทอร์เฟซ WAN ของเราเตอร์ของคุณ
มี OID มาตรฐาน (ตัวระบุวัตถุ) สำหรับข้อมูลที่เราต้องการ ตามมาตรฐาน MIB-2 ตัวเลขที่เราต้องการคือ:
ifInOctets.1.3.6.1.2.1.2.2.1.16. X
ifOutOctets.1.3.6.1.2.1.1.2.2.1.10. X
โดยที่ X คือหมายเลขที่กำหนดให้กับอินเทอร์เฟซที่คุณต้องการรับสถิติ สำหรับฉันหมายเลขนั้นคือ 3 วิธีหนึ่งในการยืนยันว่านี่คือ OID ที่ถูกต้องสำหรับคุณและระบุหมายเลขอินเทอร์เฟซที่คุณต้องการใช้ คือการใช้เครื่องมือเช่น MIB Browser
เพื่อให้ได้ความเร็วสูงสุด ฉันใช้ SpeedTest.net เมื่อคุณมีความเร็วเป็น Mbps แล้ว คุณจะต้องแปลงเป็น octets โดยใช้สูตรนี้
Octets ต่อวินาที = (ผลจากการทดสอบความเร็วเป็น Mbps * 1048576) / 8
ฟังก์ชั่นรหัส
รหัสจะส่งคำขอรับ SNMP ไปยังเราเตอร์ จากนั้นเราเตอร์จะตอบกลับด้วยตัวเลข ตัวเลขแสดงถึงจำนวนออกเตตที่ส่งหรือรับ ในเวลาเดียวกัน เราบันทึกจำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่ Arduino เริ่มทำงาน
เมื่อกระบวนการนี้เกิดขึ้นอย่างน้อยสองครั้ง เราสามารถคำนวณเปอร์เซ็นต์การใช้งานตามค่าสูงสุดของเราโดยใช้รหัสนี้
เปอร์เซ็นต์ลง = ((ลอย)(byteDown - byteDownLast)/(float)(maxDown*((มิลลิวินาที() - timeLast)/1000))) * 100;
คณิตศาสตร์แบ่งออกดังนี้:
octetsDiff = snmp_result - Previous_ snmp_result
timeFrame = ปัจจุบันเวลา - timeLast
MaxPosableOverTime = (กรอบเวลา * Octets_per_second)/1000
เปอร์เซ็นต์ = (octetsDiff / MaxPosableOverTime) * 100
ตอนนี้เรามีเปอร์เซ็นต์การใช้งานเครือข่ายแล้ว เราก็แค่ต้องเขียนลงในมาตรวัด เราทำใน 2 ขั้นตอน ขั้นแรกเราใช้ฟังก์ชัน updateDownloadGauge ในฟังก์ชันนี้ เราใช้ "แผนที่" เพื่อแปลงเปอร์เซ็นต์เป็นตัวเลขที่แสดงตำแหน่งเรเดียนบนมาตรวัด จากนั้นเราให้ตัวเลขนั้นกับฟังก์ชัน setMeterPosition เพื่อเลื่อนเข็มไปยังตำแหน่งใหม่
ขั้นตอนที่ 4: การออกแบบเคส
เพื่อบรรจุทุกอย่าง ฉันออกแบบกล่องหุ้มใน fusion360 และ 3Dprinted การออกแบบที่ฉันทำค่อนข้างง่าย ฉันใช้กาวร้อนติดส่วนประกอบเข้ากับด้านใน และยึดมาตรวัดให้เข้าที่โดยหนีบระหว่างฝาครอบด้านหน้าและด้านหลัง คุณไม่จำเป็นต้องใช้การพิมพ์ 3 มิติเพื่อสร้างเคส ตัวอย่างเช่น คุณสามารถทำเคสที่ทำจากไม้ หรือคุณอาจนำทุกอย่างกลับเข้าที่ในกล่องเดิมที่มีเกจเข้ามา
ไฟล์ STL ของฉันมีอยู่ในสิ่งของต่าง ๆ หากคุณต้องการดูไฟล์เหล่านี้ แต่ไม่น่าจะใช้งานได้สำหรับคุณเว้นแต่คุณจะได้รับมาตรวัดแบบเดียวกับที่ฉันใช้
ไฟล์เคส:
ขอบคุณที่อ่าน. โปรดแจ้งให้เราทราบหากคุณมีคำถามใดๆ และเราจะพยายามตอบอย่างเต็มที่