Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Funkcje
- Krok 2: Okablowanie
- Krok 3: Drukowanie 3D i budowanie pościgu
- Krok 4: Konfiguracja Raspberry PI
- Krok 5: Oprogramowanie
- Krok 6: Pulpit nawigacyjny IOT
- Krok 7: Wprowadzenie podstawowych funkcji
Wideo: Monitor przepustowości: 7 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
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
- 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
Na pierwszym zdjęciu widać wewnętrzną konstrukcję monitora przepustowości:
Główne komponenty to:
- Naciśnij przycisk
- Wyświetlacz e-ink
- Raspberry Pi Zero
- Moduł przekaźnikowy
- RGB LED + rezystory (w zależności od używanej diody LED RGB)
- Przełącznik
- Konwerter DC-DC
- 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
Do obudowy potrzebne są następujące części (patrz rysunek powyżej):
- Dolna część
- Górna część
- z przodu
- plecy
- 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
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 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 hostowany przez Ubidots (patrz https://ubidots.com) zawiera kilka obszarów, które zostały krótko opisane poniżej.
- Sekwencja czasowa szybkości wysyłania i pobierania. Co pół godziny do wykresu wstawiana jest nowa wartość.
- Przebieg czasu zmierzonego czasu ping. Co pół godziny na wykresie wstawiana jest nowa wartość.
- Sekwencja czasowa średniej prędkości pobierania. Średnia wartość z 24 godzin jest obliczana i zapisywana na wykresie.
- Arkusz kalkulacyjny przedstawiający bieżące wartości pomiarowe wraz ze znacznikiem czasu.
- Przycisk zdalnego sterowania do resetowania modemu przez Internet. Zapytanie pojawia się co 3 minuty, tzn. wykonanie akcji może zająć trochę czasu.
- 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:
Monitor temperatury basenu MQTT: 7 kroków (ze zdjęciami)
Monitor temperatury basenu MQTT: Ten projekt jest towarzyszem moich innych projektów automatyki domowej Smart Data-Logging Geyser Controller oraz Multi-purpose-Room-Lighting and Appliance Controller. Jest to monitor montowany przy basenie, który mierzy temperaturę wody w basenie, otaczające powietrze
Monitor zbiornika oleju WiFi: 6 kroków (ze zdjęciami)
Monitor zbiornika oleju WiFi: Istnieje kilka sposobów sprawdzenia, ile paliwa pozostało w zbiorniku oleju opałowego. Najprostszym sposobem jest użycie miarki, bardzo dokładnej, ale niezbyt zabawnej w mroźny zimowy dzień. Niektóre zbiorniki są wyposażone w rurkę wziernikową, która ponownie daje bezpośrednie wskazanie
Inteligentny monitor roślin wewnętrznych – dowiedz się, kiedy Twoja roślina potrzebuje podlewania: 8 kroków (ze zdjęciami)
Inteligentny monitor roślin doniczkowych - wiedz, kiedy twoja roślina potrzebuje podlewania: kilka miesięcy temu zrobiłem kij do monitorowania wilgotności gleby, który jest zasilany bateryjnie i można go wbić w glebę w doniczce rośliny doniczkowej, aby uzyskać przydatne informacje o glebie poziom nawilżenia i migające diody LED informujące, kiedy w
Monitor karmnika dla ptaków V2.0: 12 kroków (ze zdjęciami)
Bird Feeder Monitor V2.0: Jest to projekt monitorowania, fotografowania i rejestrowania liczby i czasu spędzanego przez ptaki odwiedzające nasz karmnik. W tym projekcie użyto wielu Raspberry Pi (RPi). Jeden był używany jako pojemnościowy czujnik dotykowy, Adafruit CAP1188, do wykrywania, rejestrowania
GranCare: kieszonkowy monitor zdrowia!: 8 kroków (ze zdjęciami)
GranCare: Kieszonkowy monitor zdrowia!: Więc zacznę, mam babcię. Jest trochę stara, ale super sprawna i zdrowa. Niedawno byliśmy u lekarza na comiesięczne badanie kontrolne i lekarz poradził jej, aby codziennie spacerowała przez co najmniej pół godziny, aby zachować zdrowe stawy. Potrzebujemy