Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Khi tôi thường tự hỏi mình ISP của tôi hiện đang cung cấp băng thông nào (tôi sử dụng modem LTE cho kết nối Internet), tôi đã nghĩ đến một hệ thống giám sát băng thông. Vì hệ thống phải nhỏ gọn và tiết kiệm điện năng, tôi đã chọn Raspberry Pi Zero làm thành phần trung tâm. Raspberry được kết nối với modem qua mạng WLAN, do đó các vấn đề về mạng WLAN cũng có thể được phát hiện.
Quân nhu
- Raspberry Pi Zero WH
- Màn hình Waveshare e-ink (2.9 inch-e-paper-module)
- Bộ chuyển đổi DC-DC (ví dụ: DEBO DCDC 20W)
- Đèn LED RGB (lấy ra từ thiết bị cũ)
- Nút bấm
- Chuyển
- Mô-đun chuyển tiếp (ví dụ: mô-đun chuyển tiếp 2 chiều Mô-đun chuyển tiếp 2 chiều)
- Đầu nối nam + Đầu nối nữ (cả hai đều vừa với kích thước của phích cắm cấp nguồn modem của bạn)
- Trường hợp in 3D
Bước 1: Tính năng
- Raspberry Pi Zero được kết nối qua mạng WLAN, kiểm tra tốc độ tải lên và tải xuống và thực hiện đo ping cứ nửa giờ một lần. Phiên bản dòng lệnh của speedtest.net được sử dụng làm cơ sở cho các phép đo.
- Kết quả của phép đo băng thông và ping được hiển thị trên màn hình e-ink. Thời gian của phép đo cũng được hiển thị.
- Nếu tốc độ tải xuống dưới một giá trị ngưỡng xác định, một rơ le sẽ tắt và bật modem trong một thời gian ngắn. Do đó, modem sẽ được đặt lại mà không cần sửa đổi thiết bị nào (chỉ nguồn điện bị ngắt).
- Một nút ở mặt trước của thiết bị có sẵn để kích hoạt phép đo băng thông theo cách thủ công.
- Các giá trị đo được hiển thị trên Bảng điều khiển Ubidots (Cổng thông tin IOT). Trong phần tổng quan, bạn cũng có thể xem lịch sử thời gian của các giá trị đo được và lý do đặt lại lần cuối.
- Trong IOT Portal, bạn cũng có thể tìm thấy một nút để đặt lại modem từ xa.
- Màn hình băng thông sử dụng nguồn điện của modem. Không cần cung cấp thêm. Relais làm gián đoạn việc chuyển tiếp nguồn điện đến modem - mâm xôi vẫn được bật.
Bước 2: Đấu dây
Trong hình đầu tiên, bạn có thể thấy thiết kế bên trong của màn hình băng thông:
Các thành phần chính là:
- Nút ấn
- Màn hình mực điện tử
- Raspberry Pi Zero
- Mô-đun chuyển tiếp
- LED RGB + Điện trở (tùy thuộc vào LED RGB bạn sử dụng)
- Chuyển
- Bộ chuyển đổi DC / DC
- Connector nữ
Hình ảnh thứ hai cho thấy một sơ đồ của hệ thống dây điện. Cực dương của điện áp cung cấp được cấp qua công tắc tới bộ chuyển đổi điện áp DC-DC (chuyển đổi điện áp cung cấp 12V của bộ định tuyến thành 5V cho Raspberry) và qua rơle (thông qua chân kết nối bình thường) trở lại đầu nối đầu ra. Do đó, modem cũng được cung cấp năng lượng khi tắt màn hình băng thông.
Việc đo băng thông có thể được bắt đầu bằng tay thông qua một nút. Đèn LED RGB được sử dụng để hiển thị các trạng thái hoạt động khác nhau.
Kết nối giữa Raspberry Pi và màn hình e-ink không được hiển thị trong sơ đồ mạch. Kết nối màn hình theo bảng và chốt ở trên.
Bước 3: In 3D và xây dựng cuộc truy đuổi
Các bộ phận sau đây là cần thiết cho trường hợp (xem hình trên):
- phần dưới
- phần trên
- đằng trước
- mặt sau
- 4x mount
Tất cả các bộ phận có thể được in mà không cần hỗ trợ. Bạn cũng có thể tìm thấy các tệp và một số thiết kế khác của tôi trên Thingiverse:
Màn hình có thể được gắn vào bảng điều khiển phía trước bằng giá đỡ và băng keo hai mặt. Công tắc nút và đầu nối cái được vặn vào bảng điều khiển phía sau và phía sau. Tôi đã sử dụng vít 3x20mm để kết nối hai nửa của vỏ. Dung sai trên các rãnh cho các tấm phía trước và phía sau tương đối chặt chẽ. Nếu cần thiết, các tấm phía trước và phía sau phải được chà nhám ở mép (ở mặt trong để tránh phá hủy bề mặt).
Bước 4: Thiết lập Raspberry PI
Hướng dẫn cài đặt này dựa trên việc biên soạn một số hướng dẫn cài đặt từ các nguồn khác nhau (nhà sản xuất màn hình e-Ink,…). Đối với tôi, các hướng dẫn đã dẫn đến kết quả mong muốn. Vì tôi không phải là chuyên gia Linux nên không có tối ưu hóa hoặc tương tự nào được thực hiện. Tôi biết rằng chắc chắn có những giải pháp tốt hơn và hiệu quả hơn.
Giả sử bạn đã cài đặt Raspbian trên Pi (có nhiều hướng dẫn về cách cài đặt hệ điều hành cơ bản) và bạn có màn hình (thông qua miniHDMI), chuột và bàn phím được kết nối. Kết nối WLAN được thiết lập chính xác với bộ định tuyến hoặc Internet cũng được giả định. Trừ khi có quy định khác, tất cả các quy trình cài đặt được thực hiện trong thiết bị đầu cuối.
Cài đặt máy tính từ xa (để truy cập PI từ máy tính của bạn):
sudo apt-get cập nhật
sudo apt-get
cài đặt xrdp
hoặc bạn cũng có thể làm việc không cần đầu thông qua ssh (xem ví dụ:
Đổi mật khẩu:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Cài đặt speedtest:
sudo
apt-get cài đặt python-pip
sudo pip cài đặt speedtest-cli
để kiểm tra xem cài đặt có thành công hay không, hãy chạy Speedtest trong thiết bị đầu cuối:
speedtest-cli
nếu mọi thứ là chính xác, bạn sẽ nhận được một cái gì đó như trong hình đầu tiên ở trên.
Cài đặt wiringPI
sudo apt-get install git-core
git clone git: //git.drogon.net/wiringPi
cd wiringPi
./xây dựng
(xem thêm
Alternativ:
sudo apt-get install wiringpi
(xem
Cài đặt BCM2835
(xem
Tải xuống bcm2835-1.60.tar.gz (hoặc phiên bản mới hơn nếu có)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./configure
chế tạo
sudo kiểm tra
sudo thực hiện cài đặt
Cài đặt thư viện hình ảnh Python
sudo apt-get install python-images
Alternativ:
sudo apt-get install python-pil
Kích hoạt chức năng I2C.
Chạy lệnh sau để định cấu hình bo mạch Raspberry Pi của bạn:
sudo raspi-config
Chọn Tùy chọn giao diện-> I2C -> có, để khởi động trình điều khiển lõi I2C. Sau đó, bạn cũng cần phải sửa đổi tệp cấu hình. Chạy lệnh sau để mở tệp cấu hình:
sudo nano / etc / modules
Thêm hai dòng sau vào tệp cấu hình
i2c-bcm2708
i2c-dev
Xem thêm
Bật chức năng SPI
Chạy lệnh sau để định cấu hình bo mạch Raspberry Pi của bạn:
sudo raspi-config
Chọn Tùy chọn giao diện-> SPI -> có, để khởi động trình điều khiển cốt lõi SPI.
Cài đặt phông chữ bổ sung:
sudo apt-get install ttf-mscorefonts-installer
Tải xuống và cài đặt Phông chữ (Roboto + Droid)
gksudo
pcmanfm
Để khởi động trình quản lý tệp với đặc quyền gốc và sao chép phông chữ truetype vào thư mục / usr / share / fonts / truetype
Alternativ:
Sao chép phông chữ vào thư mục Tải xuống bằng WinSCP (ssh phải được bật để sử dụng WinSCP)
sudo cp -r / home / pi / Downloads / droid / usr / share / fonts / truetype
sudo cp -r / home / pi / Downloads / roboto / usr / share / fonts / truetype
Bạn cần quyền root để truy cập thư mục phông chữ. Có thể có nhiều cách tốt hơn để làm điều này (như alread đã đề cập, tôi không phải là chuyên gia Linux) nhưng cả hai cách đều hiệu quả với tôi.
Tệp Python:
Sử dụng filemanger để tạo một thư mục mới "tape_monitor"
Sao chép tất cả các tệp vào thư mục tape_monitor
Làm cho tệp python và tập lệnh có thể thực thi được
chmod + x *.py
chmod + x speedtest-cron.sh
Định cấu hình crontab
crontab -e
Crontab được sử dụng để lập lịch thực thi chương trình, ví dụ: kiểm tra tốc độ sau mỗi 30 phút. Thêm các dòng sau vào crontab của bạn (xem thêm hình thứ hai):
@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
Mô tả các nhiệm vụ đã lên lịch:
- khi khởi động lại, thông báo khởi động lại được ghi vào bảng điều khiển IOT
- khi khởi động lại, cuộc thăm dò ý kiến test_now_button được bắt đầu
- cứ sau 30 phút, một phép đo băng thông được thực hiện
- cứ sau 3 phút, trạng thái của nút đặt lại từ xa (trên bảng điều khiển IOT) được kiểm tra
- mỗi ngày một lần, một chu kỳ làm mới màn hình được bắt đầu.
Xem phần phần mềm để biết mô tả ngắn gọn về các chương trình.
Bước 5: Phần mềm
Phần mềm được chia thành nhiều tệp / chương trình:
band_monitor_0_4.py là chương trình chính được Crontab gọi nửa giờ một lần. Nó thực hiện kiểm tra băng thông (thông qua phiên bản dòng lệnh của speedtest.net). Trong quá trình thử nghiệm, đèn LED RGB có màu xanh lam. Nếu băng thông vượt quá ngưỡng đã chọn, giá trị được hiển thị trên màn hình e-ink (cùng với dấu thời gian) và được xuất sang bảng điều khiển Ubidots. Nếu băng thông dưới ngưỡng, đèn LED sẽ chuyển sang màu đỏ và phép đo được lặp lại sau một khoảng thời gian ngắn. Sau 3 lần thử tiêu cực, rơ le được kích hoạt và do đó nguồn điện của modem bị gián đoạn. Mã đặt lại (giá trị = 2) được ghi vào phần nhật ký.
thăm dò_killswitch.py đọc trạng thái của một biến boolean trên trang tổng quan. Nếu killswitch_state là true, hệ thống sẽ được kích hoạt, nguồn điện của modem bị ngắt. Đèn LED RGB chuyển sang màu xanh lục trong quá trình bỏ phiếu của công cụ giết người. Sau khi đặt lại, killswitch_state được đặt là false và một mục nhập trong phần nhật ký của bảng điều khiển được tạo (giá trị = 1).
thăm dò ý kiến_test_now_button.py đang đợi nhấn nút trên bảng điều khiển phía trước của hộp đựng. Bằng cách kích hoạt nút, phép đo băng thông được kích hoạt theo cách thủ công. Khi chương trình được khởi động (lúc khởi động lại Raspberry Pi), đèn LED RGB nhấp nháy màu đỏ.
post_restart_message.py ghi mã đặt lại (value = 3) vào phần nhật ký của trang tổng quan. Điều này cho thấy rằng màn hình băng thông đã được khởi động lại. Trong khi bắt đầu chương trình, đèn LED RGB nhấp nháy màu xanh lam.
test_LED.py và test_relay.py là các tập lệnh đơn giản có thể được sử dụng để kiểm tra chức năng phần cứng của đèn LED RGB và rơ le.
epdconfig.py và epd2in9.py là trình điều khiển thiết bị cho màn hình e-ink do Waveshare cung cấp.
Để cho phép các chương trình truy cập trang tổng quan Ubidots, bạn phải thêm các mã thông báo và thiết bị hoặc tên biến riêng lẻ của mình (nếu bạn sử dụng các ký hiệu khác nhau). Tìm kiếm phần giống như phần được hiển thị trong hình trên (thay thế XXXXXXXX bằng mã thông báo của bạn).
Bạn có thể tìm thấy các hướng dẫn toàn diện về cách xây dựng trang tổng quan và cách tích hợp trang tổng quan vào một chương trình Python trực tiếp trên trang Ubidots (https://help.ubidots.com/en/) hoặc qua Google.
Bước 6: IOT Trang tổng quan
Trang tổng quan do Ubidots lưu trữ (xem https://ubidots.com) chứa một số khu vực được mô tả ngắn gọn bên dưới.
- Trình tự thời gian của tốc độ tải lên và tải xuống. Cứ sau nửa giờ, một giá trị mới được chèn vào biểu đồ.
- Quá trình thời gian của thời gian ping đo được. Cứ sau nửa giờ, một giá trị mới được chèn vào biểu đồ.
- Trình tự thời gian của tốc độ tải xuống trung bình. Giá trị trung bình trong 24 giờ được tính toán và ghi vào biểu đồ.
- Biểu diễn bảng tính của các giá trị đo lường hiện tại bao gồm cả dấu thời gian.
- Nút điều khiển từ xa để thiết lập lại modem qua Internet. Truy vấn xảy ra 3 phút một lần, tức là có thể mất một khoảng thời gian cho đến khi hành động được thực hiện.
- Ghi nhật ký các lần đặt lại cuối cùng bao gồm lý do đặt lại (kích hoạt từ xa, tắt hoặc mất điện áp, giảm xuống dưới băng thông tối thiểu)
Bạn có thể tìm thấy các hướng dẫn toàn diện về cách xây dựng trang tổng quan và cách tích hợp trang tổng quan vào một chương trình Python trực tiếp trên trang Ubidots (https://help.ubidots.com/en/) hoặc qua Google.