Turinys:
Video: ESP8266 tiesioginis duomenų perdavimas: 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Įvadas
Atlikęs kai kuriuos projektus su „Arduinos“ir „nRF24l01“moduliais, man buvo įdomu, ar galėčiau sutaupyti šiek tiek pastangų, naudodamas ESP8266 modulį. ESP8266 modulio pranašumas yra tas, kad jame yra mikrovaldiklis, todėl papildomos „Arduino“plokštės nereikia. Be to, ESP8266 atminties dydis yra daug didesnis, o atsižvelgiant į greitį, ESP8266 veikia ne daugiau kaip 160 MHz, o ne „Arduino“16 MHz. Žinoma, yra ir neigiamų pusių.
ESP8266 veikia tik 3,3 V, turi mažiau kaiščių ir trūksta gražių analoginių įėjimų, kuriuos turi „Arduino“(jis turi vieną, bet tik 1,0 V, o ne 3,3 V). Be to, yra daug daugiau „Arduino + nRF24l01“kodo pavyzdžių, o ne ESP8266, ypač kai kalbama apie tiesioginį duomenų perdavimą.
Taigi, turėdamas omenyje projektą, pažvelgiau į greito ir lengvo duomenų perdavimo tarp dviejų ESP8266 temą be visų WWW ir HTTP dalykų.
Ieškodamas pavyzdžių internete (dauguma žemiau pateikto kodo buvo paimta iš tinklo įvairiose vietose) susidūriau su daugybe klausimų, kaip įgyvendinti tiesioginį duomenų perdavimą be gražių „daryk taip“pavyzdžių. Buvo tam tikras kodo pavyzdys, bet dažniausiai kyla klausimas, kodėl jis neveikė.
Taigi, šiek tiek perskaitęs ir bandęs suprasti, sukūriau žemiau pateiktus pavyzdžius, kurie leidžia greitai ir paprastai perduoti duomenis tarp dviejų ESP8266.
1 veiksmas: ribos ir pagrindai (TCP prieš UDP)
Norint ten patekti, reikia išsiaiškinti kai kurias ribas, palyginti su nRF24l01.
Jei norite naudoti ESP8266 „Arduino“aplinkoje, pagrindinė biblioteka yra ESP8266WiFi.h. Jie gali būti skirtingi, tačiau daugelyje pavyzdžių naudojami pirmiau minėti dalykai. Kai naudojate tai, turite pasiekti ryšį iki „WiFi“lygio.
Taigi, norint bendrauti, turi būti bent prieigos taškas (AP) / serveris ir klientas. AP nurodo tinklo pavadinimą ir IP adresus, o klientas prisijungs prie šio serverio.
Taigi, palyginus nRF24l01, kur kodas abiejuose galuose yra daugmaž vienodas (išskyrus perdavimo kanalus), ESP8266 kodas iš esmės skiriasi, nes vienas yra sukonfigūruotas kaip AP, o kitas - kaip klientas.
Kita tema yra ta, kad reikia ne tik siųsti kai kuriuos baitus į nRF24l01, bet ir laikytis ESP8266 perdavimo protokolų.
Yra du dažniausiai naudojami protokolai: TCP ir UDP.
TCP (perdavimo valdymo protokolas) yra protokolas, leidžiantis be nuostolių perduoti duomenis tarp serverio ir kliento. Į protokolą įeina „rankos paspaudimai“(daug vėliavų ir patvirtinimų, siunčiamų tarp abiejų šalių) ir paketų numeracija bei aptikimas, siekiant nustatyti ir pakartotinai perduoti prarastus paketus. Be to, naudojant visus šiuos rankų paspaudimus, protokolas apsaugo nuo duomenų praradimo dėl daugelio tuo pačiu metu tinkle siunčiamų paketų. Duomenų paketai laukia, kol juos bus galima gauti.
UDP (User Datagram Protocol) trūksta visų rankų paspaudimų, paketų numeracijos ir pakartotinio perdavimo. Todėl jo pridėtinės išlaidos yra mažesnės ir nereikia visų rankų paspaudimų palaikyti ryšį. UDP apima kai kuriuos pagrindinius klaidų aptikimo būdus, tačiau jų nepataiso (sugadintas paketas tiesiog numestas). Duomenys siunčiami nežinant, ar gaunančioji šalis gali laisvai gauti duomenis. Tuo pačiu metu gali susidurti keli paketai, nes kiekviena šalis siunčia duomenis, kai to reikia. Praleidus visus rankų paspaudimus, yra dar viena puiki UDP funkcija, vadinama „multicast“ir „broadcast“. „Multicast“atveju duomenų paketai siunčiami iš anksto apibrėžtai narių grupei, o „transliacijos“duomenų paketai siunčiami visiems prisijungusiems nariams. Tai žymiai sumažina duomenų perdavimą, jei srautus turi priimti keli nariai (pvz., Siunčiant vaizdo įrašą į kelis imtuvus arba siunčiant dabartinį laiką į kelis prijungtus įrenginius).
„Youtube“yra keletas gerų vaizdo įrašų, paaiškinančių tai dar geriau.
Taigi siunčiant duomenis svarbu žinoti savo poreikius:
- nesugadinti duomenys, kelių bendraamžių valdymas rankos paspaudimais → TCP
- realaus laiko duomenys, greitas ryšys → UDP
Pirmiausia pradėjau diegti TCP pagrįstą komunikaciją (tarp vieno serverio ir vieno kliento). Bandydamas jį turėjau stabdymo problemų perduodant. Iš pradžių buvo greitai keičiamasi duomenimis, o po kurio laiko greitis smarkiai sumažėjo. Aš padariau išvadą, kad tai buvo tipiška TCP metodo problema (kuri buvo neteisinga!), Todėl pakeičiau sprendimą, pagrįstą UDP. Pagaliau abu kreipiausi į darbą. Taigi abu sprendimai bus pateikti.
Toliau pateikti TCP ir UDP eskizai yra bendri:
- yra nepriklausomi nuo esamo „WiFi“tinklo. Taigi jis veiks bet kur toli nuo interneto ir prijungtų maršrutizatorių.
- siunčia ASCII duomenis spausdinti per nuoseklųjį monitorių.
- siunčia duomenis, gautus naudojant milis () funkciją, analizuoti perdavimo greitį.
- nėra išbandyti keliems klientams (dėl to, kad šiuo metu tinklui nustatyti reikia aparatūros)
2 žingsnis: Aparatūra
Norėdami išbandyti visą sąranką, naudoju du ESP8266 modulius. Vienas modulis yra ESP-01 + USB-UART adapteris. Kitas modulis yra ESP-12 pagrįstas modulis, kuriame yra USB jungtis, įtampos reguliatorius ir keletas įdomių dalykų, tokių kaip jungikliai, LDR ir daugiaspalvis šviesos diodas.
ESP-01 USB-UART modulį reikėjo šiek tiek modifikuoti, kad būtų galima jį naudoti kaip programuotoją (dar kartą „Csongor Varga“„Youtube“).
Norėdami paleisti eskizus, turite įdiegti ESP8266 bibliotekas (kaip aprašyta daugelyje interneto vietų). Abiem atvejais (TCP ir UDP) yra serverio ir kliento eskizas. Kuris eskizas įkeliamas į kurį modulį, nesvarbu.
Padėkos
Kaip minėta, eskizai yra pagrįsti daugybe bitų, kuriuos radau internete. Jau nebeprisimenu, kur ką radau, kas yra originalus kodas ar ką pakeičiau. Taigi aš tiesiog norėjau padėkoti didelei bendruomenei apskritai už puikių pavyzdžių paskelbimą.
3 žingsnis: eskizai
Kodą sudaro du eskizai (kaip paaiškinta), serverio eskizas ir kliento eskizas, skirti kiekvienam TCP ir UDP.
Rekomenduojamas:
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę - DHT11 duomenų kaupiklio modeliavimas „Proteus“: 5 žingsniai
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę | DHT11 duomenų kaupiklio modeliavimas „Proteus“: Įvadas: Sveiki, tai „Liono Maker“, čia yra „YouTube“nuoroda. Mes kuriame kūrybinį projektą su „Arduino“ir dirbame prie įterptųjų sistemų
Tiesioginis „Covid19“stebėjimo įrankis naudojant ESP8266 ir OLED - Realaus laiko „Covid19“prietaisų skydelis: 4 žingsniai
Tiesioginis „Covid19“stebėjimas naudojant ESP8266 ir OLED | Realaus laiko „Covid19“informacijos suvestinė: apsilankykite griežtoje „Techtronic“svetainėje: http: //techtronicharsh.com Visur, kur vyksta didžiulis naujojo koronaviruso (COVID19) protrūkis. Buvo būtina stebėti dabartinį COVID-19 scenarijų pasaulyje. Taigi, būdamas namuose, tai buvo p
NBIoT duomenų perdavimas Kaip naudoti BC95G modeminius skydus - UDP testas ir tinklo būsenos signalizavimas: 4 žingsniai
NBIoT duomenų perdavimas Kaip naudoti BC95G modeminius skydus - UDP testas ir tinklo būsenos signalizacija: Apie šį projektą: Išbandykite NB IoT tinklo galimybes ir neapdorotus UDP duomenų perdavimą naudojant „xyz -mIoT by itbrainpower.net“skydą su „Quectel BC95G“modemu. Reikalingas laikas: 10-15 minučių. Sunkumas: tarpinis. Remarque: reikalingi litavimo įgūdžiai
Duomenų rinkimo ir duomenų vizualizavimo sistema „MotoStudent“lenktyniniam dviračiui: 23 žingsniai
„MotoStudent“elektrinio lenktyninio dviračio duomenų rinkimo ir duomenų vizualizavimo sistema: Duomenų surinkimo sistema yra techninės ir programinės įrangos, veikiančios kartu, rinkinys, siekiant surinkti duomenis iš išorinių jutiklių, po to juos saugoti ir apdoroti, kad būtų galima vizualizuoti grafiškai ir analizuoti, leidžia inžinieriams padaryti
EAL-Industri4.0-RFID duomenų rinkimo duomenų bazė: 10 žingsnių (su nuotraukomis)
EAL-Industri4.0-RFID duomenų kopijavimas iki duomenų bazės: „Dette projekt omhandler opsamling af v æ gtdata“, registruojantis tapatybę. RFID, bauginantys duomenys ir „MySQL“duomenų bazė. „NOD-RED“, „fremvisning“ir „elgsena“naudojant duomenų rinkinius ir C# programą, kurią sudaro „Windows Form Application“