Ինտերնետի արագաչափ. 4 քայլ (նկարներով)
Ինտերնետի արագաչափ. 4 քայլ (նկարներով)
Anonim

Ակնարկ

Այս «Ինտերնետի արագաչափը» ձեզ հնարավորություն կտա իրական ժամանակում վերահսկել ձեր ցանցի օգտագործումը: Այս տեղեկատվությունը հասանելի է տնային երթուղիչների մեծ մասի վեբ ինտերֆեյսում: Այնուամենայնիվ, դրան մուտք գործելը պահանջում է դադարեցնել ձեր ընթացիկ առաջադրանքը ՝ այն փնտրելու համար:

Ես ուզում էի դիտել այս տեղեկատվությունը ՝ առանց իմ ընթացիկ առաջադրանքը ընդհատելու, ցուցադրելու այն ձևաչափով, որը հասկանալի էր միայն արագ հայացքով, և տեղեկատվությունը ստանալ այնպես, որ հնարավորինս շատ երթուղիչների հետ աշխատեր, որպեսզի մյուսները կարողանային հնարավոր է նաև օգտագործել այն:

Ինչպես է դա անում իրերը

Ես որոշեցի SNMP- ը (Simple Network Management Protocol) որպես երթուղիչից տեղեկատվություն ստանալու միջոց: SNMP- ը լայնորեն օգտագործվում է ցանցային սարքավորումների մեջ, և եթե ձեր սարքը այն լռելյայն չի աջակցում, DDWRT- ը (բաց կոդով երթուղիչի որոնվածը) կարող է օգտագործվել SNMP- ի իրականացման համար:

Տեղեկատվությունը հեշտ հասկանալի ձևով ցուցադրելու համար ես օգտագործեցի մեքենայի չափիչ: Ավտոմոբիլային չափիչ սարքերը նախատեսված են ձեզ տեղեկատվություն տալու համար, առանց շեղելու կամ շփոթեցնելու, այնպես որ վարորդը կարող է աչքերը պահել ճանապարհի վրա: Բացի այդ, ես որոշ պառկեցի շուրջս:

Քանի որ սա գրասեղանիս վրա էր, որոշեցի նաև հետևի լույսը RGB դարձնել, քանի որ համակարգչի պարագաները բոլորը պետք է լինեն RGB: Ճիշտ?

Մարտահրավերներ

Չափիչները, որոնք ես ունեի, օգտագործում էին Air-Core ակտիվացուցիչ: Նախքան այս նախագիծը ես երբեք չէի լսել դրանց մասին:

Վիքիպեդիայից. Օդի միջուկի չափիչը բաղկացած է երկու անկախ, ուղղահայաց կծիկներից, որոնք շրջապատում են խոռոչի խցիկը: Ասեղի լիսեռը դուրս է գալիս խցիկ, որտեղ մշտական մագնիսը ամրացված է լիսեռին: Երբ հոսանքը հոսում է ուղղահայաց ոլորունների միջով, դրանց մագնիսական դաշտերը գերակշռում են, և մագնիսը ազատորեն համընկնում է համակցված դաշտերի հետ:

Ես չկարողացա Arduino- ի համար գտնել այնպիսի գրադարան, որն աջակցում էր SNMP- ը կառավարչի կազմաձևում: SNMP- ն ունի երկու հիմնական ձև ՝ գործակալ և կառավարիչ: Գործակալները պատասխանում են խնդրանքին, և ղեկավարները հարցում են ուղարկում գործակալներին: Ես կարողացա կառավարչի գործառույթն աշխատել `փոփոխելով 0neblock- ի կողմից ստեղծված Arduino_SNMP գրադարանը: Ես երբեք չեմ ծրագրավորել C ++ - ում, բացի LED- ների առկայծումը Arduino- ում, այնպես որ, եթե SNMP գրադարանի հետ կապված խնդիրներ կան, ինձ տեղյակ պահեք և կփորձեմ դրանք շտկել, առայժմ այն, սակայն, աշխատում է:

Բացի այդ, SNMP- ը նախատեսված չէ իրական ժամանակի դիտման համար: Նախատեսված օգտագործումը վիճակագրությանը հետևելու և խափանումների հայտնաբերման համար է: Դրա պատճառով երթուղղիչի մասին տեղեկությունները թարմացվում են միայն մոտ 5 վայրկյանը մեկ (ձեր սարքը կարող է տարբեր լինել): Դա արագության փորձարկման թվի և ասեղի շարժման միջև ուշացման պատճառն է:

Քայլ 1: Գործիքներ և նյութեր

Մեզ անհրաժեշտ կլինի 3 լիարժեք H կամուրջ: Իմ օգտագործած մոդելներն են Dual TB6612FNGand Dual L298N:

Օդային միջուկի յուրաքանչյուր շարժիչ պահանջում է 2 լրիվ H կամուրջ, քանի որ կծիկներն անհրաժեշտ է ինքնուրույն վերահսկել:

Չափիչներից մեկը, որն օգտագործում եմ, ունի մեկ կծիկ, որը կարճացված է գետնին ՝ դիոդով և դիմադրիչով: Ես համոզված չեմ դրա հիմքում ընկած գիտության մեջ, բայց դա անելը թույլ է տալիս պտտվել մոտ 90 աստիճան միայն մեկ կծիկով:

Ես կօգտագործեմ 12v- ից 5v կարգավորիչ, որը L298N տախտակի մի մասն է, որը ես ընտրել եմ ESP32- ը սնուցելու համար:

Բոլոր LED սխեմաներն ընտրովի են, ինչպես նաև JST միակցիչները: Դուք հեշտությամբ կարող եք լարերը միացնել ուղղակիորեն ESP32- ին և շարժիչի վարորդին:

Քայլ 3: Կոդի ձևավորում

Կոդի կարգավորում

Մենք պետք է կարգավորենք Arduino- ն, որպեսզի կարողանանք օգտագործել ESP32 տախտակը: Այստեղ կա մի լավ ուղեցույց, որը ձեզ կտանի ESP32 Arduino- ի կարգավորումների միջոցով:

Ձեզ նույնպես պետք կգա այստեղ տեղակայված Arduino_SNMP գրադարանը:

Կոդը կազմաձևելու համար ձեզ հարկավոր է որոշակի տեղեկատվություն հավաքել:

  1. Ուղղորդիչի IP
  2. Բեռնման առավելագույն արագություն
  3. Ներբեռնման առավելագույն արագություն
  4. Ձեր WiFi անունը և գաղտնաբառը
  5. OID- ը, որը պարունակում է օկտետների հաշվարկը ձեր մուտքի և ելքի համար WAN ինտերֆեյսում

Կան ստանդարտ OID (օբյեկտի նույնացուցիչներ) մեր ուզած տեղեկատվության համար: Ըստ MIB-2 ստանդարտի, մեր ուզած թվերն են.

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

Որտեղ X- ն այն թիվն է, որը նշանակված է ինտերֆեյսի վրա, որից ցանկանում եք ստանալ վիճակագրությունը: Ինձ համար այդ թիվը 3 -ն է: Հաստատելու, որ սա ձեզ համար ճիշտ OID- ն է և որոշելու համար, թե որ ինտերֆեյսի համարն է անհրաժեշտ օգտագործել, դա միջոց է օգտագործել այնպիսի գործիք, ինչպիսին է MIB Browser- ը:

Առավելագույն արագություն ստանալու համար ես օգտագործեցի SpeedTest.net- ը: Մբիթ / վ արագություն ստանալուց հետո դրանք պետք է փոխարկեք օկտետների ՝ օգտագործելով այս բանաձևը:

Օկտետներ վայրկյանում = (Արագության թեստի արդյունք Մբիթ / վրկ * 1048576) / 8

Կոդի գործառույթ

Կոդն ուղարկում է SNMP get-request երթուղիչին: Այնուհետև երթուղիչը պատասխանում է թվով, թիվը ներկայացնում է ուղարկված կամ ստացված ութնյակների թիվը: Միևնույն ժամանակ, մենք գրանցում ենք միլիվայրկյանների թիվը, որոնք անցել են Arduino- ի մեկնարկից ի վեր:

Երբ այս գործընթացը տեղի ունենա առնվազն երկու անգամ, մենք կարող ենք հաշվարկել օգտագործման տոկոսը `ելնելով մեր առավելագույն արժեքներից` օգտագործելով այս ծածկագիրը

տոկոսային իջեցում = ((float) (byteDown - byteDownLast)/(float) (maxDown * ((millis () - timeLast)/1000))) * 100;

Մաթեմատիկան քանդվում է այսպես.

octetsDiff = snmp_result - Նախորդ_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (ժամկետը * Octets_per_second)/1000

Տոկոս = (octetsDiff / MaxPosableOverTime) * 100

Այժմ, երբ մենք ունենք ցանցի օգտագործման տոկոսը, մենք պարզապես պետք է այն գրենք չափիչին: Մենք դա անում ենք 2 քայլով: Սկզբում մենք օգտագործում ենք updateDownloadGauge գործառույթը: Այս գործառույթում մենք օգտագործում ենք «քարտեզ» ՝ տոկոսը փոխակերպելու համարի, որը ներկայացնում է ռադիոնի դիրքը չափիչի վրա: Հետո այդ թիվը տալիս ենք setMeterPosition գործառույթին ՝ ասեղը նոր դիրքի տեղափոխելու համար:

Քայլ 4: Գործի ձևավորում

Ամեն ինչ պարունակելու համար ես նախագծեցի պատյան fusion360- ում և 3D տպեցի այն: Իմ պատրաստած դիզայնը համեմատաբար պարզ է: Ես օգտագործեցի տաք սոսինձ ՝ բաղադրիչները ներսից ամրացնելու համար, և չափիչը պահվում է տեղում ՝ սեղմվելով առջևի և հետևի կափարիչի միջև: Գործը ստեղծելու համար ձեզ հարկավոր չէ օգտագործել 3D տպագրություն: Օրինակ, դուք կարող եք պատյան պատրաստել փայտից, կամ կարող եք ամեն ինչ հետ դնել սկզբնական պատյանում, որտեղից չափիչներ են մտել:

Իմ STL ֆայլերը հասանելի են thingiverse- ում, եթե ցանկանում եք դրանք դիտել, բայց դժվար թե դրանք ձեզ մոտ աշխատեն, եթե չստանաք այն նույն չափիչները, որոնք ես օգտագործել եմ:

Գործի ֆայլեր ՝

Շնորհակալություն կարդալու համար: Տեղեկացրեք ինձ, եթե ունեք որևէ հարց, և ես ամեն ինչ կանեմ, որ պատասխանեմ:

Խորհուրդ ենք տալիս: