Sadržaj:

ESP8266 Direktna komunikacija podacima: 3 koraka
ESP8266 Direktna komunikacija podacima: 3 koraka

Video: ESP8266 Direktna komunikacija podacima: 3 koraka

Video: ESP8266 Direktna komunikacija podacima: 3 koraka
Video: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Juli
Anonim
ESP8266 Direktna komunikacija podacima
ESP8266 Direktna komunikacija podacima

Uvod

Dok sam radio neke projekte sa Arduinos i nRF24l01 modulima, pitao sam se mogu li uštedjeti malo truda koristeći umjesto toga ESP8266 modul. Prednost ESP8266 modula je što sadrži mikro kontroler na ploči, pa nije potrebna dodatna Arduino ploča. Osim toga, veličina memorije ESP8266 je mnogo veća, a što se tiče brzine, ESP8266 radi na maksimalnih 160 MHz umjesto Arduinovih 16 MHz. Naravno, postoje i neke negativne strane.

ESP8266 radi samo na 3.3V, ima manje pinova i nedostaju mu lijepi analogni ulazi koje ima Arduino (ima jedan, ali samo za 1.0V, a ne 3.3V). Osim toga, postoji još mnogo primjera koda za Arduino + nRF24l01 nego za ESP8266, posebno kada je u pitanju izravan prijenos podataka.

Pa sam s projektom na umu bavio se temom brzog i laganog prijenosa podataka između dva ESP8266 bez svih WWW i HTTP stvari.

Dok sam tražio primjere na internetu (većina donjeg koda odabrana je s interneta na raznim mjestima) naišao sam na mnoga pitanja kako implementirati izravan prijenos podataka bez lijepih primjera "uradi to tako". Postojao je neki primjer koda, ali uglavnom s pitanjem zašto ne radi.

Stoga sam nakon čitanja i pokušaja razumijevanja stvorio primjere u nastavku koji omogućuju brz i jednostavan prijenos podataka između dva ESP8266.

Korak 1: Granice i pozadina (TCP vs. UDP)

Da bi se tamo stiglo, neke se granice moraju pojasniti u usporedbi s nRF24l01.

Za korištenje ESP8266 u Arduino okruženju, osnovna biblioteka za korištenje je ESP8266WiFi.h. Mogu biti različiti, ali većina primjera koristi spomenuto na. Kada koristite ovo, morate svoju komunikaciju dovesti na WiFi razinu.

Dakle, za komunikaciju moraju postojati barem pristupna tačka (AP) / server i klijent. AP pruža naziv mreže i IP adrese, a klijent će se povezati s ovim serverom.

U usporedbi s nRF24l01, gdje je kôd na oba kraja manje -više isti (osim kanala prijenosa), kod ESP8266 je bitno drugačiji, jer je jedan konfiguriran kao AP, a drugi kao klijent.

Sljedeća tema je da umjesto da samo pošaljete nekoliko bajtova na nRF24l01, za ESP8266 morate poštovati protokole prijenosa.

Postoje dva uobičajena protokola: TCP i UDP.

TCP (Transmission Control Protocol) je protokol koji omogućava prijenos bez gubitka između poslužitelja i klijenta. Protokol uključuje „rukovanje“(mnogo zastavica i priznanja poslanih između obje strane) i numerisanje i detekciju paketa radi identifikacije i ponovnog prenosa izgubljenih paketa. Osim toga, korištenjem svih ovih rukovanja protokol sprječava gubitak podataka zbog mnogih paketa poslanih istovremeno na mreži. Paketi podataka čekaju dok ne budu primljeni.

UDP-u (User Datagram Protocol) nedostaju sva rukovanja, numeriranje paketa i ponovni prijenos. Njegovi su troškovi stoga manji i nema potrebe za svim rukovanjima radi održavanja veze. UDP sadrži neke osnovne detekcije grešaka, ali bez ispravljanja (oštećeni paket se samo ispušta). Podaci se šalju, bez znanja, ako je strana koja ih prima slobodna primiti podatke. U isto vrijeme može doći do sudara više paketa jer svaka strana šalje podatke kad god je to potrebno. Izostavljanjem svih rukovanja, postoji još jedna lijepa značajka UDP -a koja se naziva „multicast“i „broadcast“. U slučaju „multicast“paketi podataka se šalju unaprijed definiranoj grupi članova, u „broadcast“paketima podataka šalju se svi povezani članovi. Ovo značajno smanjuje prijenos podataka u slučaju tokova koje prima više članova (npr. Slanjem video feeda na više prijemnika ili slanjem trenutnog vremena na više povezanih uređaja).

Na Youtube -u ima nekoliko dobrih video zapisa koji to još bolje objašnjavaju.

Zato je prilikom slanja podataka važno znati svoje potrebe:

  • nekorumpirani podaci, upravljanje više kolega rukovanjem → TCP
  • podaci u stvarnom vremenu, brza veza → UDP

Prvo sam započeo implementaciju komunikacije zasnovane na TCP -u (između jednog servera i jednog klijenta). Dok sam ga testirao, imao sam problema sa zastojem u prijenosu. U početku su se podaci razmjenjivali brzo, a zatim je nakon nekog vremena brzina dramatično pala. Zaključio sam da je to tipičan problem TCP pristupa (što je bilo pogrešno!), Pa sam promijenio rješenje zasnovano na UDP -u. Konačno su mi obojica pristupili da radim. Dakle, oba rješenja će biti ponuđena.

Skice u nastavku za TCP i UDP imaju zajedničko sljedeće:

  • neovisni su o bilo kojoj postojećoj WiFi mreži. Tako će raditi bilo gdje daleko od interneta i povezanih usmjerivača.
  • šalju ASCII podatke za štampanje putem serijskog monitora.
  • šalju podatke dobivene funkcijom millis ()-za analizu brzine prijenosa.
  • nisu testirani za više klijenata (zbog toga što trenutno imaju hardver za postavljanje mreže)

Korak 2: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Za testiranje cijelog seta koristio sam dva ESP8266 modula. Jedan modul je adapter ESP-01 + USB-na-UART. Drugi modul je modul zasnovan na ESP-12 koji uključuje USB vezu, regulator napona i neke zabavne stvari poput prekidača, LDR i višebojne LED diode.

Modul USB-to-UART za ESP-01 morao je biti malo modifikovan da bi se mogao koristiti kao programer (opet Youtube od Csongor Varga).

Da biste pokrenuli skice, morate instalirati ESP8266 biblioteke (kako je opisano na mnogim mjestima na internetu). U oba slučaja (TCP i UDP) postoji po jedna skica servera i klijenta. Koja skica je učitana na koji modul nije važno.

Zahvalnice

Kao što je spomenuto, skice se temelje na mnogim dijelovima koje sam pronašao na webu. Ne sećam se više gde sam šta našao, šta je originalni kod ili šta sam promenio. Zato sam samo želio zahvaliti velikoj zajednici općenito na objavljivanju svih sjajnih primjera.

Korak 3: Skice

Kôd se sastoji od dvije skice (kao što je objašnjeno), skice servera i skice klijenta, za TCP i UDP.

Preporučuje se: