Satura rādītājs:

ESP8266 Tieša datu komunikācija: 3 soļi
ESP8266 Tieša datu komunikācija: 3 soļi

Video: ESP8266 Tieša datu komunikācija: 3 soļi

Video: ESP8266 Tieša datu komunikācija: 3 soļi
Video: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Novembris
Anonim
ESP8266 tieša datu komunikācija
ESP8266 tieša datu komunikācija

Ievads

Veicot dažus projektus ar Arduinos un nRF24l01 moduļiem, es domāju, vai es varētu ietaupīt dažas pūles, tā vietā izmantojot ESP8266 moduli. ESP8266 moduļa priekšrocība ir tā, ka tajā ir mikrokontrolleris, tāpēc nav nepieciešama papildu Arduino plate. Turklāt ESP8266 atmiņas apjoms ir daudz lielāks, un attiecībā uz ātrumu ESP8266 darbojas ar maksimālo 160 MHz, nevis Arduino 16 MHz. Protams, ir dažas negatīvas puses.

ESP8266 darbojas tikai ar 3,3 V spriegumu, tam ir mazāk tapu un trūkst jauku analogo ieeju, kas ir Arduino (tai ir viena, bet tikai 1,0 V, nevis 3,3 V). Turklāt Arduino + nRF24l01 ir daudz vairāk koda piemēru, tad ESP8266, it īpaši, ja runa ir par tiešu datu pārsūtīšanu.

Tāpēc, domājot par projektu, es izpētīju tēmu par ātru un vieglu datu pārsūtīšanu starp diviem ESP8266 bez visa WWW un HTTP satura.

Meklējot piemērus internetā (lielākā daļa no zemāk esošā koda tika izvēlēta no tīkla dažādās vietās), es saskāros ar daudziem jautājumiem, kā īstenot tiešu datu pārsūtīšanu bez jaukiem piemēriem “dari tā”. Bija kāds koda piemērs, bet galvenokārt ar jautājumu, kāpēc tas nedarbojās.

Tāpēc pēc nelielas lasīšanas un mēģināšanas saprast es izveidoju tālāk sniegtos piemērus, kas ļauj ātri un vienkārši pārsūtīt datus starp diviem ESP8266.

1. darbība. Robežas un priekšvēsture (TCP vs. UDP)

Lai tur nokļūtu, ir jāprecizē dažas robežas salīdzinājumā ar nRF24l01.

Lai izmantotu ESP8266 Arduino vidē, izmantojamā pamata bibliotēka ir ESP8266WiFi.h. Tie varētu būt dažādi, taču lielākajā daļā piemēru tiek izmantots iepriekš minētais. Izmantojot šo, jums ir jāsasniedz sakari līdz WiFi līmenim.

Tātad, lai sazinātos, ir jābūt vismaz piekļuves punktam (AP) / serverim un klientam. AP norāda tīkla nosaukumu un IP adreses, un klients izveidos savienojumu ar šo serveri.

Tātad, salīdzinot nRF24l01, kur kods abos galos ir gandrīz vienāds (izņemot pārraides kanālus), ESP8266 kods ir būtiski atšķirīgs, jo viens ir konfigurēts kā AP, bet otrs - kā klients.

Nākamā tēma ir tā, ka tā vietā, lai tikai nosūtītu dažus baitus uz nRF24l01, ir jāievēro pārsūtīšanas protokoli ESP8266.

Pastāv divi bieži lietoti protokoli: TCP un UDP.

TCP (pārraides kontroles protokols) ir protokols, kas nodrošina pārraidi bez zaudējumiem starp serveri un klientu. Protokols ietver “rokasspiedienus” (daudz karodziņu un apzīmējumu, kas nosūtīti starp abām pusēm) un pakešu numerāciju un noteikšanu, lai identificētu un atkārtoti nosūtītu pazaudētās paketes. Turklāt, izmantojot visus šos rokasspiedienus, protokols novērš datu zudumu, jo tīkls vienlaikus nosūta daudzas paketes. Datu paketes gaida, līdz tās var saņemt.

UDP (User Datagram Protocol) trūkst visu rokasspiedienu, pakešu numerācijas un atkārtotas pārraides. Tāpēc tā pieskaitāmās izmaksas ir mazākas, un nav nepieciešams, lai visi rokasspiedieni uzturētu savienojumu. UDP ietver dažas pamata kļūdu noteikšanas iespējas, bet nekādas korekcijas (bojātā pakete ir tikko nomesta). Dati tiek nosūtīti, nezinot, vai saņēmēja puse var brīvi saņemt datus. Tajā pašā laikā var saskarties vairākas paketes, jo katra puse sūta datus, kad vien tas ir nepieciešams. Izlaižot visus rokasspiedienus, ir vēl viena jauka UDP iezīme, ko sauc par “multicast” un “broadcast”. “Multicast” gadījumā datu paketes tiek nosūtītas iepriekš noteiktai dalībnieku grupai, “apraides” datu paketes tiek nosūtītas visiem saistītajiem dalībniekiem. Tas ievērojami samazina datu pārsūtīšanu, ja straumes saņems vairāki dalībnieki (piemēram, nosūtot video plūsmu vairākiem uztvērējiem vai nosūtot pašreizējo laiku vairākām savienotām ierīcēm).

Youtube ir daži labi videoklipi, kas to izskaidro vēl labāk.

Tāpēc, nosūtot datus, ir svarīgi zināt savas vajadzības:

  • nesabojāti dati, vairāku vienaudžu pārvaldība ar rokasspiedieniem → TCP
  • reālā laika dati, ātrs savienojums → UDP

Vispirms sāku ar TCP komunikācijas ieviešanu (starp vienu serveri un vienu klientu). Pārbaudot to, man radās traucējošas pārraides problēmas. Sākumā dati tika apmainīti ātri, tad pēc kāda laika ātrums dramatiski samazinājās. Es secināju, ka šī bija tipiska TCP pieejas problēma (kas bija nepareizi!), Tāpēc pēc tam mainīju uz risinājumu, kura pamatā ir UDP. Beidzot man abas vērsās pie darba. Tātad tiks piedāvāti abi risinājumi.

Turpmāk izklāstītajām skicēm TCP un UDP ir kopīgs:

  • ir neatkarīgi no esošā WiFi tīkla. Tātad tas darbosies jebkur tālu no interneta un savienotajiem maršrutētājiem.
  • sūta ASCII datus drukāšanai, izmantojot seriālo monitoru.
  • sūta datus, kas iegūti ar funkciju milis (), lai analizētu pārraides ātrumu.
  • netiek pārbaudīti vairākiem klientiem (tāpēc, ka pašlaik ir aparatūra tīkla iestatīšanai)

2. darbība. Aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

Lai pārbaudītu visu iestatījumu, es izmantoju divus ESP8266 moduļus. Viens modulis ir ESP-01 + USB-UART adapteris. Otrs modulis ir uz ESP-12 balstīts modulis, kas ietver USB savienojumu, sprieguma regulatoru un dažas jautras lietas, piemēram, slēdžus, LDR un daudzkrāsainu LED.

ESP-01 USB-UART modulis bija nedaudz jāpārveido, lai to varētu izmantot kā programmētāju (atkal Yongube by Csongor Varga).

Lai izpildītu skices, jums jāinstalē bibliotēkas ESP8266 (kā aprakstīts daudzviet internetā). Abos gadījumos (TCP un UDP) ir servera un klienta skice. Kurai skicei tiek ielādēts, kuram modulim nav nozīmes.

Pateicības

Kā jau minēts, skices ir balstītas uz daudziem bitiem un gabaliem, kurus atradu tīmeklī. Es vairs neatceros, kur ko atradu, un kas ir oriģinālais kods vai ko es mainīju. Tāpēc es tikai gribēju pateikties lielajai sabiedrībai kopumā par visu lielisko piemēru publicēšanu.

3. solis: Skices

Kods sastāv no divām skicēm (kā paskaidrots), servera skices un klienta skices, katrai TCP un UDP.

Ieteicams: