Inhaltsverzeichnis:

Internet-Geschwindigkeitsmesser - Gunook
Internet-Geschwindigkeitsmesser - Gunook

Video: Internet-Geschwindigkeitsmesser - Gunook

Video: Internet-Geschwindigkeitsmesser - Gunook
Video: Nie wieder Internet-Probleme: So holt jeder das Maximum aus dem heimischen WLAN | stern TV 2024, November
Anonim
Image
Image
Der Plan
Der Plan

Da in Indien eine vollständige Sperrung stattfindet, wurde alles, einschließlich der Postdienste, geschlossen. Keine neuen PCB-Projekte, keine neuen Komponenten, nichts! Um die Langeweile zu überwinden und mich zu beschäftigen, habe ich mich entschlossen, aus den Teilen, die ich bereits zu Hause habe, etwas zu machen. Ich fing an, in dem Haufen Elektronikschrott zu suchen und fand ein altes, kaputtes analoges Multimeter. Ich rettete die "Meterbewegung" daraus und beschloss, eine Art von Informationen anzuzeigen, wusste aber nicht genau, was. Zuerst dachte ich daran, COVID-19-Statistiken anzuzeigen, aber im Internet gibt es bereits viele bessere Projekte. Außerdem werden die Daten nach ein paar Stunden aktualisiert und ein stiller Zeiger des Zählers wäre langweilig. Ich wollte Daten, die sich schnell ändern, sich jede Sekunde ändern. Ich habe auf Instagram nach Vorschlägen gefragt und einer meiner Follower antwortete mit Internet Speedometer. Es klang interessant und beschloss, es zu machen!

In diesem Instructable zeige ich Ihnen, wie ich Daten von meinem WLAN-Router mit SNMP erfasst und die Upload- und Download-Geschwindigkeiten auf dem Messgerät angezeigt habe.

Lass uns anfangen

Schritt 1: Der Plan

Wie immer vor Beginn des Projekts habe ich ein wenig im Internet recherchiert. Ich habe einige Projekte zu diesem Thema gefunden. Sie waren von zweierlei Art. Eine, die die Internetgeschwindigkeit anzeigte, indem sie die "Stärke" des WiFi-Signals maß. Ich bin kein Netzwerkexperte, aber das klang nicht richtig. Die anderen maßen die Latenz und kategorisierten die Geschwindigkeit als langsam, mittel oder schnell. Latenz ist die Zeitverzögerung zwischen dem Senden der Anfrage und dem Erhalten der Antwort und kann daher nicht die tatsächliche Darstellung der Internetgeschwindigkeit sein. Wir können es jedoch eine Netzwerkantwortgeschwindigkeit nennen! Dann gab es seriöse Projekte, die die Zeit zum Herunterladen einiger Daten maßen und darauf basierend die Internetgeschwindigkeit berechneten.

Aber in diesem Projekt (von Alistair) habe ich das Simple Network Management Protocol oder SNMP kennengelernt. Über SNMP können wir mit dem WLAN-Router kommunizieren und die benötigten Daten direkt von diesem beziehen. Einfach richtig? Nicht wirklich! Weil verschiedene Modelle von WLAN-Routern unterschiedliche Einstellungen haben und viel Ausprobieren erfordern, bevor Sie endlich die Ausgabe erhalten. Haben Sie keine Angst. Ich werde kurz erklären, was ich über SNMP gelernt habe und welche Schwierigkeiten ich bei den nächsten Schritten hatte.

Der Plan ist also, NodeMCU zu verwenden, um sich mit dem WLAN-Router zu verbinden. Dies sind die Schritte, um zur endgültigen Ausgabe zu gelangen:

  • Senden Sie eine Anfrage an den Router und fordern Sie die erforderlichen Daten an
  • Holen Sie sich die Antwort vom Router
  • Analysieren Sie die Antwort und analysieren Sie die erforderlichen Daten daraus
  • Wandeln Sie die „Rohdaten“in verständliche Informationen um
  • Erzeuge eine Spannung proportional zur Internetgeschwindigkeit für das Messgerät
  • Wiederholen

Ich werde einen DAC oder einen Digital-Analog-Wandler zur Steuerung des Messgeräts verwenden.

Schritt 2: Dinge, die Sie brauchen

Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen

1x NodeMCU

1x analoge Zählerbewegung

1x MPU4725 DAC

1x SPDT-Schalter

1x 10k Potentiometer

1x Widerstand

Schritt 3: Berechnung des Vollausschlagsstroms

Berechnung des Vollausschlagsstroms
Berechnung des Vollausschlagsstroms
Berechnung des Vollausschlagsstroms
Berechnung des Vollausschlagsstroms

Hinweis: Springen Sie zu Schritt 7 für den tatsächlichen Build!

Überspringen Sie diesen Schritt, wenn Sie den Skalenendwert des Ablenkstroms für Ihr Messgerät bereits kennen. Mein Zähler hatte nichts davon erwähnt, also musste ich rechnen. Aber lassen Sie uns zunächst schnell sehen, wie eine solche Bewegung funktioniert. Es besteht aus einer Spule, die in einem Magnetfeld aufgehängt ist. Wenn Strom durch die Spule fließt, erfährt sie nach dem Faradayschen Gesetz eine Kraft. Die Spule darf sich im Magnetfeld frei drehen, ebenso der Zeiger, der an der Spule befestigt ist. Die Stromstärke, die den Zeiger am 'Ende der Skala' bewegt, wird als Vollausschlagsstrom bezeichnet. Dies ist auch der maximale Strom, der durch die Spule fließen darf.

Es passiert noch viel mehr, aber das reicht für das, was wir tun. Wir haben jetzt die Bewegung. Es kann als Voltmeter verwendet werden, indem ein hoher Widerstand in Reihe geschaltet wird, oder als Amperemeter, indem ein kleiner Widerstand parallel dazu hinzugefügt wird. Wir werden es als Voltmeter verwenden, um die Spannung proportional zur Internetgeschwindigkeit anzuzeigen. Wir müssen also den Widerstand berechnen, der in Reihe hinzugefügt werden soll. Dazu müssen wir zunächst den Vollausschlags-Ablenkstrom berechnen.

  1. Wählen Sie einen hohen Widerstandswert (wie >100k)
  2. Verbinden Sie es in Reihe mit dem Uhrwerk und legen Sie mit dem Topf eine variable Spannung daran an.
  3. Erhöhen Sie die Spannung langsam weiter, bis der Zeiger das Ende der Skala erreicht.
  4. Messen Sie mit einem Multimeter den durchfließenden Strom. Dies ist der Vollausschlags-Ablenkstrom. (I = 150uA in meinem Fall)

Wir verwenden einen DAC mit einem Ausgangsspannungsbereich von 0 bis VCC (3,3 V aufgrund von NodeMCU). Das heißt, wenn 3,3 V an das Messgerät angelegt werden, sollte es auf das Ende der Skala zeigen. Dies kann passieren, wenn ein Vollausschlags-Ablenkstrom durch die Schaltung fließt, wenn 3,3 V angelegt werden. Unter Verwendung des Ohmschen Gesetzes gibt 3,3/(Vollbereichs-Ablenkstrom) den in Reihe einzufügenden Widerstandswert an.

Schritt 4: Erstellen einer SNMP-GET-Anfrage

Erstellen einer SNMP-GET-Anfrage
Erstellen einer SNMP-GET-Anfrage
Erstellen einer SNMP-GET-Anfrage
Erstellen einer SNMP-GET-Anfrage
Erstellen einer SNMP-GET-Anfrage
Erstellen einer SNMP-GET-Anfrage

Simple Network Management Protocol (SNMP) ist ein Internet-Standardprotokoll zum Sammeln und Organisieren von Informationen über verwaltete Geräte in IP-Netzwerken und zum Ändern dieser Informationen, um das Geräteverhalten zu ändern. Zu den Geräten, die normalerweise SNMP unterstützen, gehören Kabelmodems, Router, Switches, Server, Workstations, Drucker und mehr. Für diesen Build werden wir über SNMP mit unserem WLAN-Router kommunizieren und die erforderlichen Daten abrufen.

Aber zuerst müssen wir eine Anfrage, die als 'GET Request' bekannt ist, an den Router senden, in der die Details der gewünschten Daten aufgeführt sind. Das GET-Request-Format wird im Bild gezeigt. Die Anfrage besteht aus verschiedenen Teilen. Ich habe die Bytes hervorgehoben, die Sie möglicherweise ändern möchten.

Bitte beachten Sie, dass alles hexadezimal ist.

SNMP-Nachricht -In meinem Fall beträgt die Länge der gesamten Nachricht 40 (graue Farbe), was bei der Konvertierung in hexadezimal 0x28 beträgt.

SNMP Community String - Der Wert 'PUBLIC' wird hexadezimal als '70 75 62 6C 69 63' mit einer Länge von 6 (gelb) geschrieben.

SNMP-PDU-Typ - In meinem Fall beträgt die Länge der Nachricht 27 (blau), d. h. 0x1B.

Varbind List Type - In meinem Fall beträgt die Länge der Nachricht 16 (grün), d. h. 0x10.

Varbind-Typ - In meinem Fall beträgt die Länge der Nachricht 14 (pink), d. h. 0x0E.

Objektkennung -

Wie bereits erwähnt, unterhalten SNMP-fähige Netzwerkgeräte (z. B. Router, Switches usw.) eine Datenbank mit Systemstatus-, Verfügbarkeits- und Leistungsinformationen als Objekte, die durch OIDs identifiziert werden. Sie müssen die OIDs Ihres Routers für Upload- und Download-Pakete identifizieren. Dies kann mit einem kostenlosen MIB-Browser wie diesem erfolgen.

Geben Sie die Adresse als 192.168.1.1 und die OID als.1.3.6.1.2.1.2.2.1.10.x (ifInOctets) oder.1.3.6.1.2.1.2.2.1.16.x ein. (ifOutOctets). Wählen Sie Vorgang abrufen und klicken Sie auf Los. Sie sollten die OID zusammen mit ihrem Wert und Typ sehen.

In meinem Fall beträgt die Länge der Nachricht 10 (rot), also 0x0A. Ersetzen Sie den Wert durch die OID. In diesem Fall '2B 06 01 02 01 02 02 01 10 10'

Das ist es! Ihre Anfragenachricht ist fertig. Belassen Sie die restlichen Bytes so, wie sie sind.

Aktivieren von SNMP auf Ihrem Router:

  • Melden Sie sich über das Standard-Gateway auf der Seite Ihres WLAN-Routers an. Geben Sie 192.168.1.1 in Ihren Browser ein und drücken Sie die Eingabetaste. Standardmäßig sollten Benutzername und Passwort „admin“lauten.
  • Ich verwende einen TP-LINK (TD-W8961N) Router. Für diesen Router müssen Sie zu Access Management > SNMP gehen und 'Activated' auswählen.
  • GET-Community: öffentlich
  • Trap-Host: 0.0.0.0

Schritt 5: GET-Antwort verstehen

GET-Antwort verstehen
GET-Antwort verstehen

Sie können diesen Schritt überspringen, aber es ist gut zu wissen, wenn Sie eine Fehlerbehebung durchführen müssen.

Nachdem Sie den Code hochgeladen und ausgeführt haben, können Sie sich die Antwort über den Serial Monitor ansehen. Es sollte wie auf dem Bild gezeigt aussehen. Es gibt ein paar Bytes, nach denen Sie suchen müssen, die ich hervorgehoben habe.

Ausgehend von 0, Das 15. Byte teilt dem PDU-Typ mit - 0xA2 bedeutet, dass es sich um eine GetResponse handelt.

48. Byte sagt den Datentyp - 0x41 bedeutet, dass der Datentyp Zähler ist.

49. Byte gibt die Länge der Daten an - 0x04 bedeutet, dass die Daten 4 Byte lang sind.

Byte 50, 51, 52, 53 enthält die Daten.

Schritt 6: Digital-Analog-Wandler (DAC)

Digital-Analog-Wandler (DAC)
Digital-Analog-Wandler (DAC)

Mikrocontroller sind digitale Geräte, die analoge Spannungen nicht direkt verstehen. Ich verwende ein analoges Messgerät, das als Eingang eine variable Spannung benötigt. Der Mikrocontroller kann jedoch nur HIGH (3,3 V bei NodeMCU) und LOW (0 V) ausgeben. Jetzt könnten Sie sagen, warum nicht einfach PWM verwenden. Es funktioniert nicht, da das Messgerät nur den Durchschnittswert anzeigt.

Ich verwende den MCP4725 DAC, um eine variable Spannung zu erhalten. Es ist ein 12-Bit-DAC, dh in einfachen Worten, er teilt 0 bis 3,3 V in 4096 (= 2^12) Teile auf. Die Auflösung beträgt 3,3/4096 = 0,8056 mV. Das bedeutet 0 entspricht 0V, 1 entspricht 0,8056mV, 2 entspricht 1,6112mV, ….., 4095 entspricht 3,3V.

Die Internetgeschwindigkeit wird von '0 bis 7 Mbit/s' auf '0 bis 4095' "abgebildet" und dann wird dieser Wert an den DAC gegeben, um eine Spannung auszugeben, die proportional zur Internetgeschwindigkeit ist.

Schritt 7: Die Montage

Die Versammlung
Die Versammlung
Die Versammlung
Die Versammlung
Die Versammlung
Die Versammlung
Die Versammlung
Die Versammlung

Anschlüsse sind ganz einfach. Der Schaltplan wurde hier angehängt.

Ich habe die Waage entworfen und gedruckt. Der obere ist für die Download-Geschwindigkeit und der untere für die Upload-Geschwindigkeit. Ich klebte die neue Skala über die alte.

Ich habe all das alte Zeug aus dem Multimeter entfernt und alles darin gestopft. Es war eine enge Passform. Ich musste vorne ein Loch bohren, um den Kippschalter anzubringen, mit dem zwischen Upload- und Download-Geschwindigkeit gewählt wird.

Schritt 8: Zeit für die Codierung

Zeit zum Codieren
Zeit zum Codieren
Zeit zum Codieren
Zeit zum Codieren
Zeit zum Codieren
Zeit zum Codieren

Der Code wurde hier angehängt. Laden Sie es herunter und öffnen Sie es in der Arduino IDE. Installieren Sie die MCP4725-Bibliothek von Adafruit.

Vor dem Hochladen:

  1. Geben Sie Ihre WLAN-SSID und Ihr Passwort ein
  2. Geben Sie die auf der Skala angegebene maximale Upload- und Download-Geschwindigkeit ein.
  3. Nehmen Sie die erforderlichen Änderungen im Request-Array für Download- und Upload-Pakete vor.
  4. Entkommentieren Sie Zeile 165, um die Antwort auf dem seriellen Monitor anzuzeigen.

Hit hochladen!

Schritt 9: Viel Spaß

Schalten Sie es ein und genießen Sie es, die Nadel beim Surfen im Internet tanzen zu sehen!

Vielen Dank, dass Sie bis zum Ende durchgehalten haben. Ich hoffe, Sie alle lieben dieses Projekt und haben heute etwas Neues gelernt. Lassen Sie es mich wissen, wenn Sie selbst eine machen. Abonniere meinen YouTube-Kanal für mehr solcher Projekte.

Empfohlen: