Spisu treści:

Monitor przepustowości: 7 kroków (ze zdjęciami)
Monitor przepustowości: 7 kroków (ze zdjęciami)

Wideo: Monitor przepustowości: 7 kroków (ze zdjęciami)

Wideo: Monitor przepustowości: 7 kroków (ze zdjęciami)
Wideo: Szybszy internet za wciśnięciem jednego przycisku 2024, Listopad
Anonim
Monitor przepustowości
Monitor przepustowości
Monitor przepustowości
Monitor przepustowości
Monitor przepustowości
Monitor przepustowości

Ponieważ często zadawałem sobie pytanie, jaką przepustowość obecnie zapewnia mój ISP (używam modemu LTE do połączenia z Internetem), pomyślałem o systemie monitorowania przepustowości. Ponieważ system powinien być kompaktowy i energooszczędny, wybrałem Raspberry Pi Zero jako centralny komponent. Raspberry jest połączone z modemem za pośrednictwem sieci WLAN, dzięki czemu można również wykryć problemy z siecią WLAN.

Kieszonkowe dzieci

  • Raspberry Pi Zero WH
  • Wyświetlacz e-ink Waveshare (moduł e-papieru 2,9 cala)
  • Przetwornica DC-DC (np. DEBO DCDC 20W)
  • LED RGB (wyjęty ze starego urządzenia)
  • Naciśnij przycisk
  • Przełącznik
  • Moduł przekaźnika (np. moduł przekaźnika dwukierunkowego moduł przekaźnika dwukierunkowego)
  • Złącze męskie + złącze żeńskie (oba pasują do rozmiaru wtyczki zasilania modemu)
  • Etui z nadrukiem 3D

Krok 1: Funkcje

Cechy
Cechy
Cechy
Cechy
Cechy
Cechy
  • Raspberry Pi Zero jest połączone przez WLAN, testuje prędkość wysyłania i pobierania oraz wykonuje pomiar pingu co pół godziny. Podstawą pomiarów jest wersja speedtest.net z linii poleceń.
  • Wynik pomiaru przepustowości i pingu jest wyświetlany na wyświetlaczu e-ink. Pokazywany jest również czas pomiaru.
  • Jeśli prędkość pobierania spadnie poniżej określonej wartości progowej, przekaźnik wyłącza i włącza modem na krótki czas. Modem jest w ten sposób resetowany bez jakiejkolwiek modyfikacji urządzenia (odcinane jest tylko zasilanie).
  • Dostępny jest przycisk z przodu urządzenia do ręcznego wyzwalania pomiaru przepustowości.
  • Zmierzone wartości są wyświetlane na pulpicie nawigacyjnym Ubidots (portal IOT). W przeglądzie można również zobaczyć historię czasową zmierzonych wartości i przyczyny ostatnich resetów.
  • W Portalu IOT można również znaleźć przycisk do zdalnego resetowania modemu.
  • Monitor przepustowości korzysta z zasilania modemu. Nie potrzeba dodatkowego zaopatrzenia. Przekaźnik przerywa przekazywanie zasilania do modemu - malina pozostaje włączona.

Krok 2: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie

Na pierwszym zdjęciu widać wewnętrzną konstrukcję monitora przepustowości:

Główne komponenty to:

    1. Naciśnij przycisk
    2. Wyświetlacz e-ink
    3. Raspberry Pi Zero
    4. Moduł przekaźnikowy
    5. RGB LED + rezystory (w zależności od używanej diody LED RGB)
    6. Przełącznik
    7. Konwerter DC-DC
    8. Złącze żeńskie

Drugie zdjęcie przedstawia schemat okablowania. Dodatni biegun napięcia zasilania podawany jest przez przełącznik do konwertera napięcia DC-DC (który zamienia napięcie zasilania routera 12V na 5V dla Raspberry) oraz poprzez przekaźnik (poprzez normalnie podłączony pin) z powrotem do złącze wyjściowe. Dzięki temu modem jest również zasilany, gdy monitor przepustowości jest wyłączony.

Pomiar szerokości pasma można uruchomić ręcznie za pomocą przycisku. Dioda LED RGB służy do wizualizacji różnych stanów pracy.

Połączenie między Raspberry Pi a wyświetlaczem e-ink nie jest pokazane na schemacie obwodu. Podłącz wyświetlacz zgodnie z tabelą i wyprowadzeniami powyżej.

Krok 3: Drukowanie 3D i budowanie pościgu

Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu
Drukowanie 3D i budowanie pościgu

Do obudowy potrzebne są następujące części (patrz rysunek powyżej):

    1. Dolna część
    2. Górna część
    3. z przodu
    4. plecy
    5. 4x mocowanie

Wszystkie części można drukować bez podpór. Możesz również znaleźć pliki i niektóre z moich innych projektów na Thingiverse:

Wyświetlacz można przymocować do panelu przedniego za pomocą uchwytów i taśmy dwustronnej. Przełącznik przyciskowy i złącze żeńskie są przykręcone do tylnego i tylnego panelu. Do połączenia dwóch połówek obudowy użyłem śrub 3x20mm. Tolerancje na rowkach na przednim i tylnym panelu są stosunkowo wąskie. Jeśli to konieczne, przednie i tylne panele należy przeszlifować na krawędzi (od wewnątrz, aby uniknąć zniszczenia powierzchni).

Krok 4: Konfiguracja Raspberry PI

Konfiguracja Raspberry PI
Konfiguracja Raspberry PI
Konfiguracja Raspberry PI
Konfiguracja Raspberry PI

Ten przewodnik konfiguracji opiera się na zestawieniu kilku instrukcji instalacji z różnych źródeł (producenci wyświetlaczy e-Ink, …). Dla mnie instrukcje doprowadziły do pożądanego rezultatu. Ponieważ nie jestem ekspertem od Linuksa, nie dokonano żadnych optymalizacji ani podobnych. Mam świadomość, że na pewno są lepsze i wydajniejsze rozwiązania.

Załóżmy, że masz już zainstalowany Raspbian na swoim Pi (jest wiele samouczków, jak zainstalować podstawowy system operacyjny) i masz podłączony wyświetlacz (przez miniHDMI), mysz i klawiaturę. Zakłada się również prawidłowo skonfigurowane połączenie WLAN z routerem lub Internetem. O ile nie zaznaczono inaczej, wszystkie procedury instalacyjne wykonywane są w terminalu.

Zainstaluj Pulpit zdalny (aby uzyskać dostęp do PI z komputera):

aktualizacja sudo apt-get

sudo apt-get

zainstaluj xrdp

możesz też pracować bez głowy przez ssh (patrz np.

Zmień hasło:

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

Zainstaluj test prędkości:

sudo

apt-get zainstaluj python-pip

sudo pip zainstaluj speedtest-cli

aby sprawdzić, czy instalacja się powiodła, uruchom Speedtest w terminalu:

speedtest-cli

jeśli wszystko się zgadza, powinieneś otrzymać coś takiego jak na pierwszym obrazku powyżej.

Zainstaluj okablowaniePI

sudo apt-get zainstaluj git-core

klon git git://git.drogon.net/wiringPi

okablowanie cdPi

./budować

(patrz także

Alternatywa:

sudo apt-get install wirepi

(patrz

Zainstaluj BCM2835

(patrz

Pobierz bcm2835-1.60.tar.gz (lub nowszą wersję, jeśli jest dostępna)

smoła zxvf bcm2835-1.60.tar.gz

cd bcm2835-1,60

./konfiguruj

robić

sudo sprawdź

sudo dokonać instalacji

Zainstaluj bibliotekę obrazowania Pythona

sudo apt-get install python-imaging

Alternatywa:

sudo apt-get zainstaluj python-pil

Włącz funkcję I2C.

Uruchom następujące polecenie, aby skonfigurować płytę Raspberry Pi:

sudo raspi-config

Wybierz Opcje interfejsu-> I2C -> tak, aby uruchomić sterownik rdzenia I2C. Następnie musisz również zmodyfikować plik konfiguracyjny. Uruchom następujące polecenie, aby otworzyć plik konfiguracyjny:

sudo nano /etc/moduły

Dodaj następujące dwie linie do pliku konfiguracyjnego

i2c-bcm2708

i2c-dev

Zobacz także

Włącz funkcję SPI

Uruchom następujące polecenie, aby skonfigurować płytę Raspberry Pi:

sudo raspi-config

Wybierz Opcje interfejsu-> SPI -> tak, aby uruchomić główny sterownik SPI.

Zainstaluj dodatkowe czcionki:

sudo apt-get install ttf-mscorefonts-installer

Pobierz i zainstaluj czcionki (Roboto + Droid)

gksudo

pcmanfm

Aby uruchomić menedżera plików z uprawnieniami roota i skopiować czcionki truetype do folderu /usr/share/fonts/truetype

Alternatywa:

Skopiuj czcionki do folderu Pobrane za pomocą WinSCP (ssh musi być włączony, aby korzystać z WinSCP)

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

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

Aby uzyskać dostęp do folderu czcionek, potrzebujesz uprawnień administratora. Może są lepsze sposoby na zrobienie tego (jak już wspomniałem, nie jestem ekspertem od Linuksa), ale oba sposoby działały dla mnie.

Pliki Pythona:

Użyj menedżera plików, aby utworzyć nowy folder „bandwidth_monitor”

Skopiuj wszystkie pliki do katalogu przepustowości_monitor

Uczyń pliki Pythona i skryptami wykonywalnymi

chmod +x *.py

chmod +x speedtest-cron.sh

Skonfiguruj crontab

crontab -e

Crontab służy do planowania realizacji programu m.in. test prędkości co 30 min. Dodaj następujące wiersze do twojego crontab (zobacz także drugi rysunek):

@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

Opis zaplanowanych zadań:

  • przy ponownym uruchomieniu komunikat o ponownym uruchomieniu jest zapisywany na pulpicie nawigacyjnym IOT
  • przy restarcie uruchamiany jest przycisk test_now_
  • co 30 minut wykonywany jest pomiar przepustowości
  • co 3 minuty sprawdzany jest stan przycisku zdalnego resetowania (na desce rozdzielczej IOT)
  • raz dziennie rozpoczyna się cykl odświeżania wyświetlacza.

Krótki opis programów znajduje się w sekcji oprogramowania.

Krok 5: Oprogramowanie

Oprogramowanie
Oprogramowanie

Oprogramowanie podzielone jest na kilka plików/programów:

przepustowości_monitor_0_4.py to główny program wywoływany przez Crontab co pół godziny. Wykonuje test przepustowości (poprzez wersję wiersza poleceń speedtest.net). Podczas testu dioda LED RGB świeci na niebiesko. Jeśli przepustowość przekracza wybrany próg, wartość jest wyświetlana na wyświetlaczu e-ink (wraz ze znacznikiem czasu) i eksportowana do pulpitu nawigacyjnego Ubidots. Jeśli szerokość pasma jest poniżej progu, dioda LED zmienia kolor na czerwony, a pomiar jest powtarzany po krótkim opóźnieniu. Po 3 negatywnych próbach przekaźnik zostaje załączony i tym samym zasilanie modemu zostaje przerwane. Kod resetowania (wartość=2) jest zapisywany w sekcji dziennika.

poll_killswitch.py odczytuje stan zmiennej logicznej na pulpicie nawigacyjnym. Jeśli killswitch_state ma wartość true, przekaźnik jest aktywowany, a zasilanie modemu zostaje przerwane. Podczas odpytywania wyłącznika awaryjnego dioda LED RGB zmienia kolor na zielony. Po zresetowaniu parametr killswitch_state ma wartość false i generowany jest wpis w sekcji dziennika pulpitu nawigacyjnego (wartość=1).

poll_test_now_button.py czeka na naciśnięcie przycisku na przednim panelu obudowy. Aktywując przycisk, pomiar przepustowości jest uruchamiany ręcznie. Po uruchomieniu programu (przy restarcie Raspberry Pi) dioda LED RGB miga na czerwono.

post_restart_message.py zapisuje kod resetowania (wartość=3) w sekcji dziennika pulpitu nawigacyjnego. Oznacza to, że monitor przepustowości został ponownie uruchomiony. Podczas startu programu dioda LED RGB miga na niebiesko.

test_LED.py i test_relay.py to proste skrypty, za pomocą których można przetestować sprzętową funkcję diody LED RGB i przekaźnika.

epdconfig.py i epd2in9.py to sterowniki urządzenia do wyświetlania e-ink dostarczane przez Waveshare.

Aby umożliwić programom dostęp do pulpitu nawigacyjnego Ubidots, musisz dodać swoje indywidualne tokeny oraz nazwy urządzeń lub zmiennych (jeśli używasz różnych notacji). Wyszukaj sekcję podobną do pokazanej na powyższym obrazku (zastąp XXXXXXXX swoim tokenem).

Wyczerpujące samouczki na temat budowania dashboardu i integrowania go z programem w Pythonie można znaleźć bezpośrednio na stronie Ubidots (https://help.ubidots.com/en/) lub przez Google.

Krok 6: Pulpit nawigacyjny IOT

Pulpit nawigacyjny IOT
Pulpit nawigacyjny IOT

Pulpit nawigacyjny hostowany przez Ubidots (patrz https://ubidots.com) zawiera kilka obszarów, które zostały krótko opisane poniżej.

    1. Sekwencja czasowa szybkości wysyłania i pobierania. Co pół godziny do wykresu wstawiana jest nowa wartość.
    2. Przebieg czasu zmierzonego czasu ping. Co pół godziny na wykresie wstawiana jest nowa wartość.
    3. Sekwencja czasowa średniej prędkości pobierania. Średnia wartość z 24 godzin jest obliczana i zapisywana na wykresie.
    4. Arkusz kalkulacyjny przedstawiający bieżące wartości pomiarowe wraz ze znacznikiem czasu.
    5. Przycisk zdalnego sterowania do resetowania modemu przez Internet. Zapytanie pojawia się co 3 minuty, tzn. wykonanie akcji może zająć trochę czasu.
    6. Rejestrowanie ostatnich resetów z podaniem przyczyny resetu (zdalne wyzwolenie, wyłączenie lub zanik napięcia, spadek poniżej minimalnej przepustowości)

Wyczerpujące samouczki na temat budowania dashboardu i integrowania go z programem w Pythonie można znaleźć bezpośrednio na stronie Ubidots (https://help.ubidots.com/en/) lub przez Google.

Zalecana: