สารบัญ:

การตรวจสอบแบนด์วิดธ์: 7 ขั้นตอน (พร้อมรูปภาพ)
การตรวจสอบแบนด์วิดธ์: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การตรวจสอบแบนด์วิดธ์: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การตรวจสอบแบนด์วิดธ์: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: วิธีทดสอบ International Bandwidth ของ ISP ในประเทศไทย 2024, พฤศจิกายน
Anonim
การตรวจสอบแบนด์วิดธ์
การตรวจสอบแบนด์วิดธ์
การตรวจสอบแบนด์วิดธ์
การตรวจสอบแบนด์วิดธ์
การตรวจสอบแบนด์วิดธ์
การตรวจสอบแบนด์วิดธ์

เมื่อฉันถามตัวเองบ่อยๆ ว่า ISP ของฉันมีแบนด์วิดท์อะไรบ้าง (ฉันใช้โมเด็ม LTE สำหรับการเชื่อมต่ออินเทอร์เน็ต) ฉันนึกถึงระบบตรวจสอบแบนด์วิดท์ เนื่องจากระบบควรมีขนาดกะทัดรัดและประหยัดพลังงาน ฉันจึงเลือก Raspberry Pi Zero เป็นส่วนประกอบหลัก Raspberry เชื่อมต่อกับโมเด็มผ่าน WLAN ดังนั้นจึงสามารถตรวจพบปัญหา WLAN ได้เช่นกัน

เสบียง

  • Raspberry Pi Zero WH
  • จอแสดงผล Waveshare e-ink (โมดูลกระดาษอิเล็กทรอนิกส์ 2.9 นิ้ว)
  • ตัวแปลง DC-DC (เช่น DEBO DCDC 20W)
  • RGB LED (นำออกจากอุปกรณ์เก่า)
  • ปุ่มกด
  • สวิตช์
  • โมดูลรีเลย์ (เช่น โมดูลรีเลย์ 2 ทาง โมดูลรีเลย์ 2 ทาง)
  • ขั้วต่อตัวผู้ + ขั้วต่อตัวเมีย (ทั้งขนาดพอดีกับปลั๊กไฟของโมเด็มของคุณ)
  • เคสพิมพ์ 3 มิติ

ขั้นตอนที่ 1: คุณสมบัติ

คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
คุณสมบัติ
  • Raspberry Pi Zero เชื่อมต่อผ่าน WLAN ทดสอบความเร็วและดาวน์โหลด และทำการวัดค่า ping ทุกครึ่งชั่วโมง เวอร์ชันบรรทัดคำสั่งของ speedtest.net ถูกใช้เป็นพื้นฐานสำหรับการวัด
  • ผลลัพธ์ของการวัดแบนด์วิดธ์และ ping จะแสดงบนจอแสดงผล e-ink เวลาของการวัดจะแสดงด้วย
  • หากความเร็วในการดาวน์โหลดต่ำกว่าค่าเกณฑ์ที่กำหนดไว้ รีเลย์จะปิดและเปิดโมเด็มเป็นเวลาสั้นๆ โมเด็มจะถูกรีเซ็ตโดยไม่มีการดัดแปลงอุปกรณ์ (เฉพาะแหล่งจ่ายไฟเท่านั้นที่ถูกขัดจังหวะ)
  • มีปุ่มที่ด้านหน้าของอุปกรณ์เพื่อเรียกใช้การวัดแบนด์วิดท์ด้วยตนเอง
  • ค่าที่วัดได้จะแสดงบนแดชบอร์ด Ubidots (IOT Portal) ในภาพรวม คุณยังสามารถดูประวัติเวลาของค่าที่วัดได้และสาเหตุของการรีเซ็ตครั้งล่าสุด
  • ในพอร์ทัล IOT คุณยังสามารถค้นหาปุ่มเพื่อรีเซ็ตโมเด็มจากระยะไกลได้อีกด้วย
  • จอภาพแบนด์วิดท์ใช้แหล่งจ่ายไฟของโมเด็ม ไม่จำเป็นต้องมีอุปทานเพิ่มเติม relais ขัดจังหวะการส่งต่อของแหล่งจ่ายไฟไปยังโมเด็ม - ราสเบอร์รี่ยังคงเปิดอยู่

ขั้นตอนที่ 2: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ

ในภาพแรก คุณสามารถเห็นการออกแบบภายในของจอภาพแบนด์วิดธ์:

ส่วนประกอบหลักคือ:

    1. ปุ่มกด
    2. จอแสดงผลหมึกอิเล็กทรอนิกส์
    3. Raspberry Pi Zero
    4. โมดูลรีเลย์
    5. RGB LED + ตัวต้านทาน (ขึ้นอยู่กับ RGB LED ที่คุณใช้)
    6. สวิตช์
    7. ตัวแปลง DC-DC
    8. ขั้วต่อหญิง

ภาพที่สองแสดงแผนผังของการเดินสาย ขั้วบวกของแรงดันไฟฟ้าจ่ายผ่านสวิตช์ไปยังตัวแปลงแรงดันไฟฟ้า DC-DC (ซึ่งแปลงแรงดันไฟฟ้า 12V ของเราเตอร์เป็น 5V สำหรับ Raspberry) และผ่านรีเลย์ (ผ่านพินที่เชื่อมต่อตามปกติ) กลับไปที่ ขั้วต่อเอาต์พุต ดังนั้นโมเด็มจะได้รับพลังงานเมื่อปิดจอภาพแบนด์วิดธ์

การวัดแบนด์วิดธ์สามารถเริ่มต้นได้ด้วยตนเองโดยใช้ปุ่ม RGB LED ถูกใช้เพื่อแสดงภาพสถานะการทำงานต่างๆ

การเชื่อมต่อระหว่าง Raspberry Pi และจอแสดงผล e-ink ไม่แสดงในแผนภาพวงจร เชื่อมต่อจอแสดงผลตามตารางและหมุดด้านบน

ขั้นตอนที่ 3: การพิมพ์ 3 มิติและสร้างการไล่ล่า

การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า
การพิมพ์ 3 มิติและการสร้างการไล่ล่า

ชิ้นส่วนต่อไปนี้จำเป็นสำหรับเคส (ดูภาพด้านบน):

    1. ส่วนล่าง
    2. ส่วนบน
    3. ด้านหน้า
    4. กลับ
    5. เมานต์ 4x

สามารถพิมพ์ชิ้นส่วนทั้งหมดได้โดยไม่ต้องรองรับ คุณยังสามารถค้นหาไฟล์และการออกแบบอื่นๆ ของฉันได้ที่ Thingiverse:

สามารถติดจอแสดงผลเข้ากับแผงด้านหน้าโดยใช้ตัวยึดและเทปกาวสองหน้า สวิตช์ปุ่มและขั้วต่อตัวเมียถูกขันเข้ากับแผงด้านหลังและด้านหลัง ฉันใช้สกรู 3x20 มม. เพื่อเชื่อมต่อสองส่วนของตัวเรือน ความคลาดเคลื่อนของร่องสำหรับแผงด้านหน้าและด้านหลังค่อนข้างแน่น หากจำเป็น แผงด้านหน้าและด้านหลังจะต้องขัดที่ขอบ (ด้านในเพื่อหลีกเลี่ยงการทำลายพื้นผิว)

ขั้นตอนที่ 4: การตั้งค่า Raspberry PI

การตั้งค่า Raspberry PI
การตั้งค่า Raspberry PI
การตั้งค่า Raspberry PI
การตั้งค่า Raspberry PI

คู่มือการตั้งค่านี้อ้างอิงจากการรวบรวมคำแนะนำการติดตั้งต่างๆ จากแหล่งต่างๆ (ผู้ผลิตจอแสดงผล e-Ink, …) สำหรับฉันคำแนะนำได้นำไปสู่ผลลัพธ์ที่ต้องการ เนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญ Linux จึงไม่มีการเพิ่มประสิทธิภาพหรือสิ่งที่คล้ายคลึงกัน ฉันทราบดีว่ามีวิธีแก้ปัญหาที่ดีกว่าและมีประสิทธิภาพมากกว่าแน่นอน

ให้ถือว่าคุณติดตั้ง Raspbian บน Pi ของคุณแล้ว (มีบทช่วยสอนมากมายเกี่ยวกับวิธีการติดตั้งระบบปฏิบัติการพื้นฐาน) และคุณมีจอแสดงผล (ผ่าน miniHDMI) เชื่อมต่อเมาส์และคีย์บอร์ด ถือว่าตั้งค่าการเชื่อมต่อ WLAN อย่างถูกต้องกับเราเตอร์หรืออินเทอร์เน็ตด้วย เว้นแต่จะระบุไว้เป็นอย่างอื่น ขั้นตอนการติดตั้งทั้งหมดจะดำเนินการในเทอร์มินัล

ติดตั้งเดสก์ท็อประยะไกล (เพื่อเข้าถึง PI จากคอมพิวเตอร์ของคุณ):

sudo apt-get update

sudo apt-get

ติดตั้ง xrdp

หรือคุณสามารถทำงานหัวขาดผ่าน ssh ได้ (ดูเช่น

เปลี่ยนรหัสผ่าน:

www.raspberrypi.org/forums/viewtopic.php?t=193620

ติดตั้ง speedtest:

sudo

apt-get ติดตั้ง python-pip

sudo pip ติดตั้ง speedtest-cli

เพื่อทดสอบว่าการติดตั้งสำเร็จหรือไม่ ให้รัน Speedtest ในเทอร์มินัล:

speedtest-cli

หากทุกอย่างถูกต้องคุณควรได้รับสิ่งที่ชอบในภาพแรกด้านบน

ติดตั้งสายไฟPI

sudo apt-get ติดตั้ง git-core

โคลน git git://git.drogon.net/wiringPi

cdสายไฟPi

./สร้าง

(ดูเพิ่มเติมที่

ทางเลือก:

sudo apt-get ติดตั้งสายไฟpi

(ดู

ติดตั้ง BCM2835

(ดู

ดาวน์โหลด bcm2835-1.60.tar.gz (หรือเวอร์ชันที่ใหม่กว่าถ้ามี)

tar zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./configure

ทำ

sudo ทำการตรวจสอบ

sudo ทำการติดตั้ง

ติดตั้งไลบรารีภาพ Python

sudo apt-get ติดตั้ง 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/Downloads/droid /usr/share/fonts/truetype

sudo cp -r /home/pi/Downloads/roboto /usr/share/fonts/truetype

คุณต้องมีสิทธิ์รูทเพื่อเข้าถึงโฟลเดอร์ฟอนต์ อาจมีวิธีที่ดีกว่าในการทำเช่นนี้ (ดังที่ได้กล่าวมาแล้วว่าฉันไม่ใช่ผู้เชี่ยวชาญ Linux) แต่ทั้งสองวิธีก็ใช้ได้สำหรับฉัน

ไฟล์ไพทอน:

ใช้ตัวจัดการไฟล์เพื่อสร้างโฟลเดอร์ใหม่ "bandwidth_monitor"

คัดลอกไฟล์ทั้งหมดไปยังไดเร็กทอรี bandwidth_monitor

ทำให้ไฟล์ python และสคริปต์ปฏิบัติการได้

chmod +x *.py

chmod +x speedtest-cron.sh

กำหนดค่า crontab

crontab -e

Crontab ใช้เพื่อกำหนดเวลาการทำงานของโปรแกรมเช่น speedtest ทุกๆ 30 นาที เพิ่มบรรทัดต่อไปนี้ใน crontab ของคุณ (ดูรูปที่สองด้วย):

@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) ระหว่างการทดสอบ ไฟ LED RGB จะเป็นสีน้ำเงิน หากแบนด์วิดท์สูงกว่าเกณฑ์ที่เลือก ค่าจะแสดงบนจอแสดงผล e-ink (พร้อมกับการประทับเวลา) และส่งออกไปยังแดชบอร์ด Ubidots หากแบนด์วิดท์ต่ำกว่าเกณฑ์ ไฟ LED จะเปลี่ยนเป็นสีแดงและการวัดจะทำซ้ำหลังจากหน่วงเวลาสั้นๆ หลังจากพยายามลบ 3 ครั้ง รีเลย์จะเปิดใช้งานและทำให้แหล่งจ่ายไฟของโมเด็มหยุดชะงัก รหัสรีเซ็ต (value=2) ถูกเขียนลงในส่วนบันทึก

poll_killswitch.py อ่านสถานะของตัวแปรบูลีนบนแดชบอร์ด ถ้า killswitch_state เป็นจริง relais จะถูกเปิดใช้งานและแหล่งจ่ายไฟของโมเด็มจะถูกขัดจังหวะ ไฟ LED RGB เปลี่ยนเป็นสีเขียวระหว่างโพลของ killswitch หลังจากการรีเซ็ต killswitch_state จะถูกตั้งค่าเป็นเท็จ และสร้างรายการในส่วนบันทึกของแดชบอร์ด (value=1)

poll_test_now_button.py กำลังรอให้กดปุ่มที่แผงด้านหน้าของเคส เมื่อเปิดใช้งานปุ่ม การวัดแบนด์วิดท์จะถูกเรียกใช้ด้วยตนเอง เมื่อโปรแกรมเริ่มทำงาน (เมื่อรีบูต Raspberry Pi) ไฟ LED RGB จะกะพริบเป็นสีแดง

post_restart_message.py เขียนรหัสรีเซ็ต (value=3) ไปยังส่วนบันทึกของแดชบอร์ด ซึ่งบ่งชี้ว่าได้เริ่มการตรวจสอบแบนด์วิดธ์ใหม่แล้ว ระหว่างโปรแกรมเริ่มต้น ไฟ LED RGB จะกะพริบเป็นสีน้ำเงิน

test_LED.py และ test_relay.py เป็นสคริปต์ง่ายๆ ที่สามารถใช้ทดสอบฟังก์ชันฮาร์ดแวร์ของ RGB LED และรีเลย์ได้

epdconfig.py และ epd2in9.py เป็นไดรเวอร์อุปกรณ์สำหรับการแสดงผล e-ink ที่ Waveshare จัดหาให้

เพื่อให้โปรแกรมเข้าถึงแดชบอร์ด Ubidots คุณต้องเพิ่มโทเค็นและชื่ออุปกรณ์หรือตัวแปรส่วนบุคคลของคุณ (หากคุณใช้สัญลักษณ์ต่างกัน) ค้นหาส่วนเหมือนที่แสดงในภาพด้านบน (แทนที่ XXXXXXXX ด้วยโทเค็นของคุณ)

บทแนะนำที่ครอบคลุมเกี่ยวกับวิธีการสร้างแดชบอร์ดและวิธีผสานรวมแดชบอร์ดเข้ากับโปรแกรม Python สามารถพบได้โดยตรงที่หน้า Ubidots (https://help.ubidots.com/en/) หรือผ่านทาง Google

ขั้นตอนที่ 6: IOT Dashboard

IOT Dashboard
IOT Dashboard

แดชบอร์ดที่โฮสต์โดย Ubidots (ดู https://ubidots.com) มีหลายส่วนที่อธิบายไว้ด้านล่างโดยย่อ

    1. ลำดับเวลาของความเร็วในการอัพโหลดและดาวน์โหลด ทุกครึ่งชั่วโมง ค่าใหม่จะถูกแทรกลงในไดอะแกรม
    2. ช่วงเวลาของเวลาปิงที่วัดได้ ค่าใหม่จะถูกแทรกลงในไดอะแกรมทุกครึ่งชั่วโมง
    3. ลำดับเวลาของความเร็วในการดาวน์โหลดเฉลี่ย ค่าเฉลี่ยตลอด 24 ชั่วโมงจะถูกคำนวณและเขียนลงในไดอะแกรม
    4. การแสดงสเปรดชีตของค่าการวัดปัจจุบันรวมถึงการประทับเวลา
    5. ปุ่มควบคุมระยะไกลสำหรับรีเซ็ตโมเด็มผ่านอินเทอร์เน็ต แบบสอบถามเกิดขึ้นทุก 3 นาที กล่าวคือ อาจใช้เวลาสักครู่จนกว่าการดำเนินการจะดำเนินการ
    6. บันทึกการรีเซ็ตครั้งล่าสุดรวมถึงสาเหตุของการรีเซ็ต (ทริกเกอร์จากระยะไกล การปิดหรือการสูญเสียแรงดันไฟฟ้า ต่ำกว่าแบนด์วิดท์ขั้นต่ำ)

บทแนะนำที่ครอบคลุมเกี่ยวกับวิธีการสร้างแดชบอร์ดและวิธีผสานรวมแดชบอร์ดเข้ากับโปรแกรม Python สามารถพบได้โดยตรงที่หน้า Ubidots (https://help.ubidots.com/en/) หรือผ่านทาง Google

แนะนำ: