Inhoudsopgave:

Internetsnelheidsmeter: 4 stappen (met afbeeldingen)
Internetsnelheidsmeter: 4 stappen (met afbeeldingen)

Video: Internetsnelheidsmeter: 4 stappen (met afbeeldingen)

Video: Internetsnelheidsmeter: 4 stappen (met afbeeldingen)
Video: Afbeeldingen verkleinen, uitsnijden en comprimeren | Photoshop en Afbeeldingen 2024, November
Anonim
Image
Image
Internetsnelheidsmeter
Internetsnelheidsmeter
Internetsnelheidsmeter
Internetsnelheidsmeter

Overzicht

Deze "Internetsnelheidsmeter" geeft u bijna realtime overzicht van uw netwerkgebruik. Deze informatie is beschikbaar op de webinterface van de meeste thuisrouters. Om toegang te krijgen, moet u echter uw huidige taak stoppen om deze op te zoeken.

Ik wilde deze informatie bekijken zonder mijn huidige taak te onderbreken, deze weergeven in een formaat dat in één oogopslag begrijpelijk was, en de informatie op een manier krijgen die met zoveel mogelijk routers zou werken, zodat anderen mogelijk ook gebruiken.

Hoe het de dingen doet?

Ik koos voor SNMP (Simple Network Management Protocol) als de manier om de informatie van de router te krijgen. SNMP wordt veel gebruikt in netwerkapparatuur en als uw apparaat dit niet standaard ondersteunt, kan DDWRT (open source router-firmware) worden gebruikt om SNMP te implementeren.

Om de informatie op een begrijpelijke manier weer te geven heb ik een meter uit een auto gebruikt. Autometers zijn ontworpen om u informatie te geven zonder af te leiden of verwarrend te zijn, zodat de bestuurder zijn ogen op de weg kan houden. Ik had ook nog wat liggen.

Aangezien dit op mijn bureau zou staan, besloot ik dat ik ook de achtergrondverlichting RGB zou maken, omdat computeraccessoires allemaal RGB zouden moeten zijn. Rechts?

Uitdagingen

De meters die ik had gebruiken een Air-Core-actuator. Ik had er voor dit project nog nooit van gehoord.

Van Wikipedia: De luchtkernmeter bestaat uit twee onafhankelijke, loodrechte spoelen die een holle kamer omringen. Een naaldschacht steekt uit in de kamer, waar een permanente magneet op de schacht is bevestigd. Wanneer stroom door de loodrechte spoelen stroomt, superponeren hun magnetische velden en kan de magneet vrij worden uitgelijnd met de gecombineerde velden.

Ik kon geen bibliotheek voor Arduino vinden die SNMP ondersteunde in de managerconfiguratie. SNMP heeft twee hoofdvormen, agent en manager. Agenten reageren op verzoeken en managers sturen verzoeken naar agenten. Ik kon de managerfunctionaliteit werkend krijgen door de Arduino_SNMP-bibliotheek te wijzigen die door 0neblock is gemaakt. Ik heb nooit in C++ geprogrammeerd, behalve dat LED's knipperen op een Arduino, dus als er problemen zijn met de SNMP-bibliotheek, laat het me weten en ik zal proberen ze te repareren, want nu werkt het echter.

Bovendien is SNMP niet ontworpen voor realtime weergave. Het beoogde gebruik is voor het bijhouden van statistieken en het detecteren van storingen. Hierdoor wordt de informatie op de router slechts ongeveer elke 5 seconden bijgewerkt (uw apparaat kan variëren). Dat is de oorzaak van de vertraging tussen het getal op de snelheidstest en het bewegen van de naald.

Stap 1: Gereedschappen en materialen

Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Circuit ontwerp
Circuit ontwerp

We hebben 3 volledige H-bruggen nodig. De modellen die ik heb gebruikt zijn Dual TB6612FNG en Dual L298N.

Elke Air-Core-actuator vereist 2 volledige H-bruggen omdat de spoelen onafhankelijk moeten worden aangestuurd.

Een van de meters die ik gebruik heeft een spoel die is kortgesloten naar aarde met een diode en een weerstand. Ik ben niet zeker van de wetenschap erachter, maar door dat te doen, kan het ongeveer 90 graden draaien met slechts één spoel aangedreven.

Ik zal de 12v tot 5v-regelaar gebruiken die deel uitmaakt van het L298N-bord dat ik heb geselecteerd om de ESP32 van stroom te voorzien.

Alle LED-circuits zijn optioneel, evenals de JST-connectoren. U kunt de draden gemakkelijk rechtstreeks op ESP32 en motordriver solderen.

Stap 3: Code-ontwerp

Code instellen

We moeten Arduino instellen om het ESP32-bord te kunnen gebruiken. Er is hier een goede gids die u door de ESP32 Arduino-configuratie leidt.

U hebt ook de Arduino_SNMP-bibliotheek nodig die zich hier bevindt.

Om de code te configureren, moet u wat informatie verzamelen.

  1. Router-IP
  2. Maximale uploadsnelheid
  3. Maximale downloadsnelheid
  4. Uw wifi-naam en wachtwoord
  5. OID die de octettellingen voor "in" en "out" bevat op de WAN-interface van uw router

Er zijn standaard OID's (Object Identifiers) voor de informatie die we willen. Volgens de MIB-2-standaard zijn de nummers die we willen:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Waarbij X het nummer is dat is toegewezen aan de interface waarvan u de statistieken wilt krijgen. Voor mij is dat nummer 3. Een manier om te bevestigen dat dit de juiste OID voor u is en om te bepalen welk interfacenummer u moet gebruiken, is door een tool zoals MIB Browser te gebruiken.

Om maximale snelheden te krijgen, heb ik SpeedTest.net gebruikt. zodra u uw snelheden in Mbps hebt, moet u ze met deze formule in octetten converteren.

Octetten per seconde = (Resultaat van snelheidstest in Mbps * 1048576) / 8

Code Functie:

De code stuurt een SNMP get-request naar de router. De router antwoordt dan met een nummer, het nummer staat voor het aantal octetten dat is verzonden of ontvangen. Tegelijkertijd registreren we het aantal milliseconden dat is verstreken sinds de Arduino is gestart.

Zodra dit proces minstens twee keer is gebeurd, kunnen we het percentage van het gebruik berekenen op basis van onze maximale waarden met behulp van deze code

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

De wiskunde valt als volgt uiteen:

octetsDiff = snmp_result - Vorige_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second)/1000

Percentage = (octetsDiff / MaxPosableOverTime) * 100

Nu we het percentage netwerkgebruik hebben, hoeven we het alleen maar naar de meter te schrijven. Dat doen we in 2 stappen. Eerst gebruiken we de updateDownloadGauge-functie. In deze functie gebruiken we "kaart" om het percentage om te zetten in een getal dat een radiale positie op de meter vertegenwoordigt. Vervolgens geven we dat nummer aan de functie setMeterPosition om de naald naar de nieuwe positie te verplaatsen.

Stap 4: Case-ontwerp

Kastontwerp
Kastontwerp
Kastontwerp
Kastontwerp
Kastontwerp
Kastontwerp

Om alles te bevatten, heb ik een behuizing in fusion360 ontworpen en deze in 3D geprint. Het ontwerp dat ik heb gemaakt is relatief eenvoudig. Ik heb hete lijm gebruikt om de componenten aan de binnenkant te bevestigen en de meter wordt op zijn plaats gehouden door tussen de voorklep en de achterklep te knijpen. U hoeft geen 3D-printing te gebruiken om de case te maken. Je zou bijvoorbeeld een koffer van hout kunnen maken, of je zou alles terug kunnen zetten in de originele koffer waarin de meters kwamen.

Mijn STL-bestanden zijn beschikbaar op thingiverse als je ze wilt bekijken, maar het is onwaarschijnlijk dat ze voor jou zullen werken, tenzij je exact dezelfde meters krijgt die ik heb gebruikt.

Dossiers:

Bedankt voor het lezen. Laat het me weten als je vragen hebt en ik zal mijn best doen om te antwoorden.

Aanbevolen: