Bant Genişliği Monitörü: 7 Adım (Resimlerle)
Bant Genişliği Monitörü: 7 Adım (Resimlerle)
Anonim
Bant Genişliği Monitörü
Bant Genişliği Monitörü
Bant Genişliği Monitörü
Bant Genişliği Monitörü
Bant Genişliği Monitörü
Bant Genişliği Monitörü

ISS'm tarafından şu anda hangi bant genişliğinin sağlandığını sık sık kendime sorduğum için (İnternet bağlantısı için bir LTE modem kullanıyorum), bir bant genişliği izleme sistemi düşündüm. Sistemin kompakt olması ve güç tasarrufu sağlaması gerektiğinden, ana bileşen olarak bir Raspberry Pi Zero seçtim. Raspberry, modeme WLAN üzerinden bağlı olduğundan, WLAN sorunları da tespit edilebilir.

Gereçler

  • Ahududu Pi Sıfır WH
  • Waveshare e-mürekkep ekranı (2,9 inç-e-kağıt modülü)
  • DC-DC dönüştürücü (ör. DEBO DCDC 20W)
  • RGB LED (eski bir cihazdan alınmış)
  • Butona basınız
  • Değiştirmek
  • Röle modülü (örn. 2 Yollu Röle modülü2 Yollu Röle modülü)
  • Erkek konnektör + Dişi konnektör (her ikisi de modem güç kaynağı fişinizin boyutuna uygundur)
  • 3D baskılı kılıf

Adım 1: Özellikler

Özellikleri
Özellikleri
Özellikleri
Özellikleri
Özellikleri
Özellikleri
  • Raspberry Pi Zero, WLAN üzerinden bağlanır, yükleme ve indirme hızını test eder ve her yarım saatte bir ping ölçümü gerçekleştirir. Ölçümler için temel olarak speedtest.net'in bir komut satırı sürümü kullanılır.
  • Bant genişliği ve ping ölçümünün sonucu bir e-mürekkep ekranında gösterilir. Ölçüm zamanı da gösterilir.
  • İndirme hızı tanımlanmış bir eşik değerinin altına düşerse, bir röle modemi kısa bir süreliğine kapatıp açar. Böylece modem, cihazda herhangi bir değişiklik yapılmadan sıfırlanır (yalnızca güç kaynağı kesintiye uğrar).
  • Bant genişliği ölçümünü manuel olarak tetiklemek için cihazın ön tarafında bir düğme mevcuttur.
  • Ölçülen değerler bir Ubidots Dashboard'da (IOT Portalı) görüntülenir. Genel bakışta, ölçülen değerlerin zaman geçmişini ve son sıfırlamaların nedenlerini de görebilirsiniz.
  • IOT Portalında, modemi uzaktan sıfırlamak için bir düğme de bulabilirsiniz.
  • Bant genişliği monitörü modemin güç kaynağını kullanır. Ek tedarik gerekmez. Röle, güç kaynağının modeme iletilmesini keser - ahududu açık kalır.

Adım 2: Kablolama

kablolama
kablolama
kablolama
kablolama
kablolama
kablolama
kablolama
kablolama

İlk resimde bant genişliği monitörünün iç tasarımını görebilirsiniz:

Başlıca bileşenler şunlardır:

    1. Butona basınız
    2. E-mürekkep Ekranı
    3. Ahududu Pi Sıfır
    4. Röle Modülü
    5. RGB LED + Dirençler (kullandığınız RGB LED'e bağlı olarak)
    6. Değiştirmek
    7. DC / DC çevirici
    8. Kadın konektör

İkinci resim kablolama şemasını göstermektedir. Besleme voltajının pozitif kutbu, anahtar aracılığıyla DC-DC voltaj dönüştürücüye (yönlendiricinin 12V besleme voltajını Raspberry için 5V'a dönüştürür) ve röle aracılığıyla (normal olarak bağlı pim aracılığıyla) geri beslenir. çıkış konektörü. Böylece modem, bant genişliği monitörü kapatıldığında da güç ile beslenir.

Bant genişliği ölçümü bir düğme aracılığıyla manuel olarak başlatılabilir. Çeşitli çalışma durumlarını görselleştirmek için bir RGB LED kullanılır.

Raspberry Pi ile e-ink ekran arasındaki bağlantı devre şemasında gösterilmemiştir. Ekranı yukarıdaki tabloya ve pin çıkışına göre bağlayın.

Adım 3: 3D Baskı ve Chase'i İnşa Etme

3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme
3D Baskı ve Chase'i İnşa Etme

Kasa için aşağıdaki parçalar gereklidir (yukarıdaki resme bakın):

    1. alt parçası
    2. üst parça
    3. ön
    4. geri
    5. 4x montaj

Tüm parçalar desteksiz olarak basılabilir. Dosyaları ve diğer tasarımlarımdan bazılarını Thingiverse'de de bulabilirsiniz:

Ekran, bağlantı parçaları ve çift taraflı bant ile ön panele takılabilir. Düğme anahtarı ve dişi konektör arka ve arka panele vidalanmıştır. Muhafazanın iki yarısını birleştirmek için 3x20mm vida kullandım. Ön ve arka paneller için oluklar üzerindeki toleranslar nispeten dardır. Gerekirse, ön ve arka paneller kenarlarından zımparalanmalıdır (yüzeye zarar vermemek için iç kısımda).

Adım 4: Raspberry PI'yi Ayarlama

Raspberry PI'yi Ayarlama
Raspberry PI'yi Ayarlama
Raspberry PI'yi Ayarlama
Raspberry PI'yi Ayarlama

Bu kurulum kılavuzu, farklı kaynaklardan (e-Mürekkep ekran üreticileri, …) çeşitli kurulum talimatlarının derlenmesine dayanmaktadır. Benim için talimatlar istenen sonuca yol açtı. Linux uzmanı olmadığım için herhangi bir optimizasyon veya benzeri yapılmadı. Kesinlikle daha iyi ve daha verimli çözümler olduğunun farkındayım.

Pi'nizde Raspbian kurulu olduğunu varsayalım (temel işletim sisteminin nasıl kurulacağına dair birçok eğitim var) ve bir ekranınız (miniHDMI aracılığıyla), fareniz ve klavyeniz bağlı. Yönlendiriciye veya İnternete doğru şekilde kurulmuş bir WLAN bağlantısının da olduğu varsayılır. Aksi belirtilmedikçe tüm kurulum işlemleri terminalde gerçekleştirilir.

Uzak masaüstünü kurun (bilgisayarınızdan PI'ye erişmek için):

sudo apt-get güncellemesi

sudo apt-get

xrdp'yi yükle

veya ssh aracılığıyla başsız da çalışabilirsiniz (bkz. örneğin

Şifre değiştir:

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

Speedtest'i yükleyin:

sudo

apt-get install python-pip

sudo pip install speedtest-cli

kurulumun başarılı olup olmadığını test etmek için terminalde Speedtest'i çalıştırın:

en hızlı-cli

her şey doğruysa, yukarıdaki ilk resimdeki gibi bir şey almalısınız.

KablolamaPI'yi kurun

sudo apt-get install git-core

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

cd kablolamaPi

./yapı

(ayrıca bkz.

alternatif:

sudo apt-get install kablolama

(bkz.

BCM2835'i yükleyin

(bkz.

bcm2835-1.60.tar.gz'yi (veya varsa daha yeni bir sürümü) indirin

tar zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./yapılandır

Yapmak

sudo kontrol yap

sudo kurulum yap

Python görüntüleme kitaplığını yükleyin

sudo apt-get install python-görüntüleme

alternatif:

sudo apt-get install python-pil

I2C işlevini etkinleştirin.

Raspberry Pi kartınızı yapılandırmak için aşağıdaki komutu çalıştırın:

sudo raspi yapılandırması

I2C çekirdek sürücüsünü başlatmak için Arayüz Seçenekleri-> I2C -> evet'i seçin. Ardından, yapılandırma dosyasını da değiştirmeniz gerekir. Yapılandırma dosyasını açmak için aşağıdaki komutu çalıştırın:

sudo nano /etc/modüller

Yapılandırma dosyasına aşağıdaki iki satırı ekleyin

i2c-bcm2708

i2c-dev

Ayrıca bkz.

SPI işlevini etkinleştirin

Raspberry Pi kartınızı yapılandırmak için aşağıdaki komutu çalıştırın:

sudo raspi yapılandırması

SPI çekirdek sürücüsünü başlatmak için Arayüz Seçenekleri-> SPI -> evet'i seçin.

Ek yazı tiplerini yükleyin:

sudo apt-get install ttf-mscorefonts-installer

Yazı Tiplerini indirin ve yükleyin (Roboto + Droid)

gksudo

pcmanfm

Dosya yöneticisini kök ayrıcalıklarıyla başlatmak ve truetype yazı tiplerini /usr/share/fonts/truetype klasörüne kopyalamak için

alternatif:

Yazı tiplerini WinSCP ile İndirilenler klasörüne kopyalayın (WinSCP'yi kullanmak için ssh etkinleştirilmelidir)

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

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

Yazı tipi klasörüne erişmek için kök ayrıcalıklarına ihtiyacınız var. Belki bunu yapmanın daha iyi yolları vardır (daha önce de belirtildiği gibi ben bir Linux uzmanı değilim) ama her iki yol da benim için çalıştı.

Python dosyaları:

Yeni bir "bandwidth_monitor" klasörü oluşturmak için dosya yöneticisini kullanın

Tüm dosyaları bant genişliği_monitor dizinine kopyalayın

Python dosyalarını ve komut dosyasını yürütülebilir yapın

chmod +x *.py

chmod +x speedtest-cron.sh

crontab'ı yapılandır

crontab -e

Crontab, programın yürütülmesini planlamak için kullanılır; her 30 dakikada bir hız testi yapın. Aşağıdaki satırları crontab'ınıza ekleyin (ayrıca ikinci şekle bakın):

@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

Zamanlanmış görevlerin açıklaması:

  • yeniden başlatıldığında, yeniden başlatma mesajı IOT panosuna yazılır
  • yeniden başlatıldığında anket test_now_button başlatılır
  • her 30 dakikada bir bant genişliği ölçümü yapılır
  • her 3 dakikada bir uzaktan sıfırlama düğmesinin durumu (IOT panosunda) kontrol edilir
  • günde bir kez bir ekran yenileme döngüsü başlatılır.

Programların kısa bir açıklaması için yazılım bölümüne bakın.

Adım 5: Yazılım

Yazılım
Yazılım

Yazılım birkaç dosyaya / programa bölünmüştür:

Bant genişliği_monitor_0_4.py, Crontab tarafından her yarım saatte bir çağrılan ana programdır. Bir bant genişliği testi gerçekleştirir (speedtest.net'in komut satırı sürümü aracılığıyla). Test sırasında RGB LED'i mavidir. Bant genişliği seçilen eşiğin üzerindeyse, değer e-mürekkep ekranında (bir zaman damgasıyla birlikte) gösterilir ve Ubidots panosuna aktarılır. Bant genişliği eşiğin altındaysa LED kırmızıya döner ve kısa bir gecikmeden sonra ölçüm tekrarlanır. 3 olumsuz denemeden sonra röle devreye girer ve böylece modemin beslemesi kesilir. Log bölümüne reset kodu (değer=2) yazılır.

poll_killswitch.py, gösterge tablosundaki bir boole değişkeninin durumunu okur. Killswitch_state true ise röle etkinleştirilir ve modemin güç kaynağı kesilir. Killswitch'in yoklanması sırasında RGB LED'i yeşile döner. Sıfırlamadan sonra killswitch_state false olarak ayarlanır ve gösterge panosunun günlük bölümünde bir giriş oluşturulur (değer=1).

poll_test_now_button.py kasanın ön panelindeki butona basılmasını bekliyor. Düğmeyi etkinleştirerek, manuel olarak bir bant genişliği ölçümü tetiklenir. Program başlatıldığında (Raspberry Pi yeniden başlatıldığında) RGB LED'i kırmızı renkte yanıp sönüyor.

post_restart_message.py, gösterge tablosunun günlük bölümüne sıfırlama kodunu (değer=3) yazar. Bu, bant genişliği izleyicisinin yeniden başlatıldığını gösterir. Program başlatılırken RGB LED'i mavi renkte yanıp söner.

test_LED.py ve test_relay.py, RGB LED ve rölenin donanım işlevini test etmek için kullanılabilen basit komut dosyalarıdır.

epdconfig.py ve epd2in9.py, Waveshare tarafından sağlanan e-mürekkep ekranı için aygıt sürücüsüdür.

Programların Ubidots panosuna erişmesine izin vermek için, bireysel belirteçlerinizi ve cihaz veya değişken adlarınızı (farklı gösterimler kullanıyorsanız) eklemeniz gerekir. Yukarıdaki resimde gösterilene benzer bir bölüm arayın (XXXXXXXX'i jetonunuzla değiştirin).

Kontrol panelinin nasıl oluşturulacağı ve kontrol panelinin bir Python programına nasıl entegre edileceğine dair kapsamlı eğitimler doğrudan Ubidots sayfasında (https://help.ubidots.com/en/) veya Google üzerinden bulunabilir.

6. Adım: IOT Panosu

IOT Panosu
IOT Panosu

Ubidots tarafından barındırılan kontrol paneli (bkz. https://ubidots.com) aşağıda kısaca açıklanan birkaç alan içerir.

    1. Yükleme ve indirme hızının zaman sırası. Her yarım saatte bir diyagrama yeni bir değer eklenir.
    2. Ölçülen ping süresinin zaman süreci. Her yarım saatte bir diyagrama yeni bir değer eklenir.
    3. Ortalama indirme hızının zaman dizisi. 24 saatin ortalama değeri hesaplanır ve diyagrama yazılır.
    4. Zaman damgası dahil mevcut ölçüm değerlerinin elektronik tablo gösterimi.
    5. İnternet üzerinden modemi sıfırlamak için uzaktan kumanda düğmesi. Sorgu her 3 dakikada bir gerçekleşir, yani eylemin gerçekleştirilmesi biraz zaman alabilir.
    6. Sıfırlama nedeni de dahil olmak üzere son sıfırlamaların kaydı (uzaktan tetikleme, kapatma veya voltaj kaybı, minimum bant genişliğinin altına düşme)

Kontrol panelinin nasıl oluşturulacağı ve kontrol panelinin bir Python programına nasıl entegre edileceğine dair kapsamlı eğitimler doğrudan Ubidots sayfasında (https://help.ubidots.com/en/) veya Google üzerinden bulunabilir.