Innehållsförteckning:

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

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

Video: Internethastighetsmätare: 9 steg (med bilder)
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, November
Anonim
Image
Image
Planen
Planen

Med fullständig lockdown pågår i Indien har allt inklusive posttjänster stängts. Inga nya kretskortsprojekt, inga nya komponenter, ingenting! Så för att övervinna tristessen och för att hålla mig sysselsatt bestämde jag mig för att göra något av de delar som jag redan har hemma. Jag började söka från elektronikskräpet och hittade en gammal, trasig analog multimeter. Jag räddade "mätarrörelsen" från den och bestämde mig för att visa någon form av information men visste inte exakt vad. Först tänkte jag visa COVID-19-statistik men det finns redan många bättre projekt på internet. Dessutom uppdateras data efter några timmar och en stilla pekare på mätaren skulle vara tråkig. Jag ville ha data som ändras snabbt, ändras varje sekund. Jag bad om förslag på Instagram och en av mina följare svarade med Internet Speedometer. Det lät intressant och bestämde mig för att göra det!

I denna instruktionsbok kommer jag att visa dig hur jag tog data från min WiFi -router med SNMP och visade uppladdnings- och nedladdningshastigheter på mätaren.

Låt oss börja

Steg 1: Planen

Som alltid innan jag började med projektet gjorde jag lite research på internet. Jag hittade några projekt relaterade till detta ämne. De var av två slag. En som visade internethastighet genom att mäta "styrkan" för WiFi -signalen. Jag är ingen nätverksexpert men det här lät inte rätt. De andra mätte latensen och kategoriserade hastigheten som långsam, medel eller snabb. Latency är tidsfördröjningen mellan att skicka förfrågan och att få svaret, så det kan inte vara den faktiska representationen av internethastigheten. Vi kan kalla det en nätverksresponshastighet dock! Sedan fanns det legitima projekt som mätte tiden som krävs för att ladda ner några data och beräknade internethastigheten utifrån det.

Men det var i detta projekt (av Alistair) som jag lärde mig om Simple Network Management Protocol eller SNMP. Med SNMP kan vi kommunicera med WiFi -routern och få nödvändig data direkt från den. Lätt, eller hur? Faktiskt nej! Eftersom olika modeller av WiFi -routrar använder har olika inställningar och behöver mycket test och fel innan du äntligen får utgången. Var inte rädd. Jag kommer att förklara i korthet vad jag lärt mig om SNMP och de svårigheter jag mötte i de kommande stegen.

Så planen är att använda NodeMCU för att ansluta till WiFi -routern. Detta är stegen för att komma till den slutliga utdata:

  • Skicka en begäran till routern och begär den nödvändiga informationen
  • Få svar från routern
  • Analysera svaret och analysera nödvändig data från det
  • Konvertera "rå" data till begriplig information
  • Generera spänning proportionell mot internethastigheten för mätaren
  • Upprepa

Jag kommer att använda en DAC eller Digital to Analog Converter för att styra mätaren.

Steg 2: Saker du behöver

Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver

1x NodeMCU

1x Analog mätarrörelse

1x MPU4725 DAC

1x SPDT -omkopplare

1x 10k potentiometer

1x motstånd

Steg 3: Beräkning av fullskalig nedböjningsström

Beräkning av fullskalig nedböjningsström
Beräkning av fullskalig nedböjningsström
Beräkning av fullskalig nedböjningsström
Beräkning av fullskalig nedböjningsström

Obs! Hoppa till steg 7 för själva bygget!

Hoppa över det här steget om du redan känner till fullskalans avböjningsström för din mätare. Min mätare hade inget om det så jag var tvungen att beräkna. Men låt oss först snabbt se hur en sådan rörelse fungerar. Den består av en spole upphängd i ett magnetfält. När strömmen flyter genom spolen upplever den enligt Faradays lag en kraft. Spolen får rotera fritt i magnetfältet och det gör även pekaren som är fäst vid spolen. Storleken på strömmen som får pekaren att röra sig i "slutet av skalan" kallas fullskalig avböjningsström. Detta är också den maximala strömmen som måste få flöda genom spolen.

Det händer mycket mer men det här räcker för det vi gör. Vi har nu rörelsen. Den kan användas som en voltmeter genom att lägga till ett högt motstånd i serie med den eller som en Ammeter genom att lägga till ett litet motstånd parallellt med det. Vi kommer att använda den som en voltmeter för att visa spänningen proportionell mot internethastigheten. Så vi måste beräkna motståndet som ska läggas till i serie. För det måste vi först beräkna fullskalig avböjningsström.

  1. Välj ett högt motståndsvärde (som> 100k)
  2. Anslut den i serie med rörelsen och applicera en variabel spänning över den med hjälp av potten.
  3. Fortsätt öka spänningen långsamt tills pekaren når slutet av skalan.
  4. Använd en multimeter för att mäta strömmen som flyter igenom. Detta är fullskalig avböjningsström. (I = 150uA i mitt fall)

Vi använder en DAC som har utspänningsområdet från 0 till VCC (3,3V på grund av NodeMCU). Det betyder att när 3,3V appliceras på mätaren ska den peka i slutet av skalan. Detta kan hända när fullskalig avböjningsström strömmar genom kretsen när 3,3V appliceras. Med hjälp av Ohms lag ger 3.3/(fullskalig avböjningsström) värdet mot motstånd som ska infogas i serie.

Steg 4: Skapa SNMP GET -begäran

Skapa SNMP GET -begäran
Skapa SNMP GET -begäran
Skapa SNMP GET -begäran
Skapa SNMP GET -begäran
Skapa SNMP GET -begäran
Skapa SNMP GET -begäran

Simple Network Management Protocol (SNMP) är ett Internet Standard -protokoll för att samla in och organisera information om hanterade enheter på IP -nätverk och för att ändra den informationen för att ändra enhetens beteende. Enheter som vanligtvis stöder SNMP inkluderar kabelmodem, routrar, switchar, servrar, arbetsstationer, skrivare och mer. För denna version kommer vi att kommunicera med vår WiFi -router med SNMP och få nödvändig data.

Men först måste vi skicka en begäran som kallas en "GET -begäran" till routern med information om informationen som vi vill ha. GET Request -format visas på bilden. Begäran består av olika delar. Jag har markerat byte som du kanske vill ändra.

Observera att allt är hexadecimalt.

SNMP -meddelande -I mitt fall är hela meddelandets längd 40 (grå färg) som vid omvandling till hexadecimal är 0x28.

SNMP Community String - Värdet 'PUBLIC' skrivs hexadecimalt som '70 75 62 6C 69 63 'vars längd är 6 (gul).

SNMP PDU -typ - I mitt fall är meddelandets längd 27 (blå) dvs. 0x1B.

Varbind List Type - I mitt fall är meddelandets längd 16 (grön) dvs. 0x10.

Varbind Type - I mitt fall är meddelandets längd 14 (rosa) dvs. 0x0E.

Objektidentifierare -

Som nämnts tidigare har SNMP-aktiverade nätverksenheter (t.ex. routrar, switchar, etc.) en databas med systemstatus, tillgänglighet och prestandainformation som objekt, identifierade av OID: er. Du måste identifiera OID: erna för din router för uppladdnings- och nedladdningspaket. Det kan göras med en gratis MIB -webbläsare som den här.

Ange adress som 192.168.1.1 och OID som.1.3.6.1.2.1.2.2.1.10.x (ifInOctets) eller.1.3.6.1.2.1.2.2.1.16.x. (ifOutOctets). Välj Get operation och klicka på Go. Du bör se OID tillsammans med dess värde och typ.

I mitt fall är meddelandets längd 10 (röd) dvs 0x0A. Ersätt värdet med OID. I detta fall, '2B 06 01 02 01 02 02 01 10 10'

Det är allt! Ditt förfrågningsmeddelande är klart. Behåll resten av byte som de är.

Slå på SNMP på din router:

  • Logga in på din WiFi -routers sida via standardgatewayen. Skriv 192.168.1.1 i din webbläsare och tryck på enter. Som standard bör användarnamnet och lösenordet vara 'admin'.
  • Jag använder en TP-LINK (TD-W8961N) router. För denna router måste du gå till Access Management> SNMP och välja "Aktiverad".
  • GET Community: allmänheten
  • Fällvärd: 0.0.0.0

Steg 5: Förstå GET -svar

Förstå GET -svar
Förstå GET -svar

Du kan hoppa över det här steget, men det är bra att veta om du behöver göra lite felsökning.

När du har laddat upp koden och kör den kan du titta på svaret via seriemonitorn. Det ska se ut som på bilden. Det finns några byte du behöver leta efter som jag har markerat.

Börjar från 0, 15: e byte berättar för PDU -typen - 0xA2 betyder att det är en GetResponse.

48: e byte berättar datatypen - 0x41 betyder att datatypen är räknare.

49: e byte anger längden på data - 0x04 betyder att data är 4 byte långa.

Byte 50, 51, 52, 53 innehåller data.

Steg 6: Digital till analog omvandlare (DAC)

Digital till analog omvandlare (DAC)
Digital till analog omvandlare (DAC)

Mikrokontroller är digitala enheter som inte förstår analoga spänningar direkt. Jag använder en analog mätare som behöver en variabel spänning som ingång. Men mikrokontrollern kan bara mata ut HIGH (3.3V vid NodeMCU) och LOW (0V). Nu kanske du säger varför inte bara använda PWM. Det fungerar inte eftersom mätaren bara visar medelvärdet.

Jag använder MCP4725 DAC för att få variabel spänning. Det är en 12-bitars DAC, dvs i enkla termer kommer den att dela 0 till 3,3V i 4096 (= 2^12) delar. Upplösningen blir 3,3/4096 = 0,8056mV. Det betyder att 0 motsvarar 0V, 1 motsvarar 0,8056mV, 2 motsvarar 1,6112mV, ….., 4095 motsvarar 3,3V.

Internethastigheten kommer att 'mappas' från '0 till 7 mbps' till '0 till 4095' och sedan kommer detta värde att ges till DAC för att mata ut en spänning som kommer att vara proportionell mot internethastigheten.

Steg 7: Monteringen

Församlingen
Församlingen
Församlingen
Församlingen
Församlingen
Församlingen
Församlingen
Församlingen

Anslutningar är mycket enkla. Schemat har bifogats här.

Jag har designat och skrivit ut vågen. Den övre är för nedladdningshastighet och den nedre för uppladdningshastighet. Jag limmade den nya vågen över den gamla.

Jag tog bort alla gamla saker från multimetern och jag tappade ihop allt i den. Det passade bra. Jag var tvungen att borra ett hål i fronten för att fästa vippomkopplaren som används för att välja mellan uppladdnings- och nedladdningshastighet.

Steg 8: Dags för kodning

Dags för kodning
Dags för kodning
Dags för kodning
Dags för kodning
Dags för kodning
Dags för kodning

Koden har bifogats här. Ladda ner och öppna den i Arduino IDE. Installera MCP4725 -biblioteket från Adafruit.

Innan du laddar upp:

  1. Ange ditt WiFi SSID och lösenord
  2. Ange maximal uppladdnings- och nedladdningshastighet som nämns på vågen.
  3. Gör nödvändiga ändringar i begäran array för nedladdning samt ladda upp paket.
  4. Kommentera rad 165 för att se svar på seriell bildskärm.

Hit uppladdning!

Steg 9: Njut

Slå på den och njut av att se nålen dansa runt när du surfar på internet!

Tack för att du håller dig till slutet. Hoppas ni alla älskar det här projektet och lärde er något nytt idag. Låt mig veta om du gör en själv. Prenumerera på min YouTube -kanal för fler sådana projekt.

Rekommenderad: