Բովանդակություն:

ESP8266 Ուղղակի տվյալների հաղորդակցություն. 3 քայլ
ESP8266 Ուղղակի տվյալների հաղորդակցություն. 3 քայլ

Video: ESP8266 Ուղղակի տվյալների հաղորդակցություն. 3 քայլ

Video: ESP8266 Ուղղակի տվյալների հաղորդակցություն. 3 քայլ
Video: ESP8266 ESP01 WIFI-UART | LDmicro-Roboremo ծրագրավորում 2024, Նոյեմբեր
Anonim
ESP8266 Ուղղակի տվյալների հաղորդակցություն
ESP8266 Ուղղակի տվյալների հաղորդակցություն

Ներածություն

Arduinos- ի և nRF24l01 մոդուլների հետ որոշ նախագծեր կատարելիս ես մտածում էի ՝ կարո՞ղ եմ արդյոք ջանքեր խնայել ՝ փոխարենը օգտագործելով ESP8266 մոդուլը: ESP8266 մոդուլի առավելությունն այն է, որ դրա մեջ կա միկրո վերահսկիչ, ուստի լրացուցիչ Arduino տախտակի կարիք չկա: Բացի այդ, ESP8266- ի հիշողության չափը շատ ավելի մեծ է և արագության առումով ESP8266- ը աշխատում է առավելագույնը 160 ՄՀց արագությամբ `Arduino- ի 16 ՄՀց -ի փոխարեն: Իհարկե, կան որոշ բացասական կողմեր:

ESP8266- ն աշխատում է միայն 3.3 Վ լարման վրա, ունի ավելի քիչ կապում և բացակայում է Arduino- ի գեղեցիկ անալոգային մուտքերը (այն ունի մեկ, բայց միայն 1.0 Վ լարման համար և ոչ 3.3 Վ): Բացի այդ, Arduino + nRF24l01- ի համար կան շատ այլ կոդային օրինակներ, այնուհետև կան ESP8266- ի համար, հատկապես, երբ խոսքը վերաբերում է տվյալների ուղղակի փոխանցմանը:

Այսպիսով, հաշվի առնելով նախագիծը, ես ուսումնասիրեցի երկու ESP8266- ի միջև արագ և թեթև տվյալների փոխանցման թեման ՝ առանց WWW և HTTP նյութերի:

Համացանցում օրինակներ փնտրելիս (ստորև բերված ծածկագրի մեծ մասը ցանցից ընտրվել է տարբեր վայրերում) ես հանդիպեցի բազմաթիվ հարցերի, թե ինչպես կարելի է իրականացնել տվյալների ուղղակի փոխանցում ՝ առանց «այդպես վարվել» գեղեցիկ օրինակների: Կա մի օրինակ կոդ, բայց հիմնականում հարցով, թե ինչու այն չի աշխատում:

Այսպիսով, որոշ ընթերցումներից և հասկանալուց հետո ես ստեղծեցի ստորև բերված օրինակները, որոնք թույլ են տալիս տվյալների արագ և պարզ փոխանցում երկու ESP8266- ի միջև:

Քայլ 1: Սահմաններ և նախապատմություններ (TCP ընդդեմ UDP)

Այնտեղ հասնելու համար որոշ սահմաններ պետք է հստակեցվեն `համեմատած nRF24l01- ի հետ:

ESP8266- ը Arduino միջավայրում օգտագործելու համար օգտագործելու հիմնական գրադարանը ESP8266WiFi.h է: Կարող են տարբեր լինել, բայց օրինակների մեծ մասն օգտագործում է նշվածը: Սա օգտագործելիս պետք է ձեր հաղորդակցությունը հասցնել WiFi մակարդակի:

Այսպիսով, հաղորդակցվելու համար պետք է լինի առնվազն մուտքի կետ (AP) / սերվեր և հաճախորդ: AP- ն տալիս է ցանցի անունը և IP հասցեները, և հաճախորդը կկապվի այս սերվերի հետ:

Այսպիսով, համեմատեք nRF24l01- ը, որտեղ երկու ծայրերում ծածկագիրը քիչ թե շատ նույնն է (բացառությամբ փոխանցման ալիքների) ESP8266 ծածկագիրը սկզբունքորեն տարբերվում է, քանի որ մեկը կազմաձևված է որպես AP, իսկ մյուսը `որպես հաճախորդ:

Հաջորդ թեման այն է, որ NRF24l01- ին որոշ բայթ ուղարկելու փոխարեն ESP8266- ի փոխանցման արձանագրությունները պետք է պահպանվեն:

Կան երկու ընդհանուր օգտագործվող արձանագրություններ ՝ TCP և UDP:

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

UDP- ին (User Datagram Protocol) բացակայում են ձեռքսեղմումների, փաթեթների համարակալման և վերահաղորդման բոլոր հնարավորությունները: Հետևաբար, դրա վերևն ավելի փոքր է, և կարիք չկա, որ բոլոր ձեռքսեղմումները կապ պահպանեն: UDP- ն ներառում է որոշ հիմնական սխալների հայտնաբերում, բայց ոչ ուղղում (կոռումպացված փաթեթը պարզապես ընկնում է): Տվյալները ուղարկվում են ՝ առանց իմացության, եթե ստացող կողմն ազատ է տվյալներ ստանալու համար: Միևնույն ժամանակ, բազմաթիվ փաթեթներ կարող են բախվել, քանի որ յուրաքանչյուր կողմ տվյալներն ուղարկում է անհրաժեշտության դեպքում: Բաց թողնելով ձեռքսեղմումները, կա UDP- ի ևս մեկ գեղեցիկ առանձնահատկություն ՝ «բազմակողմանի» և «հեռարձակում»: «Multicast» դեպքում տվյալների փաթեթներն ուղարկվում են անդամների կանխորոշված խմբին, իսկ «հեռարձակման» դեպքում տվյալների փաթեթներն ուղարկվում են բոլոր միացված անդամներին: Սա զգալիորեն նվազեցնում է տվյալների փոխանցումը մի քանի անդամների կողմից ստացվող հոսքերի դեպքում (օրինակ ՝ տեսաուղերձ ուղարկելով բազմաթիվ ընդունիչներին կամ ընթացիկ ժամանակը մի քանի միացված սարքերի ուղարկելով):

Youtube- ում կան մի քանի լավ տեսանյութեր, որոնք դա ավելի լավ կբացատրեն:

Այսպիսով, տվյալներ ուղարկելիս կարևոր է իմանալ ձեր կարիքները.

  • չկոռումպացված տվյալներ, բազմաթիվ հասակակիցների կառավարում ձեռքսեղմումներով → TCP
  • իրական ժամանակի տվյալներ, արագ միացում → UDP

Ես առաջին անգամ սկսեցի TCP- ի վրա հիմնված հաղորդակցության իրականացմամբ (մեկ սերվերի և մեկ հաճախորդի միջև): Փորձարկելիս ես փոխանցման հետ կապված խնդիրներ ունեի: Սկզբում տվյալները արագ փոխանակվեցին, ապա որոշ ժամանակ անց արագությունը կտրուկ նվազեց: Ես եզրակացրեցի, որ սա TCP մոտեցման (որը սխալ էր) բնորոշ խնդիրն էր, ուստի այն փոխվեց UDP- ի հիման վրա լուծման: Վերջապես երկուսս էլ մոտեցա աշխատելու: Այսպիսով, երկուսն էլ լուծում կտրամադրվեն:

Ստորև ներկայացված էսքիզները TCP- ի և UDP- ի համար ընդհանուր բան ունեն.

  • անկախ են գոյություն ունեցող WiFi ցանցից: Այսպիսով, այն կաշխատի ինտերնետից և միացված երթուղիչներից շատ հեռու:
  • ուղարկում են ASCII- ի տվյալները `տպելու սերիական մոնիտորի միջոցով:
  • ուղարկում են millis () ֆունկցիայի միջոցով ստացված տվյալները ՝ փոխանցման արագությունը վերլուծելու համար:
  • չեն փորձարկվում բազմաթիվ հաճախորդների համար (հենց հիմա ցանցը ստեղծելու սարքավորում ունենալու պատճառով)

Քայլ 2: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Ամբողջ կազմաձևը ստուգելու համար ես օգտագործեցի երկու ESP8266 մոդուլ: Մեկ մոդուլը ESP-01 + USB-to-UART ադապտեր է: Մյուս մոդուլը ESP-12- ի վրա հիմնված մոդուլ է, որը ներառում է USB միացում, Լարման կարգավորիչ և որոշ զվարճալի իրեր, ինչպիսիք են անջատիչները, LDR- ն և բազմագույն LED- ը:

ESP-01- ի USB-to-UART մոդուլը պետք է մի փոքր փոփոխվեր, որպեսզի այն կարողանար օգտագործել որպես ծրագրավորող (կրկին Ysube- ը ՝ Csongor Varga- ի կողմից):

Էսքիզները գործարկելու համար հարկավոր է տեղադրել ESP8266 գրադարանները (ինչպես նկարագրված է ինտերնետի շատ վայրերում): Երկու դեպքում էլ (TCP և UDP) կա սերվեր և հաճախորդ յուրաքանչյուրի ուրվագիծ: Որ էսքիզը բեռնված է, թե որ մոդուլին էական չէ:

Շնորհակալագրեր

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

Քայլ 3: Էսքիզներ

Օրենսգիրքը բաղկացած է երկու էսքիզներից (ինչպես բացատրված է), սերվերի էսքիզ և հաճախորդի ուրվագիծ ՝ յուրաքանչյուրի համար TCP և UDP:

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