Innehållsförteckning:

Internethastighetsmätare: 4 steg (med bilder)
Internethastighetsmätare: 4 steg (med bilder)

Video: Internethastighetsmätare: 4 steg (med bilder)

Video: Internethastighetsmätare: 4 steg (med bilder)
Video: Создание Шаблона SNMP для Zabbix Принцип работы через MIB Browser и snmpwalk 2024, Juli
Anonim
Image
Image
Internethastighetsmätare
Internethastighetsmätare
Internethastighetsmätare
Internethastighetsmätare

Översikt

Denna "Internethastighetsmätare" ger dig nästan realtidsövervakning av din nätverksanvändning. Denna information är tillgänglig på webbgränssnittet för de flesta hemrouter. Men för att komma åt den måste du stoppa din nuvarande uppgift för att leta upp den.

Jag ville se denna information utan att behöva avbryta min nuvarande uppgift, visa den i ett format som var begripligt med en snabb blick och få informationen på ett sätt som skulle fungera med så många routrar som möjligt, så att andra kunde eventuellt använda den också.

Hur det gör sakerna

Jag bestämde mig för SNMP (Simple Network Management Protocol) som sättet att få informationen från routern. SNMP används i stor utsträckning i nätverksutrustning och om din enhet inte stöder det som standard kan DDWRT (open source router firmware) användas för att implementera SNMP.

För att visa informationen på ett lättförståeligt sätt använde jag en mätare från en bil. Fordonsmätare är utformade för att ge dig information utan att vara störande eller förvirrande, så att föraren kan hålla ögonen på vägen. Dessutom hade jag en del att ligga.

Eftersom detta skulle finnas på mitt skrivbord bestämde jag mig för att jag också skulle göra bakgrundsbelysningen RGB eftersom datortillbehör alla borde vara RGB. Höger?

Utmaningar

Mätarna som jag hade använde ett Air-Core-ställdon. Jag hade aldrig hört talas om dessa innan detta projekt.

Från Wikipedia: Luftkärnmätaren består av två oberoende, vinkelräta spolar som omger en ihålig kammare. En nålaxel sticker ut i kammaren, där en permanent magnet fästs på axeln. När strömmen flyter genom de vinkelräta spolarna överlagrar deras magnetfält och magneten är fri att anpassa sig till de kombinerade fälten.

Jag kunde inte hitta ett bibliotek för Arduino som stöder SNMP i chefskonfigurationen. SNMP har två huvudformer, agent och chef. Agenter svarar på förfrågan och chefer skickar förfrågan till agenter. Jag kunde få chefsfunktionaliteten att fungera genom att ändra Arduino_SNMP -biblioteket skapat av 0neblock. Jag har aldrig programmerat i C ++ annat än att få lysdioderna att blinka på en Arduino så om det finns problem med SNMP -biblioteket, meddela mig så ska jag försöka fixa dem, för nu fungerar det dock.

Dessutom är SNMP inte utformad för visning i realtid. Den avsedda användningen är för att spåra statistik och upptäcka avbrott. På grund av detta uppdateras informationen på routern bara var 5: e sekund (din enhet kan variera). Det är orsaken till fördröjningen mellan antalet på hastighetstestet och nålen som rör sig.

Steg 1: Verktyg och material

Verktyg och material
Verktyg och material
Verktyg och material
Verktyg och material
Verktyg och material
Verktyg och material
Verktyg och material
Verktyg och material
Kretsdesign
Kretsdesign

Vi behöver 3 fulla H-broar. Modellerna jag använde är Dual TB6612FNGand Dual L298N.

Varje Air-Core-ställdon kräver 2 fulla H-broar eftersom spolarna måste styras oberoende av varandra.

En av mätarna jag använder har en spole kortsluten till jord med en diod och ett motstånd. Jag är inte säker på vetenskapen bakom det, men gör det tillåter det att rotera cirka 90 grader med bara en spole driven.

Jag kommer att använda 12v till 5v regulatorn som är en del av L298N -kortet som jag valde för att driva ESP32.

Alla LED -kretsar är valfria, liksom JST -kontakterna. Du kan enkelt löda ledningarna direkt till ESP32 och motordrivrutinen.

Steg 3: Koddesign

Kodinställning

Vi måste konfigurera Arduino för att kunna använda ESP32 -kortet. Det finns en bra guide här som leder dig genom ESP32 Arduino -installationen.

Du behöver också Arduino_SNMP -biblioteket som finns här.

För att konfigurera koden måste du samla in lite information.

  1. Router -IP
  2. Max uppladdningshastighet
  3. Max nedladdningshastighet
  4. Ditt WiFi -namn och lösenord
  5. OID som innehåller oktetträkningarna för "in" och "out" på ditt routers WAN -gränssnitt

Det finns standard OID (Object Identifiers) för den information vi vill ha. Enligt MIB-2-standarden är siffrorna vi vill ha:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Där X är numret tilldelat gränssnittet du vill hämta statistiken från. För mig är detta nummer 3. Ett sätt att bekräfta att detta är rätt OID för dig och att identifiera vilket gränssnittsnummer du behöver använda, är att använda ett verktyg som MIB Browser.

För att få maxhastigheter använde jag SpeedTest.net. när du har dina hastigheter i Mbps måste du konvertera dem till oktetter med denna formel.

Oktetter per sekund = (Resultat från hastighetstest i Mbps * 1048576) / 8

Kod Funktion

Koden skickar en SNMP-begäran till routern. Routern svarar sedan med ett nummer, numret representerar antalet oktetter som har skickats eller mottagits. Samtidigt registrerar vi antalet millisekunder som har gått sedan Arduino startade.

När denna process har skett minst två gånger kan vi beräkna procentandelen av användning baserat på våra maxvärden med denna kod

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

Matematiken går sönder så här:

octetsDiff = snmp_result - Föregående_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second)/1000

Procent = (octetsDiff / MaxPosableOverTime) * 100

Nu när vi har andelen nätverksanvändning behöver vi bara skriva det till mätaren. Vi gör det i 2 steg. Först använder vi updateDownloadGauge -funktionen. I denna funktion använder vi "karta" för att konvertera procenttalet till ett tal som representerar en radianposition på mätaren. Sedan ger vi det numret till setMeterPosition -funktionen för att flytta nålen till den nya positionen.

Steg 4: Case Design

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

För att innehålla allt designade jag ett hölje i fusion360 och 3Dprintade det. Designen jag gjorde är relativt enkel. Jag använde varmt lim för att fästa komponenterna på insidan och mätaren hålls på plats genom att klämmas mellan frontluckan och bakstycket. Du behöver inte använda 3D -utskrift för att skapa fodralet. Till exempel kan du göra ett fodral av trä, eller så kan du lägga tillbaka allt i det ursprungliga fodralet som mätarna kom i.

Mina STL -filer är tillgängliga på thingiverse om du vill titta på dem men det är osannolikt att de fungerar för dig om du inte får exakt samma mätare som jag använde.

Ärenden:

Tack för att du läser. Låt mig veta om du har några frågor så ska jag göra mitt bästa för att svara.

Rekommenderad: