Kazalo:
Video: ESP8266 Neposredna podatkovna komunikacija: 3 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Uvod
Medtem ko sem opravil nekaj projektov z moduli Arduinos in nRF24l01, me je zanimalo, ali bi lahko prihranil nekaj napora z uporabo modula ESP8266. Prednost modula ESP8266 je, da vsebuje mikro krmilnik na krovu, zato dodatna plošča Arduino ni potrebna. Poleg tega je velikost pomnilnika ESP8266 veliko večja, kar zadeva hitrost, ESP8266 deluje pri največ 160 MHz namesto Arduinovih 16 MHz. Seveda obstaja nekaj negativnih strani.
ESP8266 deluje samo na 3.3V, ima manj zatičev in mu manjkajo lepi analogni vhodi, ki jih ima Arduino (ima enega, vendar le za 1.0V in ne za 3.3V). Poleg tega obstaja veliko več primerov kode za Arduino + nRF24l01, potem je za ESP8266 še posebej, ko gre za neposreden prenos podatkov.
Zato sem z mislijo na projekt preučil temo hitrega in lahkega prenosa podatkov med dvema ESP8266 brez vseh stvari WWW in
Med iskanjem primerov v internetu (večina spodnje kode je bila pobrana iz interneta na različnih mestih) sem naletel na številna vprašanja, kako izvesti neposreden prenos podatkov brez lepih primerov "naredi tako". Bilo je nekaj primerov kode, vendar večinoma z vprašanjem, zakaj ne deluje.
Tako sem po branju in poskusu razumevanja ustvaril spodnje primere, ki omogočajo hiter in preprost prenos podatkov med dvema ESP8266.
Korak: Meje in ozadja (TCP proti UDP)
Da bi prišli tja, je treba v primerjavi z nRF24l01 pojasniti nekatere meje.
Za uporabo ESP8266 v okolju Arduino je osnovna knjižnica ESP8266WiFi.h. Morda so drugačni, vendar večina primerov uporablja omenjeno. Ko uporabljate to, morate komunikacijo vzpostaviti na ravni WiFi.
Za komunikacijo morata biti vsaj dostopna točka (AP) / strežnik in odjemalec. AP podaja ime omrežja in naslove IP, odjemalec pa se bo povezal s tem strežnikom.
Torej v primerjavi z nRF24l01, kjer je koda na obeh koncih bolj ali manj enaka (razen prenosnih kanalov), je koda ESP8266 bistveno drugačna, saj je ena konfigurirana kot AP, druga pa kot odjemalec.
Naslednja tema je, da je treba namesto pošiljanja nekaj bajtov na nRF24l01 upoštevati protokole za prenos ESP8266.
Obstajata dva pogosta protokola: TCP in UDP.
TCP (Transmission Control Protocol) je protokol, ki omogoča prenos brez izgube med strežnikom in odjemalcem. Protokol vključuje "rokovanje" (veliko zastavic in priznanj, poslanih med obema stranema) ter oštevilčevanje in odkrivanje paketov za identifikacijo in ponovni prenos izgubljenih paketov. Poleg tega protokol z uporabo vseh teh rokovanj preprečuje izgubo podatkov zaradi številnih paketov, poslanih hkrati v omrežju. Podatkovni paketi počakajo, da jih lahko sprejmejo.
UDP (User Datagram Protocol) nima vseh rokovanj, oštevilčenja paketov in ponovnega prenosa. Njeni režijski stroški so zato manjši in ni potrebe po vseh rokovanjih za vzdrževanje povezave. UDP vključuje nekaj osnovnih zaznav napak, vendar brez popravka (poškodovan paket se samo spusti). Podatki se pošiljajo brez vednosti, če je prejemnik prost prejemati podatke. Hkrati se lahko spopade več paketov, saj vsaka stranka pošlje podatke, kadar koli je to potrebno. Z izpuščanjem vseh rokovanj obstaja še ena prijetna lastnost UDP, imenovana "večkanalno" in "oddajanje". V primeru »multicast« se podatkovni paketi pošljejo vnaprej določeni skupini članov, v »oddajanju« se pošljejo podatkovni paketi vsem povezanim članom. To znatno zmanjša prenos podatkov v primeru tokov, ki jih sprejme več članov (npr. S pošiljanjem video vira na več sprejemnikov ali s pošiljanjem trenutnega časa na več povezanih naprav).
Na Youtube je nekaj dobrih videov, ki to še bolje razlagajo.
Zato je pri pošiljanju podatkov pomembno poznati svoje potrebe:
- nepoškodovani podatki, upravljanje več vrst z rokovanjem → TCP
- podatki v realnem času, hitra povezava → UDP
Najprej sem začel z izvajanjem komunikacije, ki temelji na TCP (med enim strežnikom in enim odjemalcem). Med testiranjem sem imel težave pri zastoju pri prenosu. Na začetku so se podatki hitro izmenjevali, nato pa je čez nekaj časa hitrost dramatično padla. Sklenil sem, da je to tipična težava pristopa TCP (kar je bilo napačno!), Zato sem se spremenil v rešitev, ki temelji na UDP. Nazadnje sem oba pristopila k delu. Tako bosta na voljo obe rešitvi.
Spodnjim skicam za TCP in UDP je skupno, da:
- so neodvisni od katerega koli obstoječega omrežja WiFi. Tako bo deloval kjer koli daleč stran od interneta in povezanih usmerjevalnikov.
- pošiljajo podatke ASCII za tiskanje prek serijskega monitorja.
- pošiljajo podatke, pridobljene s funkcijo millis (), za analizo hitrosti prenosa.
- niso testirani za več odjemalcev (zaradi strojne opreme za trenutno nastavitev omrežja)
2. korak: Strojna oprema
Za preizkus celotne nastavitve sem uporabil dva modula ESP8266. Eden od modulov je adapter ESP-01 + USB-to-UART. Drugi modul je modul na osnovi ESP-12, ki vključuje povezavo USB, regulator napetosti in nekaj zabavnih stvari, kot so stikala, LDR in večbarvna LED.
Modul USB-to-UART za ESP-01 je bilo treba nekoliko spremeniti, da bi ga lahko uporabljali kot programerja (spet Youtube avtorja Csongor Varga).
Če želite zagnati skice, morate namestiti knjižnice ESP8266 (kot je opisano na številnih mestih v internetu). V obeh primerih (TCP in UDP) obstajata skica strežnika in odjemalca. Katera skica je naložena na kateri modul, ni pomembno.
Zahvala
Kot že omenjeno, skice temeljijo na številnih delih, ki sem jih našel na spletu. Ne spomnim se več, kje sem kaj našel in kaj je prvotna koda ali kaj sem spremenil. Zato sem se samo zahvalil veliki skupnosti na splošno, da je objavila vse odlične primere.
3. korak: Skice
Koda je sestavljena iz dveh skic (kot je razloženo), skice strežnika in skice odjemalca za TCP in UDP.
Priporočena:
Brezžična komunikacija SmartHome: skrajne osnove MQTT: 3 koraki
Brezžična komunikacija SmartHome: skrajne osnove MQTT: osnove MQTT: ** delal bom serijo domače avtomatizacije, šel bom skozi korake, ki sem jih naredil, da bi se naučil vsega, kar sem naredil v prihodnosti. Ta Instructable je osnova za nastavitev MQTT za uporabo v mojih prihodnjih Instructables. Howeve
KOMUNIKACIJA SENZORJA PO USB: 3 koraki
KOMUNIKACIJA SENZORJA PO USB: Ta vadnica prikazuje, kako uporabiti izolirano nosilno ploščo USB EZO za interakcijo z vezji EZO. Z nekaj preprostimi koraki boste lahko kalibrirali in odpravili napake ali celo v realnem času spremljali zadevni parameter. PREDNOSTI:
RF serijska podatkovna povezava {prek USB}: 3 koraki
RF Serijska podatkovna povezava {prek USB}: TECGRAF DOC Kako prenašati podatke s poceni RF modulom prek USB -ja. Vezje prejema energijo iz vrat USB (lahko zagotovi 100 mA in z nekaj programiranja lahko dosežete 500 mA) Seznam materialov: 1 - En par RF modulov (na primer Laipac RLP/TL
Dostopna točka - komunikacija postaje med dvema MCU ESP8266: 3 koraki
Dostopna točka - komunikacija med dvema enotama MCU ESP8266: Pozdravljeni ustvarjalci! V prejšnjem navodilu sem vzpostavil komunikacijo WiFi med dvema enotama MCU ESP8266 prek domačega usmerjevalnika WiFi. Kot sem videl iz komentarjev, obstajajo proizvajalci, ki bi radi uporabili MCU ESP8266 daleč od dosega usmerjevalnika. Torej tukaj je bar
Pretvorba Mp3 predvajalnika v neposredna vrata USB in nadomestno baterijo: 3 koraki
Pretvarjanje predvajalnika Mp3 v neposredna vrata USB in nadomestno baterijo: v tem navodilu vam bom pokazal, kako pretvorim svoj i-pod shuffle v neposredna vrata USB (z uporabo predvajalnika mp3 v računalnik brez uporabe adapterja) in v vgrajeno baterijo zamenjajte z baterijo mobilnega telefona in mobilnega telefona b