Mündəricat:

Bant genişliyi monitoru: 7 addım (şəkillərlə birlikdə)
Bant genişliyi monitoru: 7 addım (şəkillərlə birlikdə)

Video: Bant genişliyi monitoru: 7 addım (şəkillərlə birlikdə)

Video: Bant genişliyi monitoru: 7 addım (şəkillərlə birlikdə)
Video: Bölüm 3. Dərs 10. Xülasə 2024, Dekabr
Anonim
Bant genişliyi monitoru
Bant genişliyi monitoru
Bant genişliyi monitoru
Bant genişliyi monitoru
Bant genişliyi monitoru
Bant genişliyi monitoru

İnternet provayderim tərəfindən hazırda hansı bant genişliyi təmin edildiyini özümə tez -tez soruşduqda (İnternet bağlantısı üçün LTE modemdən istifadə edirəm), bir bant genişliyi izləmə sistemi düşündüm. Sistem yığcam və enerjiyə qənaət etməli olduğundan mərkəzi komponent olaraq Raspberry Pi Zero seçdim. Moruq WLAN vasitəsi ilə modeme qoşulur, buna görə də WLAN problemləri də aşkar edilə bilər.

Təchizat

  • Moruq Pi Zero WH
  • Waveshare e-mürəkkəb ekranı (2.9 düym e-kağız modulu)
  • DC-DC çeviricisi (məsələn, DEBO DCDC 20W)
  • RGB LED (köhnə bir cihazdan çıxarıldı)
  • Düymə
  • Keçid edin
  • Relais modulu (məsələn, 2 Yollu Relay modulu2 Way Relay modulu)
  • Kişi konnektoru + Dişi konnektoru (hər ikisi modeminizin enerji təchizatı fişinin ölçüsünə uyğundur)
  • 3D çap qutusu

Addım 1: Xüsusiyyətlər

Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
  • Raspberry Pi Zero WLAN vasitəsi ilə qoşulur, yükləmə və yükləmə sürətini yoxlayır və hər yarım saatda bir ping ölçməsini həyata keçirir. Ölçmələr üçün əsas olaraq speedtest.net -in bir əmr satırı versiyası istifadə olunur.
  • Bant genişliyi və ping ölçməsinin nəticəsi e-mürəkkəb ekranda göstərilir. Ölçmə vaxtı da göstərilir.
  • Yükləmə sürəti müəyyən bir eşik dəyərinin altına düşərsə, bir röle modemi qısa müddətə söndürür və yandırır. Beləliklə modem cihazda heç bir dəyişiklik etmədən sıfırlanır (yalnız enerji təchizatı kəsilir).
  • Cihazın ön tərəfində bir bant genişliyi ölçməsini əl ilə işə salmaq üçün bir düymə mövcuddur.
  • Ölçülmüş dəyərlər Ubidots Tablosuna (IOT Portal) göstərilir. Baxışda, ölçülmüş dəyərlərin vaxt tarixini və son sıfırlamaların səbəblərini də görə bilərsiniz.
  • IOT Portalında modemi uzaqdan sıfırlamaq üçün bir düymə də tapa bilərsiniz.
  • Bant genişliyi monitoru modemin enerji təchizatından istifadə edir. Əlavə təchizata ehtiyac yoxdur. Releis enerji təchizatının modeme yönləndirilməsini kəsir - moruq açıq qalır.

Addım 2: Kabel çəkmə

Kablolama
Kablolama
Kablolama
Kablolama
Kablolama
Kablolama
Kablolama
Kablolama

Birinci şəkildə bant genişliyi monitorunun daxili dizaynını görə bilərsiniz:

Əsas komponentlər bunlardır:

    1. Düyməni basın
    2. E-mürəkkəb ekran
    3. Moruq Pi Sıfır
    4. Relay Modulu
    5. RGB LED + Rezistorlar (istifadə etdiyiniz RGB LED -dən asılı olaraq)
    6. Keçid edin
    7. DC-DC çeviricisi
    8. Qadın bağlayıcı

İkinci şəkil kabellərin sxemini göstərir. Təchizat gərginliyinin müsbət qütbü, DC-DC gərginlik çeviricisinə (marşrutlaşdırıcının 12V təchizatı gərginliyini 5V-ə çevirən) və rölin (normal bağlı pin vasitəsilə) geri çıxış konnektoru. Beləliklə, bant genişliyi monitoru söndürüldükdə modem də enerji ilə təmin olunur.

Bant genişliyinin ölçülməsi əl ilə bir düymə ilə başlaya bilər. Bir RGB LED, müxtəlif əməliyyat vəziyyətlərini görselleştirmek üçün istifadə olunur.

Raspberry Pi ilə e-ink display arasındakı əlaqə dövrə diaqramında göstərilməyib. Ekranı cədvələ və yuxarıdakı çıxışa uyğun olaraq bağlayın.

Addım 3: 3D çap və təqibin qurulması

3D çap və təqibin qurulması
3D çap və təqibin qurulması
3D çap və təqibin qurulması
3D çap və təqibin qurulması
3D çap və təqibin qurulması
3D çap və təqibin qurulması
3D çap və təqibin qurulması
3D çap və təqibin qurulması

Dava üçün aşağıdakı hissələr lazımdır (yuxarıdakı şəklə baxın):

    1. aşağı hissə
    2. yuxarı hissə
    3. ön
    4. geri
    5. 4x montaj

Bütün hissələr dəstək olmadan çap edilə bilər. Faylları və digər dizaynlarımı Thingiverse -də tapa bilərsiniz:

Ekran ön panelə montaj və iki tərəfli lent ilə bağlana bilər. Düymə açarı və qadın konnektoru arxa və arxa panelə vidalanmışdır. Korpusun iki yarısını birləşdirmək üçün 3x20 mm vintlərdən istifadə etdim. Ön və arxa panellər üçün yivlərdəki toleranslar nisbətən sıxdır. Gerekirse, ön və arxa panellər kənarında zımpara edilməlidir (səthi məhv etməmək üçün içəridən).

Addım 4: Raspberry PI qurmaq

Raspberry PI qurmaq
Raspberry PI qurmaq
Raspberry PI qurmaq
Raspberry PI qurmaq

Bu quraşdırma təlimatı, müxtəlif mənbələrdən (e-Ink ekran istehsalçıları,…) bir neçə quraşdırma təlimatının tərtib edilməsinə əsaslanır. Mənim üçün təlimatlar istənilən nəticəyə gətirib çıxardı. Linux mütəxəssisi olmadığım üçün heç bir optimallaşdırma və ya bənzəri edilməmişdir. Şübhəsiz ki, daha yaxşı və daha təsirli həllər olduğunu bilirəm.

Güman edək ki, artıq Pi -də Raspbian quraşdırılıb (əsas əməliyyat sisteminin necə qurulacağına dair bir çox dərslər var) və ekranınız (miniHDMI vasitəsilə), siçan və klaviatura bağlıdır. Routerə və ya İnternetə düzgün qurulmuş WLAN bağlantısı da qəbul edilir. Başqa cür göstərilməyibsə, bütün quraşdırma prosedurları terminalda aparılır.

Uzaq masaüstünü quraşdırın (kompüterdən PI -ə daxil olmaq üçün):

sudo apt-get yeniləməsi

sudo apt-get

xrdp quraşdırın

ya da ssh vasitəsi ilə başsız işləyə bilərsiniz (bax:

Şifrəni dəyişdirin:

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

Sürət testini quraşdırın:

sudo

apt-get python-pip quraşdırın

sudo pip installt speedtest-cli

Quraşdırmanın müvəffəqiyyətli olub olmadığını yoxlamaq üçün terminalda Speedtest işləyin:

ən sürətli-cli

hər şey düzdürsə, yuxarıdakı ilk şəkildəki kimi bir şey almalısınız.

WiringPI quraşdırın

sudo apt-get git-core quraşdırın

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

cd wiringPi

./ tikmək

(həmçinin bax

Alternativ:

sudo apt-get wiringpi quraşdırın

(bax

BCM2835 quraşdırın

(bax

Bcm2835-1.60.tar.gz yükləyin (və ya varsa daha yeni bir versiya)

tar zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./ konfiqurasiya edin

etmək

sudo çek edin

sudo qurun

Python görüntü kitabxanasını quraşdırın

sudo apt-get python görüntüsünü quraşdırın

Alternativ:

sudo apt-get python-pil quraşdırın

I2C funksiyasını aktivləşdirin.

Raspberry Pi lövhənizi konfiqurasiya etmək üçün aşağıdakı əmri işlədin:

sudo raspi-config

I2C əsas sürücüsünü işə salmaq üçün Interface Options-> I2C -> yes seçin. Sonra konfiqurasiya faylını da dəyişdirməlisiniz. Konfiqurasiya faylını açmaq üçün aşağıdakı əmri işlədin:

sudo nano /etc /modulları

Konfiqurasiya faylına aşağıdakı iki sətri əlavə edin

i2c-bcm2708

i2c-dev

Həmçinin baxın

SPI funksiyasını aktiv edin

Raspberry Pi lövhənizi konfiqurasiya etmək üçün aşağıdakı əmri işlədin:

sudo raspi-config

SPI əsas sürücüsünü işə salmaq üçün Interface Options-> SPI -> yes seçin.

Əlavə şriftlər quraşdırın:

sudo apt-get ttf-mscorefonts-installer qurun

Şriftləri yükləyin və quraşdırın (Roboto + Droid)

gksudo

pcmanfm

Fayl menecerini kök imtiyazları ilə başlamaq və truetype şriftlərini qovluğa/usr/share/fonts/truetype -a kopyalamaq üçün

Alternativ:

Şriftləri WinSCP ilə Yükləmələr qovluğuna kopyalayın (WinSCP istifadə etmək üçün ssh aktiv olmalıdır)

sudo cp -r/home/pi/Yükləmələr/droid/usr/share/fontlar/truetype

sudo cp -r/home/pi/Yükləmələr/roboto/usr/share/fontlar/truetype

Şrift qovluğuna daxil olmaq üçün kök imtiyazlarına ehtiyacınız var. Bəlkə də bunu etmək üçün daha yaxşı yollar var (yuxarıda qeyd edildiyi kimi mən Linux mütəxəssisi deyiləm), amma hər iki yol mənim üçün işləmişdir.

Python faylları:

Yeni bir "bandwidth_monitor" qovluğu yaratmaq üçün filemangerdən istifadə edin.

Bütün faylları bandwidth_monitor qovluğuna kopyalayın

Python fayllarını və skriptini icra edilə bilən hala gətirin

chmod +x *.py

chmod +x speedtest-cron.sh

Crontab -ı konfiqurasiya edin

crontab -e

Crontab proqramın icrasını planlaşdırmaq üçün istifadə olunur. hər 30 dəqiqədə ən sürətli. Crontab -a aşağıdakı sətirləri əlavə edin (həmçinin ikinci rəqəmə baxın):

@reboot/usr/bin/python /home/pi/bandwidth_monitor/post_restart_message.py &

@reboot yuxu 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

Planlaşdırılan vəzifələrin təsviri:

  • yenidən başladıqda yenidən başlatma mesajı IOT tablosuna yazılır
  • yenidən başladıqda test_now_button başlayır
  • hər 30 dəqiqədə bir bant genişliyi ölçümü aparılır
  • hər 3 dəqiqədə uzaqdan sıfırlama düyməsinin vəziyyəti (IOT tablosunda) yoxlanılır
  • gündə bir dəfə bir ekran yeniləmə dövrü başlayır.

Proqramların qısa təsviri üçün proqram bölməsinə baxın.

Addım 5: Proqram təminatı

Proqram təminatı
Proqram təminatı

Proqram bir neçə fayl / proqrama bölünür:

bandwidth_monitor_0_4.py, Crontab tərəfindən hər yarım saatda çağırılan əsas proqramdır. Bant genişliyi testini həyata keçirir (speedtest.net -in komanda xətti versiyası vasitəsilə). Test zamanı RGB LED mavi olur. Bant genişliyi seçilmiş həddən yuxarıdırsa, dəyər e-mürəkkəb ekranda (vaxt damgası ilə birlikdə) göstərilir və Ubidots tablosuna ixrac olunur. Bant genişliyi eşikin altındadırsa, LED qırmızıya çevrilir və qısa bir gecikmədən sonra ölçmə təkrarlanır. 3 mənfi cəhddən sonra röle işə düşür və beləliklə modemin enerji təchizatı kəsilir. Sıfırlama kodu (dəyər = 2) qeyd bölməsinə yazılır.

poll_killswitch.py, tablosundakı boolean dəyişənin vəziyyətini oxuyur. Killswitch_state doğru olarsa, relay aktivləşdirilir və modemin enerji təchizatı kəsilir. RGB LED, öldürücü açar seçkisi zamanı yaşıl rəngə çevrilir. Sıfırlamadan sonra killswitch_state yanlış olaraq təyin olunur və tablosunun qeyd bölməsində bir giriş yaradılır (dəyər = 1).

poll_test_now_button.py, işin ön panelindəki düymənin basılmasını gözləyir. Düyməni aktivləşdirməklə bir bant genişliyi ölçülməsi əl ilə tetiklenir. Proqram başladıqda (Raspberry Pi yenidən başladıqda) RGB LED qırmızı yanıb -sönür.

post_restart_message.py, sıfırlama kodunu (dəyər = 3) tablosunun qeyd bölməsinə yazır. Bu, bant genişliyi monitorunun yenidən başladığını göstərir. Proqram başladıqda RGB LED mavi yanıb -sönür.

test_LED.py və test_relay.py, RGB LED -in və rölenin aparat funksiyasını yoxlamaq üçün istifadə oluna bilən sadə skriptlərdir.

epdconfig.py və epd2in9.py, Waveshare tərəfindən təmin edilən e-mürəkkəb ekran üçün cihaz sürücüsüdür.

Proqramların Ubidots tablosuna daxil olmasına icazə vermək üçün fərdi ayələrinizi və cihazınızı və ya dəyişən adlarınızı (fərqli qeydlərdən istifadə edirsinizsə) əlavə etməlisiniz. Yuxarıdakı şəkildə göstərildiyi kimi bir bölmə axtarın (XXXXXXXX -ı işarənizlə əvəz edin).

Tablosunun necə qurulacağına və tablonun Python proqramına necə inteqrasiya olunacağına dair hərtərəfli dərsləri birbaşa Ubidots səhifəsində (https://help.ubidots.com/en/) və ya Google vasitəsilə tapa bilərsiniz.

Addım 6: IOT Tablosu

IOT Tablosu
IOT Tablosu

Ubidots tərəfindən idarə olunan tablosunda (bax https://ubidots.com) aşağıda qısaca təsvir olunan bir neçə sahə var.

    1. Yükləmə və yükləmə sürətinin ardıcıllığı. Hər yarım saatda diaqrama yeni bir dəyər daxil edilir.
    2. Ölçülən ping vaxtının müddəti. Hər yarım saatda diaqrama yeni bir dəyər daxil edilir.
    3. Orta yükləmə sürətinin vaxt ardıcıllığı. 24 saat ərzində ortalama dəyər hesablanır və diaqrama yazılır.
    4. Vaxt möhürü daxil olmaqla cari ölçmə dəyərlərinin elektron tablo təqdimatı.
    5. İnternet vasitəsilə modemi yenidən qurmaq üçün uzaqdan idarəetmə düyməsi. Sorğu hər 3 dəqiqədən bir baş verir, yəni əməliyyatın yerinə yetirilməsi bir müddət çəkə bilər.
    6. Sıfırlama səbəbi də daxil olmaqla son sıfırlamaların qeydiyyatı (uzaqdan tetikleme, söndürmə və ya gərginliyin itməsi, minimum bant genişliyinin altına düşmə)

Tablosunun necə qurulacağına və tablonun Python proqramına necə inteqrasiya olunacağına dair hərtərəfli dərsləri birbaşa Ubidots səhifəsində (https://help.ubidots.com/en/) və ya Google vasitəsilə tapa bilərsiniz.

Tövsiyə: