Innholdsfortegnelse:

Internetthastighetsmåler: 4 trinn (med bilder)
Internetthastighetsmåler: 4 trinn (med bilder)

Video: Internetthastighetsmåler: 4 trinn (med bilder)

Video: Internetthastighetsmåler: 4 trinn (med bilder)
Video: PTS föreslår 5 Mbit/s som ny grundnivå för internethastighet 2024, Juli
Anonim
Image
Image
Internett -hastighetsmåler
Internett -hastighetsmåler
Internett -hastighetsmåler
Internett -hastighetsmåler

Oversikt

Denne "Internetthastighetsmåleren" vil gi deg nær sanntids tilsyn med nettverksbruken din. Denne informasjonen er tilgjengelig på webgrensesnittet til de fleste hjemrutere. Men for å få tilgang til den må du stoppe din nåværende oppgave for å slå den opp.

Jeg ønsket å se denne informasjonen uten å måtte avbryte min nåværende oppgave, vise den i et format som var forståelig med et raskt blikk, og for å få informasjonen på en måte som ville fungere med så mange rutere som mulig, slik at andre kunne potensielt bruke den også.

Hvordan det gjør tingene

Jeg bestemte meg for SNMP (Simple Network Management Protocol) som måten å få informasjonen fra ruteren. SNMP er mye brukt i nettverksutstyr, og hvis enheten ikke støtter det som standard, kan DDWRT (åpen kildekode -ruter -fastvare) brukes til å implementere SNMP.

For å vise informasjonen på en måte som er lett å forstå brukte jeg en måler fra en bil. Bilmålere er designet for å gi deg informasjon uten å være distraherende eller forvirrende, slik at sjåføren kan holde øynene på veien. Dessuten hadde jeg litt liggende.

Siden dette ville ligge på skrivebordet mitt, bestemte jeg meg for at jeg også ville lage bakgrunnslyset RGB fordi datatilbehør alt skulle være RGB. Ikke sant?

Utfordringer

Målerne som jeg hadde brukte en Air-Core-aktuator. Jeg hadde aldri hørt om disse før dette prosjektet.

Fra Wikipedia: Luftkjernemåler består av to uavhengige, vinkelrette spoler som omgir et hul kammer. En nåleaksel stikker inn i kammeret, hvor en permanent magnet er festet til akselen. Når strøm strømmer gjennom de vinkelrette spolene, ligger magnetfeltene over hverandre, og magneten står fritt til å justere med de kombinerte feltene.

Jeg klarte ikke å finne et bibliotek for Arduino som støttet SNMP i managerkonfigurasjonen. SNMP har to hovedformer, agent og manager. Agenter svarer på forespørsel og ledere sender forespørsel til agenter. Jeg klarte å få lederfunksjonaliteten til å fungere ved å endre Arduino_SNMP -biblioteket opprettet av 0neblock. Jeg har aldri programmert i C ++ annet enn å få lysdioder til å blinke på en Arduino, så gi meg beskjed hvis det er problemer med SNMP -biblioteket, så prøver jeg å fikse dem, for nå fungerer det imidlertid.

I tillegg er SNMP ikke designet for visning i sanntid. Tiltenkt bruk er for å spore statistikk og oppdage avbrudd. På grunn av dette oppdateres informasjonen på ruteren bare omtrent hvert 5. sekund (enheten din kan variere). Det er årsaken til forsinkelsen mellom tallet på hastighetstesten og nålen som beveger seg.

Trinn 1: Verktøy og materialer

Verktøy og materialer
Verktøy og materialer
Verktøy og materialer
Verktøy og materialer
Verktøy og materialer
Verktøy og materialer
Verktøy og materialer
Verktøy og materialer
Kretsdesign
Kretsdesign

Vi trenger 3 H-broer. Modellene jeg brukte er Dual TB6612FNGand Dual L298N.

Hver Air-Core-aktuator krever 2 fulle H-broer fordi spolene må styres uavhengig.

En av målerne jeg bruker har en spole kortsluttet til bakken med en diode og motstand. Jeg er ikke sikker på vitenskapen bak det, men det gjør at den kan rotere omtrent 90 grader med bare en spole drevet.

Jeg bruker 12v til 5v regulatoren som er en del av L298N -kortet som jeg valgte for å drive ESP32.

Alle LED -kretsene er valgfrie, i tillegg til JST -kontaktene. Du kan enkelt lodde ledningene direkte til ESP32 og motordriveren.

Trinn 3: Kodesign

Kodeoppsett

Vi må konfigurere Arduino for å kunne bruke ESP32 -kortet. Det er en god guide som vil lede deg gjennom ESP32 Arduino -oppsettet.

Du trenger også Arduino_SNMP -biblioteket som ligger her.

For å konfigurere koden må du samle inn informasjon.

  1. Ruter IP
  2. Maks opplastningshastighet
  3. Maks nedlastningshastighet
  4. WiFi -navnet og passordet ditt
  5. OID som inneholder oktett teller for "inn" og "ut" på ruterne WAN -grensesnittet

Det finnes standard OID (Object Identifiers) for informasjonen vi ønsker. I henhold til MIB-2-standarden er tallene vi ønsker:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Hvor X er tallet som er tilordnet grensesnittet du vil hente statistikken fra. For meg er tallet 3. En måte å bekrefte at dette er riktig OID for deg og å identifisere hvilket grensesnittnummer du trenger å bruke, er å bruke et verktøy som MIB Browser.

For å få maks hastigheter brukte jeg SpeedTest.net. Når du har hastighetene dine i Mbps, må du konvertere dem til oktetter ved å bruke denne formelen.

Oktetter per sekund = (Resultat fra hastighetstest i Mbps * 1048576) / 8

Kodefunksjon

Koden sender en SNMP-forespørsel til ruteren. Ruteren svarer deretter med et tall, tallet representerer antallet oktetter som er sendt eller mottatt. Samtidig registrerer vi antall millisekunder som har gått siden Arduino startet.

Når denne prosessen har skjedd minst to ganger, kan vi beregne prosentandelen av bruk basert på våre maksverdier ved hjelp av denne koden

percentDown = ((float) (byteDown - byteDownLast)/(float) (maxDown * ((millis () - timeLast)/1000))) * 100;

Regnestykket brytes slik:

octetsDiff = snmp_result - Forrige_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second)/1000

Prosent = (octetsDiff / MaxPosableOverTime) * 100

Nå som vi har prosentandelen av nettverksbruk, trenger vi bare å skrive det til måleren. Vi gjør det i 2 trinn. Først bruker vi updateDownloadGauge -funksjonen. I denne funksjonen bruker vi "kart" for å konvertere prosentandelen til et tall som representerer en radianposisjon på måleren. Deretter gir vi det tallet til setMeterPosition -funksjonen for å flytte nålen til den nye posisjonen.

Trinn 4: Case Design

Case Design
Case Design
Case Design
Case Design
Case Design
Case Design

For å inneholde alt, designet jeg et kabinett i fusion360 og 3Dprintet det. Designet jeg laget er relativt enkelt. Jeg brukte varmt lim for å feste komponentene på innsiden, og måleren holdes på plass ved å bli klemt mellom frontdekselet og bakdekselet. Du trenger ikke å bruke 3D -utskrift for å lage saken. For eksempel kan du lage et etui av tre, eller du kan sette alt tilbake i det originale etuiet som målerne kom i.

Mine STL -filer er tilgjengelige på thingiverse hvis du vil se på dem, men det er usannsynlig at de vil fungere for deg med mindre du får nøyaktig de samme målerne som jeg brukte.

Saksfiler:

Takk for at du leste. Gi meg beskjed hvis du har spørsmål, så skal jeg gjøre mitt beste for å svare.

Anbefalt: