Sadržaj:
Video: ESP8266 Izravna komunikacija podacima: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Uvod
Dok sam radio neke projekte s Arduinos i nRF24l01 modulima, pitao sam se mogu li uštedjeti malo truda koristeći umjesto toga ESP8266 modul. Prednost modula ESP8266 je u tome š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 za 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 obzirom na projekt pogledao temu brzog i laganog prijenosa podataka između dva ESP8266 bez svih WWW i HTTP stvari.
Dok sam pretraživao internet za primjerima (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 donje primjere koji omogućuju brz i jednostavan prijenos podataka između dva ESP8266.
Korak 1: Granice i pozadina (TCP vs. UDP)
Da bi se do tamo došlo, neke se granice moraju pojasniti u usporedbi s nRF24l01.
Za korištenje ESP8266 unutar Arduino okruženja, osnovna knjižnica za korištenje je ESP8266WiFi.h. Mogu biti različiti, ali većina primjera koristi spomenuto na. Kad koristite ovo, morate svoju komunikaciju dovesti na razinu WiFi.
Dakle, za komunikaciju moraju postojati barem pristupna točka (AP) / poslužitelj i klijent. AP pruža naziv mreže i IP adrese, a klijent će se povezati s ovim poslužiteljem.
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štivati protokole prijenosa.
Postoje dva uobičajena protokola: TCP i UDP.
TCP (Transmission Control Protocol) je protokol koji omogućuje prijenos bez gubitka između poslužitelja i klijenta. Protokol uključuje „rukovanje“(puno zastavica i priznanja poslanih između obje strane) te numeriranje i otkrivanje paketa radi identifikacije i ponovnog prijenosa izgubljenih paketa. Osim toga, korištenjem svih ovih rukovanja protokol sprječava gubitak podataka zbog mnogih paketa poslanih istovremeno u mreži. Paketi podataka čekaju dok se ne prime.
UDP-u (User Datagram Protocol) nedostaju sva rukovanja, numeriranje paketa i ponovni prijenos. Njegovi su režijski troškovi stoga manji i nema potrebe za svim rukovanjima radi održavanja veze. UDP uključuje neke osnovne detekcije pogrešaka, ali bez ispravljanja (oštećeni paket se samo ispušta). Podaci se šalju, bez znanja, ako je primateljica slobodna primiti podatke. Istodobno se može sudariti više paketa jer svaka strana šalje podatke kad god je to potrebno. Izostavljanjem svih rukovanja, postoji jedna dodatna lijepa značajka UDP -a koja se naziva "multicast" i "broadcast". U slučaju "multicast" paketi podataka šalju se unaprijed definiranoj skupini članova, u "broadcast" paketima podataka šalju se svi povezani članovi. Time se znatno 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 Youtubeu ima dobrih videa koji to još bolje objašnjavaju.
Stoga je prilikom slanja podataka važno znati svoje potrebe:
- neiskvareni podaci, upravljanje više kolega rukovanjem → TCP
- podaci u stvarnom vremenu, brza veza → UDP
Prvo sam započeo s implementacijom TCP komunikacije (između jednog poslužitelja i jednog klijenta). Tijekom testiranja 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 na temelju UDP -a. Konačno sam oboje pristupila poslu. Tako će biti ponuđeno oba rješenja.
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 ispis 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
Za testiranje cijelog skupa koristio sam dva ESP8266 modula. Jedan modul je adapter ESP-01 + USB-to-UART. Drugi modul je modul temeljen na ESP-12 koji uključuje USB vezu, regulator napona i neke zabavne stvari poput prekidača, LDR-a i LED u više boja.
Modul USB-to-UART za ESP-01 morao je biti malo izmijenjen kako bi se mogao koristiti kao programer (opet Youtube autora Csongor Varga).
Da biste pokrenuli skice, morate instalirati knjižnice ESP8266 (kako je opisano na mnogim mjestima na internetu). U oba slučaja (TCP i UDP) postoji skica poslužitelja 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 sjećam se više gdje sam što našao, što je izvorni kod ili što sam promijenio. Stoga sam samo želio zahvaliti velikoj zajednici općenito na objavljivanju svih sjajnih primjera.
Korak 3: Skice
Kôd se sastoji od dvije skice (kako je objašnjeno), skice poslužitelja i skice klijenta, za TCP i UDP.
Preporučeni:
LoRa bežična komunikacija od 3 do 8 km s niskim troškovima E32 (sx1278/sx1276) uređaj za Arduino, Esp8266 ili Esp32: 15 koraka
LoRa bežična komunikacija od 3 km do 8 km s niskim troškovima E32 (sx1278/sx1276) Uređaj za Arduino, Esp8266 ili Esp32: Stvaram knjižnicu za upravljanje EBYTE E32 na temelju Semtech serije LoRa uređaja, vrlo snažan, jednostavan i jeftin uređaj. Možete pronaći Ovdje je verzija od 3 km, verzija od 8 kilometara Ovdje mogu raditi na udaljenostima od 3000 do 8000 metara, a imaju mnogo mogućnosti i
Pristup vašim Solaredge podacima pomoću Pythona: 4 koraka
Pristup vašim Solaredge podacima pomoću Pythona: Budući da se podaci solaredge transformatora ne pohranjuju lokalno, već na poslužiteljima solaredgea, htio sam koristiti svoje podatke lokalno, na ovaj način mogu koristiti podatke u vlastitim programima. Pokazat ću vam kako možete zatražiti svoje podatke na solaredge web stranicama
Pametna karta Idaha s LED podacima + umjetnost: 8 koraka (sa slikama)
Pametna karta Idaha s LED podacima + umjetnost: Oduvijek sam želio način umjetničkog i dinamičkog prikaza geografskih podataka pomoću " slikanja " karta sa svjetlom. Živim u Idahu i volim svoju državu pa sam mislio da bi ovo bilo odlično mjesto za početak! Osim što je umjetničko djelo
Daske za surfanje generirane podacima: 11 koraka (sa slikama)
Daske za surfanje generirane podacima: Ovo je preuzeto iz mog diplomskog rada iz industrijskog dizajna od prije otprilike godinu dana, pa mi je žao ako u tome ima nekih rupa u mom pamćenju bi moglo biti malo problema. To je eksperimentalni projekt i postoji toliko mnogo stvari koje su se mogle učiniti drugačije, don
Izgubljeni prsten - što učiniti s podacima o tragu: 6 koraka
Izgubljeni prsten - što učiniti s podacima o tragovima: Nakon što na računalu imate podatke o tragovima, ovaj Instructable će vam reći kako ih prenijeti na Seero, što će im omogućiti pregled na njihovom prilagođenom sloju KML -a za Google Earth svi ostali podaci o tragovima: http: //www.seero.com/c