สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: คุณสมบัติ
- ขั้นตอนที่ 2: การเดินสายไฟ
- ขั้นตอนที่ 3: การพิมพ์ 3 มิติและสร้างการไล่ล่า
- ขั้นตอนที่ 4: การตั้งค่า Raspberry PI
- ขั้นตอนที่ 5: ซอฟต์แวร์
- ขั้นตอนที่ 6: IOT Dashboard
- ขั้นตอนที่ 7: การแนะนำฟังก์ชันพื้นฐาน
วีดีโอ: การตรวจสอบแบนด์วิดธ์: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เมื่อฉันถามตัวเองบ่อยๆ ว่า 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: การเดินสายไฟ
ในภาพแรก คุณสามารถเห็นการออกแบบภายในของจอภาพแบนด์วิดธ์:
ส่วนประกอบหลักคือ:
- ปุ่มกด
- จอแสดงผลหมึกอิเล็กทรอนิกส์
- Raspberry Pi Zero
- โมดูลรีเลย์
- RGB LED + ตัวต้านทาน (ขึ้นอยู่กับ RGB LED ที่คุณใช้)
- สวิตช์
- ตัวแปลง DC-DC
- ขั้วต่อหญิง
ภาพที่สองแสดงแผนผังของการเดินสาย ขั้วบวกของแรงดันไฟฟ้าจ่ายผ่านสวิตช์ไปยังตัวแปลงแรงดันไฟฟ้า DC-DC (ซึ่งแปลงแรงดันไฟฟ้า 12V ของเราเตอร์เป็น 5V สำหรับ Raspberry) และผ่านรีเลย์ (ผ่านพินที่เชื่อมต่อตามปกติ) กลับไปที่ ขั้วต่อเอาต์พุต ดังนั้นโมเด็มจะได้รับพลังงานเมื่อปิดจอภาพแบนด์วิดธ์
การวัดแบนด์วิดธ์สามารถเริ่มต้นได้ด้วยตนเองโดยใช้ปุ่ม RGB LED ถูกใช้เพื่อแสดงภาพสถานะการทำงานต่างๆ
การเชื่อมต่อระหว่าง Raspberry Pi และจอแสดงผล e-ink ไม่แสดงในแผนภาพวงจร เชื่อมต่อจอแสดงผลตามตารางและหมุดด้านบน
ขั้นตอนที่ 3: การพิมพ์ 3 มิติและสร้างการไล่ล่า
ชิ้นส่วนต่อไปนี้จำเป็นสำหรับเคส (ดูภาพด้านบน):
- ส่วนล่าง
- ส่วนบน
- ด้านหน้า
- กลับ
- เมานต์ 4x
สามารถพิมพ์ชิ้นส่วนทั้งหมดได้โดยไม่ต้องรองรับ คุณยังสามารถค้นหาไฟล์และการออกแบบอื่นๆ ของฉันได้ที่ Thingiverse:
สามารถติดจอแสดงผลเข้ากับแผงด้านหน้าโดยใช้ตัวยึดและเทปกาวสองหน้า สวิตช์ปุ่มและขั้วต่อตัวเมียถูกขันเข้ากับแผงด้านหลังและด้านหลัง ฉันใช้สกรู 3x20 มม. เพื่อเชื่อมต่อสองส่วนของตัวเรือน ความคลาดเคลื่อนของร่องสำหรับแผงด้านหน้าและด้านหลังค่อนข้างแน่น หากจำเป็น แผงด้านหน้าและด้านหลังจะต้องขัดที่ขอบ (ด้านในเพื่อหลีกเลี่ยงการทำลายพื้นผิว)
ขั้นตอนที่ 4: การตั้งค่า 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
แดชบอร์ดที่โฮสต์โดย Ubidots (ดู https://ubidots.com) มีหลายส่วนที่อธิบายไว้ด้านล่างโดยย่อ
- ลำดับเวลาของความเร็วในการอัพโหลดและดาวน์โหลด ทุกครึ่งชั่วโมง ค่าใหม่จะถูกแทรกลงในไดอะแกรม
- ช่วงเวลาของเวลาปิงที่วัดได้ ค่าใหม่จะถูกแทรกลงในไดอะแกรมทุกครึ่งชั่วโมง
- ลำดับเวลาของความเร็วในการดาวน์โหลดเฉลี่ย ค่าเฉลี่ยตลอด 24 ชั่วโมงจะถูกคำนวณและเขียนลงในไดอะแกรม
- การแสดงสเปรดชีตของค่าการวัดปัจจุบันรวมถึงการประทับเวลา
- ปุ่มควบคุมระยะไกลสำหรับรีเซ็ตโมเด็มผ่านอินเทอร์เน็ต แบบสอบถามเกิดขึ้นทุก 3 นาที กล่าวคือ อาจใช้เวลาสักครู่จนกว่าการดำเนินการจะดำเนินการ
- บันทึกการรีเซ็ตครั้งล่าสุดรวมถึงสาเหตุของการรีเซ็ต (ทริกเกอร์จากระยะไกล การปิดหรือการสูญเสียแรงดันไฟฟ้า ต่ำกว่าแบนด์วิดท์ขั้นต่ำ)
บทแนะนำที่ครอบคลุมเกี่ยวกับวิธีการสร้างแดชบอร์ดและวิธีผสานรวมแดชบอร์ดเข้ากับโปรแกรม Python สามารถพบได้โดยตรงที่หน้า Ubidots (https://help.ubidots.com/en/) หรือผ่านทาง Google
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-