Innehållsförteckning:
- Steg 1: Planen
- Steg 2: Saker du behöver
- Steg 3: Beräkning av fullskalig nedböjningsström
- Steg 4: Skapa SNMP GET -begäran
- Steg 5: Förstå GET -svar
- Steg 6: Digital till analog omvandlare (DAC)
- Steg 7: Monteringen
- Steg 8: Dags för kodning
- Steg 9: Njut
Video: Internethastighetsmätare: 9 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
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
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
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.
- Välj ett högt motståndsvärde (som> 100k)
- Anslut den i serie med rörelsen och applicera en variabel spänning över den med hjälp av potten.
- Fortsätt öka spänningen långsamt tills pekaren når slutet av skalan.
- 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
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
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)
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
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
Koden har bifogats här. Ladda ner och öppna den i Arduino IDE. Installera MCP4725 -biblioteket från Adafruit.
Innan du laddar upp:
- Ange ditt WiFi SSID och lösenord
- Ange maximal uppladdnings- och nedladdningshastighet som nämns på vågen.
- Gör nödvändiga ändringar i begäran array för nedladdning samt ladda upp paket.
- 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:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen
Internethastighetsmätare: 4 steg (med bilder)
Internethastighetsmätare: ÖversiktThis " Internet Speed Gauge " ger dig nära övervakning av din nätverksanvändning i realtid. 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 gå