Inhoudsopgave:

Internetsnelheidsmeter: 9 stappen (met afbeeldingen)
Internetsnelheidsmeter: 9 stappen (met afbeeldingen)

Video: Internetsnelheidsmeter: 9 stappen (met afbeeldingen)

Video: Internetsnelheidsmeter: 9 stappen (met afbeeldingen)
Video: Winstgevend Online Adverteren: De Gids voor ZPP'ers 2024, November
Anonim
Image
Image
Het plan
Het plan

Nu er in India een volledige lockdown gaande is, is alles, inclusief de postdiensten, gesloten. Geen nieuwe PCB-projecten, geen nieuwe componenten, niets! Dus om de verveling te overwinnen en mezelf bezig te houden, besloot ik iets te maken van de onderdelen die ik al in huis heb. Ik begon te zoeken uit de stapel elektronica-troep en vond een oude, kapotte analoge multimeter. Ik redde er de 'meterbeweging' van en besloot wat informatie weer te geven, maar wist niet precies wat. Eerst dacht ik eraan om COVID-19-statistieken weer te geven, maar er zijn al veel betere projecten op internet. Ook worden de gegevens na een paar uur bijgewerkt en zou een stilstaande wijzer van de meter saai zijn. Ik wilde gegevens die snel veranderen, elke seconde veranderen. Ik vroeg om suggesties op Instagram en een van mijn volgers antwoordde met internetsnelheidsmeter. Het klonk interessant en besloot het te maken!

In deze Instructable zal ik je laten zien hoe ik gegevens van mijn WiFi-router heb gehaald met behulp van SNMP en de upload- en downloadsnelheden op de meter heb weergegeven.

Laten we beginnen

Stap 1: Het plan

Zoals altijd heb ik, voordat ik met het project begon, wat research op internet gedaan. Ik heb een aantal projecten gevonden die met dit onderwerp te maken hebben. Ze waren van twee soorten. Eentje die de internetsnelheid liet zien door de 'sterkte' van het wifi-signaal te meten. Ik ben geen netwerkexpert, maar dit klonk niet goed. De anderen maten de latentie en categoriseerden de snelheid als langzaam, gemiddeld of snel. Latency is de tijdsvertraging tussen het verzenden van het verzoek en het ontvangen van het antwoord en kan dus niet de werkelijke weergave zijn van de internetsnelheid. We kunnen het echter een netwerkreactiesnelheid noemen! Dan waren er legitieme projecten die de tijd meten die nodig was om sommige gegevens te downloaden en op basis daarvan de internetsnelheid berekenden.

Maar het was in dit project (door Alistair) dat ik leerde over Simple Network Management Protocol of SNMP. Met behulp van SNMP kunnen we communiceren met de wifi-router en de benodigde gegevens er rechtstreeks vandaan halen. Makkelijk, toch? Eigenlijk niet! Omdat verschillende modellen WiFi-routers verschillende instellingen hebben en veel vallen en opstaan nodig hebben voordat je eindelijk de uitvoer krijgt. Wees niet bang. Ik zal in het kort uitleggen wat ik heb geleerd over SNMP en de moeilijkheden die ik tegenkwam in de komende stappen.

Het plan is dus om NodeMCU te gebruiken om verbinding te maken met de WiFi-router. Dit zijn de stappen om tot de uiteindelijke uitvoer te komen:

  • Stuur een verzoek naar de router om de benodigde gegevens op te vragen
  • Ontvang het antwoord van de router
  • Analyseer het antwoord en ontleden de vereiste gegevens ervan
  • Zet de 'ruwe' data om in begrijpelijke informatie
  • Genereer spanning evenredig aan de internetsnelheid voor de meter
  • Herhalen

Ik zal een DAC of digitaal naar analoog converter gebruiken voor het aansturen van de meter.

Stap 2: Dingen die je nodig hebt

Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt
Dingen die je nodig hebt

1x NodeMCU

1x analoge meterbeweging

1x MPU4725 DAC

1x SPDT-schakelaar

1x 10k Potentiometer

1x Weerstand

Stap 3: Berekening van de volledige afbuigstroom

Volledige afbuigstroom berekenen
Volledige afbuigstroom berekenen
Volledige afbuigstroom berekenen
Volledige afbuigstroom berekenen

Opmerking: ga naar stap 7 voor de daadwerkelijke build!

Sla deze stap over als u de volledige afbuigstroom voor uw meter al kent. Mijn meter had er geen melding van, dus ik moest uitrekenen. Maar laten we eerst snel zien hoe zo'n beweging werkt. Het bestaat uit een spoel opgehangen in een magnetisch veld. Wanneer stroom door de spoel vloeit, volgens de wet van Faraday, ervaart deze een kracht. De spoel mag vrij ronddraaien in het magnetische veld en dat geldt ook voor de aanwijzer die aan de spoel is bevestigd. De grootte van de stroom die de wijzer aan het 'einde van de schaal' doet bewegen, wordt de volledige afbuigstroom genoemd. Dit is tevens de maximale stroom die door de spoel moet kunnen stromen.

Er is nog veel meer aan de hand, maar dit is genoeg voor wat we doen. We hebben nu de beweging. Het kan worden gebruikt als een voltmeter door er een hoge weerstand in serie mee toe te voegen of als een ampèremeter door er parallel een kleine weerstand aan toe te voegen. We zullen het gebruiken als een voltmeter om de spanning weer te geven die evenredig is aan de internetsnelheid. We moeten dus de weerstand berekenen die in serie moet worden opgeteld. Daarvoor moeten we eerst de volledige afbuigstroom berekenen.

  1. Kies een hoge weerstandswaarde (zoals >100k)
  2. Verbind hem in serie met het uurwerk en zet er een variabele spanning op met behulp van de pot.
  3. Blijf de spanning langzaam verhogen totdat de wijzer het einde van de schaal bereikt.
  4. Meet met een multimeter de stroom die erdoorheen vloeit. Dit is de volledige afbuigstroom. (I = 150uA in mijn geval)

We gebruiken een DAC met een uitgangsspanningsbereik van 0 tot VCC (3,3 V vanwege NodeMCU). Dit betekent dat wanneer 3,3V op de meter wordt toegepast, deze naar het einde van de schaal moet wijzen. Dit kan gebeuren wanneer volledige afbuigstroom door het circuit vloeit wanneer 3,3 V wordt toegepast. Met behulp van de wet van Ohm geeft 3,3 / (volledige afbuigstroom) de waarde aan weerstand die in serie moet worden ingevoegd.

Stap 4: SNMP GET-verzoek maken

SNMP GET-verzoek maken
SNMP GET-verzoek maken
SNMP GET-verzoek maken
SNMP GET-verzoek maken
SNMP GET-verzoek maken
SNMP GET-verzoek maken

Simple Network Management Protocol (SNMP) is een internetstandaardprotocol voor het verzamelen en organiseren van informatie over beheerde apparaten op IP-netwerken en voor het wijzigen van die informatie om het gedrag van apparaten te veranderen. Apparaten die doorgaans SNMP ondersteunen, zijn onder meer kabelmodems, routers, switches, servers, werkstations, printers en meer. Voor deze build communiceren we met onze WiFi-router via SNMP en krijgen we de vereiste gegevens.

Maar eerst moeten we een verzoek sturen dat bekend staat als een 'GET-verzoek' naar de router met vermelding van de details van de gegevens die we willen. GET Request-formaat wordt weergegeven in de afbeelding. De aanvraag bestaat uit verschillende onderdelen. Ik heb de bytes gemarkeerd die u mogelijk wilt wijzigen.

Houd er rekening mee dat alles in hexadecimaal is.

SNMP-bericht - In mijn geval is de lengte van het hele bericht 40 (grijze kleur), wat bij conversie naar hexadecimaal 0x28 is.

SNMP Community String - De waarde 'PUBLIC' wordt in hexadecimaal geschreven als '70 75 62 6C 69 63' waarvan de lengte 6 (geel) is.

SNMP PDU-type - In mijn geval is de lengte van het bericht 27 (blauw), d.w.z. 0x1B.

Varbind-lijsttype - In mijn geval is de lengte van het bericht 16 (groen), d.w.z. 0x10.

Varbind Type - In mijn geval is de lengte van het bericht 14 (roze), d.w.z. 0x0E.

Object-ID -

Zoals eerder vermeld, houden SNMP-compatibele netwerkapparaten (bijv. routers, switches, enz.) een database bij met systeemstatus, beschikbaarheid en prestatie-informatie als objecten, geïdentificeerd door OID's. U moet de OID's van uw router identificeren voor upload- en downloadpakketten. Het kan worden gedaan met behulp van een gratis MIB-browser zoals deze.

Voer Adres in als 192.168.1.1 en OID als.1.3.6.1.2.1.2.2.1.10.x (ifInOctets) of.1.3.6.1.2.1.2.2.1.16.x. (ifOutOctets). Selecteer Bewerking ophalen en klik op Go. U zou de OID samen met de waarde en het type moeten zien.

In mijn geval is de lengte van het bericht 10 (rood), d.w.z. 0x0A. Vervang de waarde door de OID. In dit geval '2B 06 01 02 01 02 02 01 10 10'

Dat is het! Uw verzoekbericht is klaar. Houd de rest van de bytes zoals ze zijn.

SNMP inschakelen op uw router:

  • Meld u aan op de pagina van uw WiFi-router via de standaardgateway. Typ 192.168.1.1 in uw browser en druk op enter. Standaard moeten de gebruikersnaam en het wachtwoord 'admin' zijn.
  • Ik gebruik een TP-LINK (TD-W8961N) router. Voor deze router moet je naar Toegangsbeheer > SNMP gaan en 'Geactiveerd' selecteren.
  • GET-community: openbaar
  • Valgastheer: 0.0.0.0

Stap 5: GET-reactie begrijpen

GET-reactie begrijpen
GET-reactie begrijpen

U kunt deze stap overslaan, maar het is goed om te weten of u problemen moet oplossen.

Nadat u de code hebt geüpload en uitgevoerd, kunt u het antwoord bekijken via de seriële monitor. Het moet eruit zien zoals op de afbeelding. Er zijn een paar bytes waarnaar u moet zoeken die ik heb gemarkeerd.

Vanaf 0, 15e byte vertelt het PDU-type - 0xA2 betekent dat het een GetResponse is.

48e byte vertelt het gegevenstype - 0x41 betekent dat het gegevenstype Teller is.

49e byte geeft de lengte van de gegevens aan - 0x04 betekent dat de gegevens 4 bytes lang zijn.

Byte 50, 51, 52, 53 bevat de gegevens.

Stap 6: Digitaal naar analoog converter (DAC)

Digitaal naar analoog converter (DAC)
Digitaal naar analoog converter (DAC)

Microcontrollers zijn digitale apparaten die analoge spanningen niet direct begrijpen. Ik gebruik een analoge meter die een variabele spanning als ingang nodig heeft. Maar de microcontroller kan alleen HOOG (3,3V in het geval van NodeMCU) en LAAG (0V) uitvoeren. Nu zou je kunnen zeggen waarom je niet gewoon PWM gebruikt. Het zal niet werken omdat de meter alleen de gemiddelde waarde weergeeft.

Ik gebruik MCP4725 DAC om variabele spanning te krijgen. Het is een 12-bits DAC, d.w.z. in eenvoudige bewoordingen verdeelt het 0 tot 3,3 V in 4096 (= 2 ^ 12) delen. De resolutie zal 3,3/4096 = 0,8056mV zijn. Dit betekent dat 0 overeenkomt met 0V, 1 overeenkomt met 0,8056mV, 2 overeenkomt met 1,6112mV, ….., 4095 overeenkomt met 3,3V.

De internetsnelheid wordt 'in kaart gebracht' van '0 tot 7 mbps' tot '0 tot 4095' en vervolgens wordt deze waarde aan DAC gegeven om een spanning uit te voeren die evenredig is met de internetsnelheid.

Stap 7: De vergadering

de vergadering
de vergadering
de vergadering
de vergadering
de vergadering
de vergadering
de vergadering
de vergadering

Aansluitingen zijn heel eenvoudig. Het schema is hier bijgevoegd.

Ik heb de schaal ontworpen en geprint. De bovenste is voor de downloadsnelheid en de onderste voor de uploadsnelheid. Ik heb de nieuwe schaal over de oude gelijmd.

Ik heb alle oude spullen uit de multimeter gehaald en alles erin gepropt. Het was een strakke pasvorm. Ik moest een gat aan de voorkant boren om de tuimelschakelaar te bevestigen die wordt gebruikt om te kiezen tussen upload- en downloadsnelheid.

Stap 8: Tijd voor codering

Tijd voor codering
Tijd voor codering
Tijd voor codering
Tijd voor codering
Tijd voor codering
Tijd voor codering

De code is hier bijgevoegd. Download en open het in Arduino IDE. Installeer de MCP4725-bibliotheek van Adafruit.

Voordat u uploadt:

  1. Voer uw WiFi SSID en wachtwoord in
  2. Voer de maximale upload- en downloadsnelheid in die op de schaal wordt vermeld.
  3. Breng de nodige wijzigingen aan in de aanvraagarray voor zowel download- als uploadpakketten.
  4. Verwijder commentaar op regel 165 om de reactie op de seriële monitor te bekijken.

Druk op uploaden!

Stap 9: Geniet

Zet hem aan en geniet van het kijken naar de naald die ronddanst terwijl je op internet surft!

Bedankt voor het vasthouden aan het einde. Ik hoop dat jullie allemaal van dit project houden en vandaag iets nieuws hebben geleerd. Laat het me weten als je er een voor jezelf hebt gemaakt. Abonneer je op mijn YouTube-kanaal voor meer van dergelijke projecten.

Aanbevolen: