Satura rādītājs:
Video: ESP8266 Tieša datu komunikācija: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
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
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:
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti - DHT11 datu reģistrētāja simulācija Proteus: 5 soļi
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti | DHT11 datu reģistrētāja simulācija Proteus: Ievads: čau, tas ir Liono Maker, šeit ir YouTube saite. Mēs veidojam radošu projektu ar Arduino un strādājam pie iegultām sistēmām. Datu reģistrētājs: Datu reģistrētājs (arī datu reģistrētājs vai datu ierakstītājs) ir elektroniska ierīce, kas laika gaitā reģistrē datus
Dubultās sabrukšanas Eurorack tiešā ķēde: 12 soļi
Dual Decay Eurorack Point-to-Circuit: Šīs pamācības mērķis ir parādīt, kā jūs varat izveidot DUAL DECAY ķēdi savam modulārajam sintezatoram. Šī ir no punkta uz punktu ķēde, kurā nav nevienas PCB, un demonstrē vēl vienu veidu, kā izveidot funkcionālas sintezatora shēmas ar minimālām detaļām
Datu iegūšanas un datu vizualizācijas sistēma elektriskajam motociklam MotoStudent: 23 soļi
Datu iegūšanas un datu vizualizācijas sistēma MotoStudent elektriskajam sacīkšu velosipēdam: Datu iegūšanas sistēma ir aparatūras un programmatūras kopums, kas darbojas kopā, lai apkopotu datus no ārējiem sensoriem, pēc tam tos uzglabātu un apstrādātu, lai tos varētu vizualizēt grafiski un analizēt, ļaujot inženieriem izgatavot
IoT datu zinātnes PiNet reāllaika viedā ekrāna datu vizualizācijai: 4 soļi
IoT datu zinātnes PiNet reāllaika viedā ekrāna datu vizam: Jūs varat viegli izveidot viedo displeju IoT tīklu datu vizualizācijai, lai papildinātu savus pētījumus datu zinātnē vai jebkurā kvantitatīvā jomā. Varat izsaukt " push " no jūsu zemes gabaliem klientiem tieši no jūsu
EAL-Industri4.0-RFID datu paraugu ņemšanas datu bāze: 10 soļi (ar attēliem)
EAL-Industri4.0-RFID datu paraugu ņemšana līdz datubāzei: Dette projekt omhandler opsamling af v æ gtdata, registreering af identiteter vha. RFID, satraucoši dati un lv MySQL datu bāze. mezgls RED, samt fremvisning og behandling af de opsamlede data i et C# program i form af en Windows Form Application