Turinys:

Interneto spidometras: 9 žingsniai (su nuotraukomis)
Interneto spidometras: 9 žingsniai (su nuotraukomis)

Video: Interneto spidometras: 9 žingsniai (su nuotraukomis)

Video: Interneto spidometras: 9 žingsniai (su nuotraukomis)
Video: Kaip sukurti interneto svetainę nemokamai - VISI ŽINGSNIAI iki realaus paleidimo 2024, Lapkritis
Anonim
Image
Image
Planas
Planas

Indijoje visiškas uždarymas, viskas, įskaitant pašto paslaugas, buvo uždaryta. Jokių naujų PCB projektų, jokių naujų komponentų, nieko! Taigi, norėdamas įveikti nuobodulį ir užsiimti savimi, nusprendžiau padaryti kažką iš tų dalių, kurias jau turiu namuose. Pradėjau ieškoti iš krūvos elektronikos šiukšlių ir radau seną, sugedusį analoginį multimetrą. Išgelbėjau „skaitiklio judesį“ir nusprendžiau parodyti tam tikrą informaciją, bet tiksliai nežinojau, ką. Pirma, sumaniau parodyti COVID-19 statistiką, tačiau internete jau yra daug geresnių projektų. Be to, duomenys atnaujinami po kelių valandų, o nejudantis skaitiklio rodyklė būtų nuobodi. Norėjau duomenų, kurie greitai keičiasi, keičiasi kas sekundę. Aš paprašiau pasiūlymų „Instagram“, o vienas iš mano pasekėjų atsakė naudodamas interneto spidometrą. Skambėjo įdomiai ir nusprendžiau tai padaryti!

Šioje instrukcijoje aš jums parodysiu, kaip paėmiau duomenis iš savo „WiFi“maršrutizatoriaus, naudodamas SNMP, ir rodiau įkėlimo ir atsisiuntimo greitį matuoklyje.

Pradėkime

1 žingsnis: planas

Kaip visada prieš pradėdamas projektą, šiek tiek tyrinėjau internete. Radau keletą projektų, susijusių su šia tema. Jie buvo dviejų rūšių. Vienas, kuris parodė interneto greitį matuojant „WiFi“signalo „stiprumą“. Nesu tinklų ekspertas, tačiau tai neatrodė teisinga. Kiti matavo delsą ir greitį suskirstė į lėtą, vidutinį ar greitą. Vėlavimas yra laiko tarpas nuo užklausos išsiuntimo iki atsakymo gavimo, todėl jis negali būti tikrasis interneto greičio vaizdas. Tačiau mes galime tai vadinti tinklo atsako greičiu! Tada buvo teisėti projektai, kurie įvertino tam tikrų duomenų atsisiuntimui reikalingą laiką ir pagal tai apskaičiavo interneto greitį.

Tačiau būtent šiame projekte („Alistair“) sužinojau apie paprastą tinklo valdymo protokolą arba SNMP. Naudodamiesi SNMP, galime bendrauti su „WiFi“maršrutizatoriumi ir gauti reikiamus duomenis tiesiai iš jo. Lengva, tiesa? Tiesą sakant, ne! Kadangi skirtingi „WiFi“maršrutizatorių modeliai turi skirtingus nustatymus ir jiems reikia daug bandymų ir klaidų, kol galiausiai gausite išvestį. Nebijok. Trumpai paaiškinsiu viską, ką sužinojau apie SNMP ir sunkumus, su kuriais susidūriau artimiausiais žingsniais.

Taigi planas yra naudoti „NodeMCU“prisijungti prie „WiFi“maršrutizatoriaus. Norėdami pasiekti galutinį rezultatą, atlikite šiuos veiksmus:

  • Siųskite užklausą maršrutizatoriui, „prašydami“reikalingų duomenų
  • Gaukite atsakymą iš maršrutizatoriaus
  • Analizuokite atsakymą ir išanalizuokite iš jo reikalingus duomenis
  • „Neapdorotus“duomenis paverskite suprantama informacija
  • Sukurkite skaitiklio įtampą, proporcingą interneto greičiui
  • Pakartokite

Skaitikliui valdyti naudosiu DAC arba skaitmeninį -analoginį keitiklį.

2 žingsnis: reikalingi dalykai

Dalykai, kurių jums prireiks
Dalykai, kurių jums prireiks
Dalykai, kurių jums prireiks
Dalykai, kurių jums prireiks
Dalykai, kurių jums prireiks
Dalykai, kurių jums prireiks

1x „NodeMCU“

1x analoginio skaitiklio judesys

1x MPU4725 DAC

1x SPDT jungiklis

1x 10k potenciometras

1x rezistorius

3 žingsnis: Apskaičiuokite visos sklaidos srovę

Skaičiuojama visa skalės deformacijos srovė
Skaičiuojama visa skalės deformacijos srovė
Skaičiuojama visa skalės deformacijos srovė
Skaičiuojama visa skalės deformacijos srovė

Pastaba: pereikite prie 7 veiksmo, kad gautumėte faktinį kūrimą!

Praleiskite šį veiksmą, jei jau žinote visą savo skaitiklio įlinkio srovę. Mano skaitiklis apie tai nebuvo užsiminęs, todėl turėjau apskaičiuoti. Bet pirmiausia greitai pažiūrėkime, kaip toks judėjimas veikia. Jį sudaro ritė, pakabinta magnetiniame lauke. Kai srovė teka per ritę, pagal Faradėjaus įstatymą, ji patiria jėgą. Ritei leidžiama laisvai suktis magnetiniame lauke, taip pat rodyklė, pritvirtinta prie ritės. Srovės dydis, dėl kurio rodyklė juda „skalės gale“, vadinama visos skalės deformacijos srove. Tai taip pat yra didžiausia srovė, kurią reikia leisti tekėti per ritę.

Vyksta daug daugiau, bet to užtenka tam, ką darome. Dabar turime judėjimą. Jis gali būti naudojamas kaip voltmetras, kartu su juo pridėjus didelį atsparumą, arba kaip ampermetras, lygiagrečiai pridedant mažą varžą. Mes jį naudosime kaip voltmetrą, kad parodytume įtampą, proporcingą interneto greičiui. Taigi, mes turime apskaičiuoti pasipriešinimą, kuris turi būti pridėtas nuosekliai. Tam pirmiausia turime apskaičiuoti visos skalės deformacijos srovę.

  1. Pasirinkite didelę atsparumo vertę (pvz.,> 100k)
  2. Prijunkite jį nuosekliai su judesiu ir naudokite kintamą įtampą, naudodami puodą.
  3. Lėtai didinkite įtampą, kol rodyklė pasieks skalės pabaigą.
  4. Naudodami multimetrą išmatuokite srovę. Tai yra visos apimties deformacijos srovė. (I = 150uA mano atveju)

Mes naudojame DAC, kurio išėjimo įtampa yra nuo 0 iki VCC (3,3 V dėl „NodeMCU“). Tai reiškia, kad kai matuokliui įjungiama 3,3 V įtampa, jis turi būti nukreiptas į skalės pabaigą. Tai gali atsitikti, kai grandinėje teka visa skalės deformacijos srovė, kai naudojama 3.3V įtampa. Naudojant Omo dėsnį, 3.3/(visos skalės deformacijos srovė) suteikia atsparumo vertę, kuri turi būti įterpta nuosekliai.

4 veiksmas: sukurkite SNMP GET užklausą

Kuriama SNMP GET užklausa
Kuriama SNMP GET užklausa
Kuriama SNMP GET užklausa
Kuriama SNMP GET užklausa
Kuriama SNMP GET užklausa
Kuriama SNMP GET užklausa

Paprastas tinklo valdymo protokolas (SNMP) yra interneto standartinis protokolas, skirtas rinkti ir tvarkyti informaciją apie valdomus įrenginius IP tinkluose ir keisti šią informaciją, kad būtų pakeista įrenginio elgsena. Įrenginiai, kurie paprastai palaiko SNMP, yra kabeliniai modemai, maršrutizatoriai, komutatoriai, serveriai, darbo vietos, spausdintuvai ir kt. Norėdami tai padaryti, mes bendrausime su „WiFi“maršrutizatoriumi naudodami SNMP ir gausime reikiamus duomenis.

Tačiau pirmiausia turime nusiųsti maršrutizatoriui užklausą, vadinamą „GET Request“, nurodydami norimų duomenų informaciją. GET užklausos formatas parodytas paveikslėlyje. Prašymą sudaro įvairios dalys. Aš pabrėžiau baitus, kuriuos galbūt norėsite pakeisti.

Atminkite, kad viskas pateikiama šešioliktainiais skaičiais.

SNMP pranešimas -Mano atveju, viso pranešimo ilgis yra 40 (pilka spalva), kuris, pavertus šešioliktainiu, yra 0x28.

SNMP bendruomenės eilutė - reikšmė „PUBLIC“rašoma šešioliktainiu skaičiumi kaip „70 75 62 6C 69 63“, kurios ilgis yra 6 (geltona).

SNMP PDU tipas - mano atveju pranešimo ilgis yra 27 (mėlynas), ty 0x1B.

Varbindo sąrašo tipas - mano atveju pranešimo ilgis yra 16 (žalias), ty 0x10.

Varbind tipas - mano atveju pranešimo ilgis yra 14 (rožinis), ty 0x0E.

Objekto identifikatorius -

Kaip minėta anksčiau, tinklo įrenginiai, palaikantys SNMP (pvz., Maršrutizatoriai, jungikliai ir kt.), Tvarko sistemos būsenos, prieinamumo ir našumo informacijos duomenų bazę kaip objektus, identifikuojamus OID. Norėdami įkelti ir atsisiųsti paketus, turite nustatyti maršrutizatoriaus OID. Tai galima padaryti naudojant nemokamą MIB naršyklę, tokią kaip ši.

Įveskite adresą kaip 192.168.1.1 ir OID kaip.1.3.6.1.2.1.2.2.1.10.x („ifInOctets“) arba.1.3.6.1.2.1.2.2.1.16.x. (ifOutOctets). Pasirinkite Gauti operaciją ir spustelėkite Eiti. Turėtumėte pamatyti OID kartu su jo verte ir tipu.

Mano atveju pranešimo ilgis yra 10 (raudonas), ty 0x0A. Pakeiskite vertę OID. Šiuo atveju „2B 06 01 02 01 02 02 01 10 10“

Viskas! Jūsų užklausos pranešimas yra paruoštas. Likusius baitus palikite tokius, kokie jie yra.

SNMP įjungimas maršrutizatoriuje:

  • Prisijunkite prie „WiFi“maršrutizatoriaus puslapio naudodami numatytąjį šliuzą. Naršyklėje įveskite 192.168.1.1 ir paspauskite „Enter“. Pagal numatytuosius nustatymus vartotojo vardas ir slaptažodis turi būti „admin“.
  • Aš naudoju TP-LINK (TD-W8961N) maršrutizatorių. Norėdami naudoti šį maršrutizatorių, turite eiti į Prieigos valdymas> SNMP ir pasirinkti „Aktyvinta“.
  • GET bendruomenė: vieša
  • Spąstų šeimininkas: 0.0.0.0

5 veiksmas: supraskite GET Response

„GET Response“supratimas
„GET Response“supratimas

Galite praleisti šį veiksmą, tačiau gerai žinoti, ar reikia atlikti trikčių šalinimą.

Įkėlę kodą ir jį paleidę, galite pažvelgti į atsakymą per serijinį monitorių. Tai turėtų atrodyti taip, kaip parodyta paveikslėlyje. Turite ieškoti kelių baitų, kuriuos pabrėžiau.

Pradedant nuo 0, 15 baitas nurodo PDU tipą - 0xA2 reiškia, kad tai yra „GetResponse“.

48 baitas nurodo duomenų tipą - 0x41 reiškia, kad duomenų tipas yra skaitiklis.

49 baitas nurodo duomenų ilgį - 0x04 reiškia, kad duomenys yra 4 baitų ilgio.

50, 51, 52, 53 baituose yra duomenys.

6 veiksmas: skaitmeninio į analoginį keitiklį (DAC)

Skaitmeninis į analoginį keitiklis (DAC)
Skaitmeninis į analoginį keitiklis (DAC)

Mikrovaldikliai yra skaitmeniniai įrenginiai, kurie tiesiogiai nesupranta analoginės įtampos. Aš naudoju analoginį matuoklį, kurio įvestis reikalauja kintamos įtampos. Tačiau mikrovaldiklis gali tiesiog išvesti HIGH (3,3 V „NodeMCU“atveju) ir LOW (0 V). Dabar galite pasakyti, kodėl nenaudokite PWM. Tai neveiks, nes skaitiklis rodys tik vidutinę vertę.

Aš naudoju MCP4725 DAC, kad gaučiau kintamą įtampą. Tai yra 12 bitų DAC, ty paprastai tariant, jis padalins nuo 0 iki 3.3V į 4096 (= 2^12) dalis. Skiriamoji geba bus 3,3/4096 = 0,8056 mV. Tai reiškia, kad 0 atitinka 0 V, 1 - 0,8056 mV, 2 - 1,6112 mV,….., 4095 atitinka 3,3 V.

Interneto greitis bus „susietas“nuo „0 iki 7 Mbps“iki „0 iki 4095“, tada ši vertė bus suteikta DAC, kad išvestų įtampą, kuri bus proporcinga interneto greičiui.

7 žingsnis: surinkimas

Asamblėja
Asamblėja
Asamblėja
Asamblėja
Asamblėja
Asamblėja
Asamblėja
Asamblėja

Sujungimai yra labai paprasti. Schema pridėta čia.

Suprojektavau ir atspausdinau svarstykles. Viršutinis yra skirtas atsisiuntimo greičiui, o apatinis - įkėlimo greičiui. Aš priklijavau naują skalę ant senosios.

Pašalinau visus senus daiktus iš multimetro ir viską sutraukiau. Buvo tvirtai prigludęs. Priekyje turėjau išgręžti skylę, kad pritvirtinčiau perjungimo jungiklį, kuris naudojamas pasirinkti tarp įkėlimo ir atsisiuntimo greičio.

8 žingsnis: laikas koduoti

Laikas kodavimui
Laikas kodavimui
Laikas kodavimui
Laikas kodavimui
Laikas kodavimui
Laikas kodavimui

Kodas buvo pridėtas čia. Atsisiųskite ir atidarykite jį „Arduino IDE“. Įdiekite MCP4725 biblioteką iš „Adafruit“.

Prieš įkeldami:

  1. Įveskite „WiFi“SSID ir slaptažodį
  2. Įveskite didžiausią skalėje nurodytą įkėlimo ir atsisiuntimo greitį.
  3. Atlikite reikiamus atsisiuntimų užklausų masyvo pakeitimus ir įkelkite paketus.
  4. Atmeskite 165 eilutę, kad peržiūrėtumėte atsakymą serijiniame monitoriuje.

Paspauskite įkėlimą!

9 žingsnis: Mėgaukitės

Įjunkite maitinimą ir mėgaukitės žiūrėdami, kaip adata šoka, kai naršote internete!

Ačiū, kad laikėtės iki galo. Tikiuosi, kad jums visiems patinka šis projektas ir šiandien sužinojote kažką naujo. Praneškite man, jei padarysite vieną sau. Prenumeruokite mano „YouTube“kanalą, kad gautumėte daugiau tokių projektų.

Rekomenduojamas: