INHOUDSOPGAWE:

Internetsnelheidsmeter: 4 stappe (met foto's)
Internetsnelheidsmeter: 4 stappe (met foto's)

Video: Internetsnelheidsmeter: 4 stappe (met foto's)

Video: Internetsnelheidsmeter: 4 stappe (met foto's)
Video: 😳😂 Alex probeert Athena te zoenen in vlog Gio #gio #alex #athena #vlog 2024, November
Anonim
Image
Image
Internet spoedmeter
Internet spoedmeter
Internet spoedmeter
Internet spoedmeter

Oorsig

Hierdie "internetsnelheidsmeter" gee u byna intydse toesig oor u netwerkgebruik. Hierdie inligting is beskikbaar op die webkoppelvlak van die meeste tuisroeters. Om toegang daartoe te verkry, moet u egter u huidige taak stop om dit te gaan opsoek.

Ek wou hierdie inligting sien sonder om my huidige taak te onderbreek, dit in 'n verstaanbare formaat te vertoon met 'n vinnige blik en om die inligting op 'n manier te kry wat met soveel routers as moontlik werk, sodat ander gebruik dit moontlik ook.

Hoe dit die dinge doen

Ek het besluit op SNMP (Simple Network Management Protocol) as die manier om die inligting van die router af te kry. SNMP word wyd gebruik in netwerktoerusting en as u toestel dit nie standaard ondersteun nie, kan DDWRT (open source router -firmware) gebruik word om SNMP te implementeer.

Om die inligting op 'n maklik verstaanbare manier te vertoon, het ek 'n meter van 'n motor gebruik. Motormeters is ontwerp om u inligting te gee sonder om afleidend of verwarrend te wees, sodat die bestuurder hul oë op die pad kan hou. Ek het ook 'n bietjie gaan lê.

Aangesien dit op my lessenaar sou lê, het ek besluit om ook die agterlig RGB te maak, want rekenaartoebehore moet almal RGB wees. Reg?

Uitdagings

Die meters wat ek gehad het, gebruik 'n Air-Core-aandrywer. Ek het nog nooit hiervan gehoor voor hierdie projek nie.

Van Wikipedia: Die lugkernmeter bestaan uit twee onafhanklike, loodregte spoele wat 'n hol kamer omring. 'N Naaldas steek in die kamer, waar 'n permanente magneet op die as aangebring word. As stroom deur die loodregte spoele vloei, val hul magnetiese velde bo -op, en die magneet is vry om in lyn te kom met die gekombineerde velde.

Ek kon nie 'n biblioteek vir Arduino vind wat SNMP ondersteun in die bestuurderkonfigurasie nie. SNMP het twee hoofvorme, agent en bestuurder. Agente reageer op versoek en bestuurders stuur versoek aan agente. Ek kon bestuurderfunksies laat werk deur die Arduino_SNMP -biblioteek te verander wat deur 0neblock geskep is. Ek het nog nooit in C ++ geprogrammeer nie, behalwe dat LED's op 'n Arduino laat knip, so laat weet my as daar probleme is met die SNMP -biblioteek, en ek sal probeer om dit reg te stel, maar dit werk nou.

Boonop is SNMP nie ontwerp vir real -time kyk nie. Die beoogde gebruik is om statistieke op te spoor en onderbrekings op te spoor. As gevolg hiervan word die inligting op die router slegs ongeveer elke 5 sekondes bygewerk (u toestel kan wissel). Dit is die oorsaak van die vertraging tussen die nommer op die snelheidstoets en die naald wat beweeg.

Stap 1: gereedskap en materiaal

Gereedskap en materiaal
Gereedskap en materiaal
Gereedskap en materiaal
Gereedskap en materiaal
Gereedskap en materiaal
Gereedskap en materiaal
Gereedskap en materiaal
Gereedskap en materiaal
Kringontwerp
Kringontwerp

Ons benodig 3 volle H-brûe. Die modelle wat ek gebruik het, is Dual TB6612FNGand Dual L298N.

Elke Air-Core-aandrywer benodig 2 volle H-brûe omdat die spoele onafhanklik beheer moet word.

Een van die meters wat ek gebruik, het 'n spoel wat met 'n diode en weerstand op die grond gekort is. Ek is nie seker van die wetenskap daaragter nie, maar deur dit te doen, kan dit ongeveer 90 grade draai met slegs een spoel.

Ek sal die 12v tot 5v -reguleerder gebruik wat deel uitmaak van die L298N -bord wat ek gekies het om die ESP32 aan te dryf.

Al die LED -stroombane is opsioneel, sowel as die JST -verbindings. U kan die drade maklik aan die ESP32 en die motorbestuurder soldeer.

Stap 3: Kodeontwerp

Opstelling van kode

Ons sal Arduino moet instel om die ESP32 -bord te kan gebruik. Hier is 'n goeie gids wat u deur die ESP32 Arduino -opstelling kan lei.

U het ook die Arduino_SNMP -biblioteek hier nodig.

Om die kode op te stel, moet u inligting versamel.

  1. Router IP
  2. Maksimum oplaaisnelheid
  3. Maksimum aflaai spoed
  4. U WiFi -naam en wagwoord
  5. OID wat die oktettellings bevat vir "in" en "uit" op u routers WAN -koppelvlak

Daar is standaard OID's (Object Identifiers) vir die inligting wat ons wil hê. Volgens die MIB-2 standaard is die getalle wat ons wil hê:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Waar X die nommer is wat aan die koppelvlak toegewys is waaruit u die statistieke wil kry. Vir my is die nommer 3. Een manier om te bevestig dat dit die regte OID vir u is en om te identifiseer watter koppelvlaknommer u moet gebruik, is om 'n instrument soos MIB Browser te gebruik.

Ek het SpeedTest.net gebruik om maksimum snelhede te kry. sodra u die snelheid in Mbps het, moet u dit omskep in oktette met behulp van hierdie formule.

Oktette per sekonde = (Resultaat van spoedtoets in Mbps * 1048576) / 8

Kode Funksie

Die kode stuur 'n SNMP-aanvraag na die router. Die router antwoord dan met 'n nommer, die getal verteenwoordig die aantal oktette wat gestuur of ontvang is. Terselfdertyd teken ons die aantal millisekondes aan wat verloop het sedert die Arduino begin het.

Sodra hierdie proses ten minste twee keer plaasgevind het, kan ons die persentasie gebruik bereken op grond van ons maksimum waardes met behulp van hierdie kode

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

Die wiskunde verdeel so:

octetsDiff = snmp_result - Vorige_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second)/1000

Persent = (octetsDiff / MaxPosableOverTime) * 100

Noudat ons die persentasie netwerkverbruik het, hoef ons dit net aan die meter te skryf. Ons doen dit in 2 stappe. Eerstens gebruik ons die updateDownloadGauge -funksie. In hierdie funksie gebruik ons 'kaart' om die persentasie om te skakel na 'n getal wat 'n radiale posisie op die meter verteenwoordig. Dan gee ons die nommer aan die setMeterPosition -funksie om die naald na die nuwe posisie te skuif.

Stap 4: Case Design

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

Om alles te bevat, het ek 'n omhulsel in fusion360 ontwerp en dit 3D gedruk. Die ontwerp wat ek gemaak het, is relatief eenvoudig. Ek het warm gom gebruik om die komponente aan die binnekant vas te maak, en die meter word vasgehou deur tussen die voorblad en die agterblad vas te knyp. U hoef nie 3D -drukwerk te gebruik om die tas te skep nie. Byvoorbeeld, jy kan 'n boks van hout maak, of jy kan alles terugsit in die oorspronklike omhulsel waarin die meters ingekom het.

My STL -lêers is beskikbaar op thingiverse as u daarna wil kyk, maar dit is onwaarskynlik dat dit vir u sal werk, tensy u presies dieselfde meters kry as wat ek gebruik het.

Saaklêers:

Dankie vir die lees. Laat weet my as u vrae het, en ek sal my bes doen om dit te beantwoord.

Aanbeveel: