Πίνακας περιεχομένων:

Παρακολούθηση εύρους ζώνης: 7 βήματα (με εικόνες)
Παρακολούθηση εύρους ζώνης: 7 βήματα (με εικόνες)

Βίντεο: Παρακολούθηση εύρους ζώνης: 7 βήματα (με εικόνες)

Βίντεο: Παρακολούθηση εύρους ζώνης: 7 βήματα (με εικόνες)
Βίντεο: ΤΡΟΜΑΞΕ Ο ΣΤΑΣ ΠΟΥ ΕΓΙΝΑ ΣΑΝ ΓΙΑΓΙΑ 2024, Νοέμβριος
Anonim
Παρακολούθηση εύρους ζώνης
Παρακολούθηση εύρους ζώνης
Παρακολούθηση εύρους ζώνης
Παρακολούθηση εύρους ζώνης
Παρακολούθηση εύρους ζώνης
Παρακολούθηση εύρους ζώνης

Καθώς ρωτούσα συχνά τον εαυτό μου ποιο εύρος ζώνης παρέχεται επί του παρόντος από τον ISP μου (χρησιμοποιώ μόντεμ LTE για σύνδεση στο Διαδίκτυο), σκέφτηκα ένα σύστημα παρακολούθησης εύρους ζώνης. Δεδομένου ότι το σύστημα πρέπει να είναι συμπαγές και να εξοικονομεί ενέργεια, επέλεξα ένα Raspberry Pi Zero ως κεντρικό στοιχείο. Το Raspberry συνδέεται με το μόντεμ μέσω WLAN, επομένως τα προβλήματα WLAN μπορούν επίσης να εντοπιστούν.

Προμήθειες

  • Raspberry Pi Zero WH
  • Waveshare e-ink display (2.9inch-e-paper-module)
  • Μετατροπέας DC-DC (π.χ. DEBO DCDC 20W)
  • RGB LED (βγαλμένο από παλιά συσκευή)
  • Κουμπί
  • Διακόπτης
  • Ενότητα Relais (π.χ. μονάδα ρελέ 2 τρόπων 2 μονάδα ρελέ τρόπου)
  • Αρσενικό βύσμα + Θύρα θηλυκό (και τα δύο ταιριάζουν στο μέγεθος του βύσματος τροφοδοσίας του μόντεμ σας)
  • 3D εκτυπωμένη θήκη

Βήμα 1: Χαρακτηριστικά

Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
Χαρακτηριστικά
  • Το Raspberry Pi Zero συνδέεται μέσω WLAN, ελέγχει την ταχύτητα φόρτωσης και λήψης και πραγματοποιεί μια μέτρηση ping κάθε μισή ώρα. Μια έκδοση γραμμής εντολών του speedtest.net χρησιμοποιείται ως βάση για τις μετρήσεις.
  • Το αποτέλεσμα της μέτρησης του εύρους ζώνης και του ping εμφανίζεται σε μια οθόνη e-ink. Εμφανίζεται επίσης ο χρόνος της μέτρησης.
  • Εάν η ταχύτητα λήψης πέσει κάτω από μια καθορισμένη τιμή κατωφλίου, ένα ρελέ απενεργοποιεί και ενεργοποιεί το μόντεμ για μικρό χρονικό διάστημα. Επομένως, το μόντεμ επαναφέρεται χωρίς καμία τροποποίηση της συσκευής (διακόπτεται μόνο η παροχή ρεύματος).
  • Ένα κουμπί στο μπροστινό μέρος της συσκευής είναι διαθέσιμο για τη χειροκίνητη μέτρηση του εύρους ζώνης.
  • Οι μετρημένες τιμές εμφανίζονται σε έναν πίνακα ελέγχου Ubidots (πύλη IOT). Στην επισκόπηση μπορείτε επίσης να δείτε το χρονικό ιστορικό των μετρημένων τιμών και τους λόγους για τις τελευταίες επαναφορές.
  • Στην πύλη IOT μπορείτε επίσης να βρείτε ένα κουμπί για την επαναφορά του modem από απόσταση.
  • Η οθόνη εύρους ζώνης χρησιμοποιεί την τροφοδοσία του μόντεμ. Δεν απαιτείται επιπλέον παροχή. Το ρελέ διακόπτει την προώθηση της τροφοδοσίας στο μόντεμ - το βατόμουρο παραμένει ενεργοποιημένο.

Βήμα 2: Καλωδίωση

Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση

Στην πρώτη εικόνα μπορείτε να δείτε τον εσωτερικό σχεδιασμό της οθόνης εύρους ζώνης:

Τα κυριότερα συστατικά είναι:

    1. Πιέστε το κουμπί
    2. Οθόνη μελάνι
    3. Raspberry Pi Zero
    4. Ενότητα ρελέ
    5. RGB LED + αντιστάσεις (ανάλογα με το LED RGB που χρησιμοποιείτε)
    6. Διακόπτης
    7. Μετατροπέας DC-DC
    8. Θηλυκός σύνδεσμος

Η δεύτερη εικόνα δείχνει ένα σχηματικό σχήμα της καλωδίωσης. Ο θετικός πόλος της τάσης τροφοδοσίας τροφοδοτείται μέσω του διακόπτη στον μετατροπέα τάσης DC-DC (ο οποίος μετατρέπει την τάση τροφοδοσίας 12V του δρομολογητή σε 5V για το Raspberry) και μέσω του ρελέ (μέσω του κανονικά συνδεδεμένου πείρου) πίσω στο σύνδεσμος εξόδου. Έτσι το μόντεμ τροφοδοτείται επίσης με ρεύμα όταν η οθόνη εύρους ζώνης είναι απενεργοποιημένη.

Η μέτρηση του εύρους ζώνης μπορεί να ξεκινήσει χειροκίνητα μέσω ενός κουμπιού. Ένα LED RGB χρησιμοποιείται για την απεικόνιση των διαφόρων καταστάσεων λειτουργίας.

Η σύνδεση μεταξύ Raspberry Pi και οθόνης e-ink δεν εμφανίζεται στο διάγραμμα κυκλώματος. Συνδέστε την οθόνη σύμφωνα με τον πίνακα και το pin-out παραπάνω.

Βήμα 3: Τρισδιάστατη εκτύπωση και κατασκευή του κυνηγητού

Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού
Τρισδιάστατη εκτύπωση και οικοδόμηση του κυνηγητού

Τα ακόλουθα μέρη χρειάζονται για τη θήκη (δείτε την παραπάνω εικόνα):

    1. κάτω μέρος
    2. ανώτερο τμήμα
    3. εμπρός
    4. πίσω
    5. 4x βάση

Όλα τα μέρη μπορούν να εκτυπωθούν χωρίς υποστηρίγματα. Μπορείτε επίσης να βρείτε τα αρχεία και μερικά άλλα σχέδιά μου στο Thingiverse:

Η οθόνη μπορεί να στερεωθεί στον μπροστινό πίνακα με τις βάσεις και μια ταινία διπλής όψης. Ο διακόπτης κουμπιού και ο θηλυκός σύνδεσμος βιδώνονται στο πίσω και πίσω πάνελ. Χρησιμοποίησα βίδες 3x20mm για να συνδέσω τα δύο μισά του περιβλήματος. Οι ανοχές στις αυλακώσεις για το μπροστινό και το πίσω πάνελ είναι σχετικά σφιχτές. Εάν είναι απαραίτητο, το μπροστινό και το πίσω πάνελ πρέπει να τρίβονται στην άκρη (στο εσωτερικό για να αποφευχθεί η καταστροφή της επιφάνειας).

Βήμα 4: Ρύθμιση του Raspberry PI

Ρύθμιση του Ras Rasberry PI
Ρύθμιση του Ras Rasberry PI
Ρύθμιση του Ras Rasberry PI
Ρύθμιση του Ras Rasberry PI

Αυτός ο οδηγός εγκατάστασης βασίζεται στη συλλογή πολλών οδηγιών εγκατάστασης από διαφορετικές πηγές (κατασκευαστές οθόνης e-Ink,…). Για μένα οι οδηγίες οδήγησαν στο επιθυμητό αποτέλεσμα. Δεδομένου ότι δεν είμαι ειδικός στο Linux, δεν έγιναν βελτιστοποιήσεις ή παρόμοια. Γνωρίζω ότι σίγουρα υπάρχουν καλύτερες και πιο αποτελεσματικές λύσεις.

Ας υποθέσουμε ότι έχετε ήδη εγκαταστήσει το Raspbian στο Pi σας (υπάρχουν πολλά σεμινάρια για το πώς να εγκαταστήσετε το βασικό λειτουργικό σύστημα) και έχετε μια οθόνη (μέσω miniHDMI), ποντίκι και πληκτρολόγιο συνδεδεμένα. Θεωρείται επίσης σωστή ρύθμιση σύνδεσης WLAN στο δρομολογητή ή στο Διαδίκτυο. Εκτός εάν αναφέρεται διαφορετικά, όλες οι διαδικασίες εγκατάστασης εκτελούνται στο τερματικό.

Εγκατάσταση απομακρυσμένης επιφάνειας εργασίας (για πρόσβαση στο PI από τον υπολογιστή σας):

sudo apt-get ενημέρωση

sudo apt-get

εγκαταστήστε το xrdp

ή μπορείτε επίσης να εργάζεστε ακέφαλοι μέσω του ssh (δείτε π.χ.

Αλλαξε κωδικό:

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

Εγκατάσταση speedtest:

sudo

apt-get install python-pip

sudo pip εγκατάσταση speedtest-cli

για να ελέγξετε εάν η εγκατάσταση ήταν επιτυχής εκτελέστε το Speedtest στο τερματικό:

speedtest-cli

αν όλα είναι σωστά, θα πρέπει να πάρετε κάτι όπως στην πρώτη εικόνα παραπάνω.

Εγκαταστήστε καλωδίωση PI

sudo apt-get install git-core

git κλώνος git: //git.drogon.net/wiringPi

cd καλωδίωσηPi

./χτίζω

(δείτε επίσης

Εναλλακτικό:

sudo apt-get install wiringpi

(δείτε

Εγκαταστήστε το BCM2835

(δείτε

Λήψη bcm2835-1.60.tar.gz (ή νεότερη έκδοση εάν υπάρχει)

πίσσα zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./Διαμορφώστε

φτιαχνω, κανω

sudo κάνει έλεγχο

sudo make install

Εγκαταστήστε τη βιβλιοθήκη απεικόνισης Python

sudo apt-get install python-imaging

Εναλλακτικό:

sudo apt-get install python-pil

Ενεργοποιήστε τη λειτουργία I2C.

Εκτελέστε την ακόλουθη εντολή για να διαμορφώσετε τον πίνακα Raspberry Pi:

sudo raspi-config

Επιλέξτε Επιλογές διεπαφής-> I2C -> ναι, για να ξεκινήσετε το βασικό πρόγραμμα οδήγησης I2C. Στη συνέχεια, πρέπει επίσης να τροποποιήσετε το αρχείο διαμόρφωσης. Εκτελέστε την ακόλουθη εντολή για να ανοίξετε το αρχείο διαμόρφωσης:

sudo nano /etc /modules

Προσθέστε τις ακόλουθες δύο γραμμές στο αρχείο διαμόρφωσης

i2c-bcm2708

i2c-dev

Δείτε επίσης

Ενεργοποιήστε τη λειτουργία SPI

Εκτελέστε την ακόλουθη εντολή για να διαμορφώσετε τον πίνακα Raspberry Pi:

sudo raspi-config

Επιλέξτε Επιλογές διεπαφής-> SPI -> ναι, για να ξεκινήσετε το βασικό πρόγραμμα οδήγησης SPI.

Εγκατάσταση πρόσθετων γραμματοσειρών:

sudo apt-get install ttf-mscorefonts-installer

Λήψη και εγκατάσταση γραμματοσειρών (Roboto + Droid)

gksudo

pcmanfm

Για να ξεκινήσετε τη διαχείριση αρχείων με δικαιώματα root και αντιγράψτε τις γραμματοσειρές truetype στο φάκελο/usr/share/fonts/truetype

Εναλλακτικό:

Αντιγράψτε τις γραμματοσειρές στο φάκελο "Λήψεις" με το WinSCP (το ssh πρέπει να είναι ενεργοποιημένο για χρήση του WinSCP)

sudo cp -r/home/pi/Λήψεις/droid/usr/share/fonts/truetype

sudo cp -r/home/pi/Λήψεις/roboto/usr/share/fonts/truetype

Χρειάζεστε δικαιώματα root για πρόσβαση στον φάκελο γραμματοσειράς. Maybeσως υπάρχουν καλύτεροι τρόποι για να γίνει αυτό (όπως προαναφέρθηκε δεν είμαι ειδικός στο Linux) αλλά και οι δύο τρόποι λειτούργησαν για μένα.

Αρχεία Python:

Χρησιμοποιήστε τον διαχειριστή αρχείων για να δημιουργήσετε έναν νέο φάκελο "bandwidth_monitor"

Αντιγράψτε όλα τα αρχεία στον κατάλογο bandwidth_monitor

Κάντε αρχεία python και script εκτελέσιμα

chmod +x *.py

chmod +x speedtest-cron.sh

Διαμόρφωση crontab

crontab -e

Το Crontab χρησιμοποιείται για τον προγραμματισμό της εκτέλεσης του προγράμματος π.χ. ταχύτητα δοκιμής κάθε 30 λεπτά. Προσθέστε τις ακόλουθες γραμμές στο crontab (δείτε επίσης το δεύτερο σχήμα):

@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

Περιγραφή των προγραμματισμένων εργασιών:

  • κατά την επανεκκίνηση το μήνυμα επανεκκίνησης γράφεται στον πίνακα ελέγχου του IOT
  • κατά την επανεκκίνηση ξεκινά το κουμπί test_now_boll
  • κάθε 30 λεπτά πραγματοποιείται μέτρηση εύρους ζώνης
  • κάθε 3 λεπτά ελέγχεται η κατάσταση του κουμπιού απομακρυσμένης επαναφοράς (στον πίνακα ελέγχου IOT)
  • μία φορά την ημέρα ξεκινά ένας κύκλος ανανέωσης οθόνης.

Ανατρέξτε στην ενότητα λογισμικού για μια σύντομη περιγραφή των προγραμμάτων.

Βήμα 5: Λογισμικό

Λογισμικό
Λογισμικό

Το λογισμικό χωρίζεται σε πολλά αρχεία / προγράμματα:

Το bandwidth_monitor_0_4.py είναι το κύριο πρόγραμμα που επικαλείται το Crontab κάθε μισή ώρα. Πραγματοποιεί δοκιμή εύρους ζώνης (μέσω της έκδοσης γραμμής εντολών του speedtest.net). Κατά τη διάρκεια της δοκιμής, το LED RGB είναι μπλε. Εάν το εύρος ζώνης είναι πάνω από το επιλεγμένο όριο, η τιμή εμφανίζεται στην οθόνη e-ink (μαζί με μια χρονική σήμανση) και εξάγεται στον πίνακα ελέγχου του Ubidots. Εάν το εύρος ζώνης είναι κάτω από το όριο, η λυχνία LED γίνεται κόκκινη και η μέτρηση επαναλαμβάνεται μετά από μια μικρή καθυστέρηση. Μετά από 3 αρνητικές προσπάθειες το ρελέ ενεργοποιείται και έτσι διακόπτεται η τροφοδοσία του μόντεμ. Ο κωδικός επαναφοράς (τιμή = 2) γράφεται στην ενότητα καταγραφής.

Το poll_killswitch.py διαβάζει την κατάσταση μιας boolean μεταβλητής στον πίνακα ελέγχου. Εάν το killswitch_state είναι αληθές, το relais ενεργοποιείται και διακόπτεται η τροφοδοσία του μόντεμ. Το LED RGB γίνεται πράσινο κατά τη διάρκεια της ψηφοφορίας του killswitch. Μετά την επαναφορά, το killswitch_state ορίζεται ψευδές και δημιουργείται μια καταχώριση στην ενότητα καταγραφής του πίνακα ελέγχου (τιμή = 1).

Το poll_test_now_button.py περιμένει το πάτημα του κουμπιού στην πρόσοψη της θήκης. Ενεργοποιώντας το κουμπί, ενεργοποιείται χειροκίνητα μια μέτρηση εύρους ζώνης. Όταν ξεκινά το πρόγραμμα (κατά την επανεκκίνηση του Raspberry Pi) το LED RGB αναβοσβήνει κόκκινο.

Το post_restart_message.py γράφει τον κωδικό επαναφοράς (τιμή = 3) στην ενότητα καταγραφής του πίνακα ελέγχου. Αυτό υποδεικνύει ότι η οθόνη εύρους ζώνης έχει επανεκκινήσει. Κατά την εκκίνηση του προγράμματος το LED RGB αναβοσβήνει μπλε.

Τα test_LED.py και test_relay.py είναι απλά σενάρια που μπορούν να χρησιμοποιηθούν για τον έλεγχο της λειτουργίας υλικού του LED RGB και του ρελέ.

Τα epdconfig.py και epd2in9.py είναι προγράμματα οδήγησης συσκευών για την οθόνη e-ink που παρέχεται από το Waveshare.

Για να επιτρέψετε στα προγράμματα να έχουν πρόσβαση στον πίνακα ελέγχου του Ubidots, πρέπει να προσθέσετε τα μεμονωμένα διακριτικά και τα ονόματα της συσκευής ή των μεταβλητών σας (εάν χρησιμοποιείτε διαφορετικές σημειώσεις). Αναζητήστε ενότητα όπως αυτή που φαίνεται στην παραπάνω εικόνα (αντικαταστήστε το XXXXXXXX με το διακριτικό σας).

Ολοκληρωμένα σεμινάρια για τον τρόπο δημιουργίας του ταμπλό και τον τρόπο ενσωμάτωσης του ταμπλό σε πρόγραμμα Python μπορείτε να βρείτε απευθείας στη σελίδα Ubidots (https://help.ubidots.com/el/) ή μέσω της Google.

Βήμα 6: Πίνακας ελέγχου IOT

Πίνακας ελέγχου IOT
Πίνακας ελέγχου IOT

Ο πίνακας ελέγχου που φιλοξενείται από το Ubidots (δείτε https://ubidots.com) περιέχει αρκετές περιοχές οι οποίες περιγράφονται εν συντομία παρακάτω.

    1. Ακολουθία χρόνου ταχύτητας αναβάθμισης και λήψης. Κάθε μισή ώρα μια νέα τιμή εισάγεται στο διάγραμμα.
    2. Χρονική πορεία του μετρημένου χρόνου ping. Κάθε μισή ώρα μια νέα τιμή εισάγεται στο διάγραμμα.
    3. Ακολουθία χρόνου της μέσης ταχύτητας λήψης. Η μέση τιμή για 24 ώρες υπολογίζεται και γράφεται στο διάγραμμα.
    4. Αναπαράσταση υπολογιστικών φύλλων των τρεχουσών τιμών μέτρησης συμπεριλαμβανομένης της χρονικής σφραγίδας.
    5. Κουμπί τηλεχειριστηρίου για επαναφορά του μόντεμ μέσω Διαδικτύου. Το ερώτημα εμφανίζεται κάθε 3 λεπτά, δηλαδή μπορεί να χρειαστεί λίγος χρόνος μέχρι να ολοκληρωθεί η ενέργεια.
    6. Καταγραφή των τελευταίων επαναλήψεων συμπεριλαμβανομένου του λόγου για την επαναφορά (απομακρυσμένη ενεργοποίηση, απενεργοποίηση ή απώλεια τάσης, πτώση κάτω από το ελάχιστο εύρος ζώνης)

Ολοκληρωμένα σεμινάρια για τον τρόπο δημιουργίας του ταμπλό και τον τρόπο ενσωμάτωσης του πίνακα ελέγχου σε ένα πρόγραμμα Python μπορείτε να βρείτε απευθείας στη σελίδα Ubidots (https://help.ubidots.com/el/) ή μέσω της Google.

Συνιστάται: