Përmbajtje:

ESP8266 Komunikimi i të Dhënave Direkte: 3 Hapa
ESP8266 Komunikimi i të Dhënave Direkte: 3 Hapa

Video: ESP8266 Komunikimi i të Dhënave Direkte: 3 Hapa

Video: ESP8266 Komunikimi i të Dhënave Direkte: 3 Hapa
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, Nëntor
Anonim
ESP8266 Komunikimi i të Dhënave Direkte
ESP8266 Komunikimi i të Dhënave Direkte

Prezantimi

Ndërsa kisha bërë disa projekte me modulet Arduinos dhe nRF24l01, po pyesja veten nëse mund të kurseja ndonjë përpjekje duke përdorur një modul ESP8266 në vend të tij. Avantazhi i modulit ESP8266 është se ai përmban një mikro kontrollues në bord, kështu që nuk nevojitet asnjë bord shtesë Arduino. Për më tepër, madhësia e kujtesës së ESP8266 është shumë më e madhe dhe në lidhje me shpejtësinë, ESP8266 funksionon në maksimum 160 MHz në vend të 16 MHz të Arduino. Sigurisht që ka disa anë negative.

ESP8266 funksionon vetëm me 3.3V, ka më pak kunja dhe i mungojnë hyrjet e mira analoge që ka Arduino (ka një, por vetëm për 1.0V dhe jo 3.3V). Për më tepër ka shumë shembuj të tjerë të kodit për Arduino + nRF24l01, pastaj ka për ESP8266 veçanërisht kur bëhet fjalë për transferimin e drejtpërdrejtë të të dhënave.

Pra, me një projekt në mendje, unë shikova temën e transferimit të shpejtë dhe të lehtë të të dhënave midis dy ESP8266 pa të gjitha gjërat WWW dhe

Ndërsa kërkoja në internet për shembuj (shumica e kodit të mëposhtëm u zgjodh nga rrjeti në vende të ndryshme) hasa në shumë pyetje se si të zbatoja një transferim të drejtpërdrejtë të të dhënave pa shembujt e bukur "bëje kështu". Kishte një shembull kod, por kryesisht me pyetje pse nuk funksionoi.

Kështu që pas disa leximeve dhe përpjekjeve për të kuptuar, krijova shembujt e mëposhtëm të cilët lejojnë transferim të shpejtë dhe të thjeshtë të të dhënave midis dy ESP8266.

Hapi 1: Kufijtë dhe prejardhjet (TCP vs UDP)

Për të arritur atje, disa kufij duhet të sqarohen në krahasim me nRF24l01.

Për të përdorur ESP8266 brenda mjedisit Arduino, biblioteka bazë për t'u përdorur është ESP8266WiFi.h. Mund të jenë të ndryshme, por shumica e shembujve përdorin ato të përmendura më sipër. Kur e përdorni këtë, duhet të arrini komunikimin tuaj në nivelin WiFi.

Pra, për të komunikuar duhet të ketë të paktën një pikë aksesi (AP) / server dhe një klient. AP jep emrin e rrjetit dhe adresat IP dhe klienti do të lidhet me këtë server.

Krahasuar kështu me nRF24l01, ku kodi në të dy skajet është pak a shumë i njëjtë (përveç kanaleve të transmetimit) kodi i ESP8266 është thelbësisht i ndryshëm, pasi njëri është i konfiguruar si AP dhe tjetri si klient.

Tema tjetër është, në vend që të dërgoni vetëm disa bajtë në nRF24l01, për protokollet e transferimit ESP8266 duhet të respektohen.

Ekzistojnë dy protokolle të zakonshëm të përdorur: TCP dhe UDP.

TCP (Transmission Control Protocol) është një protokoll i cili lejon një transmetim pa humbje midis një serveri dhe një klienti. Protokolli përfshin "shtrëngimin e duarve" (shumë flamuj dhe paga të dërguara midis të dyja palëve) dhe numërimin dhe zbulimin e paketave për të identifikuar dhe ri-transmetuar paketat e humbura. Për më tepër, duke përdorur të gjitha këto shtrëngime duarsh, protokolli parandalon humbjen e të dhënave për shkak të shumë paketave të dërguara në të njëjtën kohë në rrjet. Pakot e të dhënave presin derisa të mund të merren.

UDP-së (Protokollit të Datagramit të Përdoruesit) i mungojnë të gjitha shtrëngimet e duarve, numërimi i paketave dhe ri-transmetimi. Prandaj, lartësia e saj është më e vogël dhe nuk ka nevojë që të gjitha shtrëngimet e duarve të mbajnë një lidhje. UDP përfshin disa zbulime themelore të gabimeve, por asnjë korrigjim (paketa e korruptuar sapo ka rënë). Të dhënat dërgohen, pa dijeninë nëse pala marrëse është e lirë të marrë të dhënat. Në të njëjtën kohë, pako të shumta mund të përplasen, pasi secila palë i dërgon të dhënat sa herë që është e nevojshme. Duke hequr dorë nga të gjitha shtrëngimet e duarve, ekziston një veçori shtesë e bukur e UDP e quajtur "multicast" dhe "broadcast". Në rastin "multicast" paketat e të dhënave i dërgohen një grupi anëtarësh të paracaktuar, në një "transmetim" paketat e të dhënave u dërgohen të gjithë anëtarëve të lidhur. Kjo zvogëlon transferimin e të dhënave në mënyrë të konsiderueshme në rast të transmetimeve që do të merren nga anëtarë të shumtë (p.sh. duke dërguar një burim video në marrës të shumtë ose duke dërguar kohën aktuale në pajisje të shumta të lidhura).

Ka disa video të mira në Youtube që e shpjegojnë edhe më mirë.

Pra, kur dërgoni të dhëna, është e rëndësishme të njihni nevojat tuaja:

  • të dhëna të pakorruptuara, menaxhimi i kolegëve të shumtë me shtrëngime duarsh → TCP
  • të dhëna në kohë reale, lidhje e shpejtë → UDP

Fillimisht fillova me zbatimin e një komunikimi të bazuar në TCP (midis një Serveri dhe një Klienti). Ndërsa e testova, kisha probleme ngecëse në transmetim. Në fillim të dhënat u shkëmbyen shpejt, pastaj pas një kohe shpejtësia ra në mënyrë dramatike. Unë arrita në përfundimin se ky ishte një problem tipik i qasjes TCP (i cili ishte i gabuar!), Kështu që më pas u ndryshova në një zgjidhje të bazuar në UDP. Më në fund u afrova të dy duke punuar. Kështu që të dyja zgjidhjet do të jepen.

Skicat e mëposhtme kanë të përbashkëta për TCP dhe UDP:

  • janë të pavarur nga çdo rrjet ekzistues WiFi. Pra, do të funksionojë kudo shumë larg internetit dhe ruterave të lidhur.
  • po dërgojnë të dhëna ASCII për t'u shtypur përmes monitorit serik.
  • po dërgojnë të dhëna të marra nga funksioni millis ()-për të analizuar shpejtësinë e transmetimit.
  • nuk janë testuar për klientë të shumtë (për shkak të pajisjes për të konfiguruar rrjetin tani)

Hapi 2: Pajisje kompjuterike

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Për të testuar të gjithë konfigurimin kam përdorur dy module ESP8266. Një modul është një përshtatës ESP-01 + USB-to-UART. Moduli tjetër është një modul i bazuar në ESP-12 që përfshin lidhjen USB, rregullatorin e tensionit dhe disa gjëra argëtuese si çelsat, LDR dhe LED me shumë ngjyra.

Moduli USB-to-UART për ESP-01 duhej të modifikohej pak për të qenë në gjendje ta përdorte atë si programues (përsëri Youtube nga Csongor Varga).

Për të drejtuar skicat, duhet të instaloni bibliotekat ESP8266 (siç përshkruhet në shumë vende në internet). Në të dy rastet (TCP dhe UDP) ekziston një skicë e serverit dhe klientit secila. Cila skicë ngarkohet në cilin modul nuk ka rëndësi.

Mirënjohje

Siç u përmend, skicat bazohen në shumë pjesë dhe pjesë që kam gjetur në internet. Nuk mbaj mend më se ku gjeta çfarë, dhe çfarë është kodi origjinal ose çfarë ndryshova. Kështu që unë thjesht doja të falënderoja komunitetin e madh në përgjithësi atje për botimin e të gjithë shembujve të mrekullueshëm.

Hapi 3: Skicat

Kodi përbëhet nga dy skica secila (siç shpjegohet), një skicë serveri dhe një skicë klienti, për TCP dhe UDP secila.

Recommended: