Мазмуну:

ESP8266 Түз маалыматтар менен байланыш: 3 кадам
ESP8266 Түз маалыматтар менен байланыш: 3 кадам

Video: ESP8266 Түз маалыматтар менен байланыш: 3 кадам

Video: ESP8266 Түз маалыматтар менен байланыш: 3 кадам
Video: Гостиницага келдик бир берейин эми 2024, Ноябрь
Anonim
ESP8266 Түз маалыматтар менен байланыш
ESP8266 Түз маалыматтар менен байланыш

Киришүү

Arduinos жана nRF24l01 модулдары менен бир нече долбоорлорду аткарып жатып, анын ордуна ESP8266 модулун колдонуу менен бир аз аракетти үнөмдөй аламбы деп ойлонуп жаттым. ESP8266 модулунун артыкчылыгы анын бортунда микро контроллерди камтыйт, андыктан кошумча Arduino тактасынын кереги жок. Кошумча: ESP8266 эс тутумунун көлөмү алда канча чоң жана ESP8266 Ардуинонун 16 МГцтин ордуна 160 МГцте иштейт. Албетте, кээ бир терс жактары бар.

ESP8266 3.3V менен гана иштейт, түйрүктөрү азыраак жана Arduinoдо аналогдук жакшы материалдар жок (анын бирөө бар, бирок 1.0В үчүн гана эмес, 3.3В). Андан тышкары, Arduino + nRF24l01 үчүн дагы көптөгөн код мисалдары бар, андан кийин ESP8266 үчүн, айрыкча, бул маалыматтарды түз жеткирүүгө келгенде.

Ошентип, бир долбоорду эске алып, мен WWW жана HTTP нерселери жок эки ESP8266 ортосунда маалыматты тез жана жеңил берүү темасын карадым.

Интернеттен мисалдарды издеп жатып (төмөндөгү коддун көбү тордон ар кайсы жерден алынган) көптөгөн мисалдарга туш болдум, кантип "ушундай кыл" мисалдарын колдонбостон, түз маалымат берүүнү ишке ашыруу керек. Кээ бир мисал коддору бар болчу, бирок көбүнчө эмне үчүн иштебей калды деген суроо туулат.

Ошентип, бир аз окуп, түшүнүүгө аракет кылгандан кийин, мен эки ESP8266 ортосунда маалыматты тез жана жөнөкөй өткөрүп берүүгө мүмкүндүк берген төмөнкү мисалдарды түздүм.

1 -кадам: Чек аралар жана өбөлгөлөр (TCP Vs. UDP)

Ал жакка жетүү үчүн, nRF24l01ге салыштырмалуу кээ бир чек араларды тактоо керек.

ESP8266ны Arduino чөйрөсүндө колдонуу үчүн, негизги китепкана ESP8266WiFi.h болуп саналат. Ар кандай болушу мүмкүн, бирок көпчүлүк мисалдарда айтылгандар колдонулат. Муну колдонуп жатканда, байланышыңызды WiFi деңгээлине жеткиришиңиз керек.

Ошентип, баарлашуу үчүн жок дегенде кирүү түйүнү (AP) / сервер жана кардар болушу керек. AP тармактын атын жана IP даректерин берет жана кардар бул серверге туташат.

Ошентип, nRF24l01 салыштырылды, мында эки учунун коду аздыр -көптүр бирдей (берүү каналдарын кошпогондо), ESP8266 коду түп -тамырынан бери айырмаланат, бири AP катары, экинчиси кардар катары конфигурацияланган.

Кийинки тема, жөн гана nRF24l01ге кээ бир байттарды жөнөтүүнүн ордуна, ESP8266 өткөрүп берүү протоколдорун сактоо керек.

Жалпы колдонулган эки протокол бар: TCP жана UDP.

TCP (Transmission Control Protocol)-бул сервер менен кардар ортосунда жоготууга жол бербөөчү протокол. Протоколдо "кол алышуу" (эки тараптын ортосунда жөнөтүлгөн желектер жана акноледгтер) жана жоголгон пакеттерди аныктоо жана кайра берүү үчүн пакеттердин номерлениши жана аныкталышы камтылган. Кошумча катары, бул бардык кол алышууларды колдонуу менен протокол тармакта бир эле убакта көптөгөн пакеттердин жөнөтүлүшүнөн улам берилиштердин жоголушуна жол бербейт. Маалымат пакеттери алар кабыл алынганга чейин күтүшөт.

UDP (Колдонуучунун Datagram Протоколу) бардык кол кармашууларга, пакеттердин номурланышына жана кайра өткөрүлүшүнө ээ эмес. Анын үстөмдүгү ошончолук кичине жана байланышты сактап калуу үчүн бардык кол алышуунун кереги жок. UDP кээ бир негизги каталарды табууну камтыйт, бирок эч кандай оңдоо (бузулган пакет жөн эле түшүрүлөт). Маалыматтар, эгер алуучу тарап маалыматты эркин кабыл алса, билгизбей жөнөтүлөт. Ошол эле учурда, бир нече пакеттер кагылышып кетиши мүмкүн, анткени ар бир тарап маалыматты качан керек болсо жөнөтөт. Бардык кол алышууларды өткөрүп жиберүү менен, UDPдин "multicast" жана "уктуруу" деп аталган дагы бир жакшы өзгөчөлүгү бар. "Мультикаст" учурда маалымат пакеттери мүчөлөрдүн алдын ала аныкталган тобуна жөнөтүлөт, "эфирде" маалымат пакеттери бардык туташкан мүчөлөргө жөнөтүлөт. Бул агымдарды бир нече мүчө кабыл алса, маалымат берүүнү бир топ азайтат (мисалы, бир нече кабыл алуучуга видео түрмөгүн жөнөтүү же учурдагы бир нече туташкан түзмөккө жөнөтүү аркылуу).

Ютубда муну жакшыраак түшүндүргөн жакшы видеолор бар.

Ошентип, маалыматтарды жөнөтүүдө сиздин муктаждыктарыңызды билүү маанилүү:

  • бузулбаган маалыматтар, кол кармашуу аркылуу бир нече теңтуштарды башкаруу → 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 модулу аны программист катары колдонуу үчүн бир аз өзгөртүлүшү керек болчу (дагы Youtube Csongor Varga тарабынан).

Эскиздерди иштетүү үчүн, сиз ESP8266 китепканаларын орнотушуңуз керек (интернеттин көптөгөн жерлеринде айтылгандай). Эки учурда тең (TCP жана UDP) ар бири сервер жана кардар эскизи бар. Кайсы эскиз кайсы модулга жүктөлгөнү маанилүү эмес.

Ыракматтар

Жогоруда айтылгандай, эскиздер мен интернеттен тапкан көптөгөн бөлүктөргө негизделген. Мындан ары кайдан тапканым эсимде жок, түпнуска код же эмнени өзгөрткөнүм. Ошентип, мен бардык улуу мисалдарды жарыялаган жалпы жамаатка ыраазычылык билдиргим келди.

3 -кадам: Эскиздер

Кодекстин ар бири эки эскизден (түшүндүрүлгөндөй), сервердин эскизинен жана TCP жана UDP үчүн кардарлардын эскиздеринен турат.

Сунушталууда: