Obsah:

Přímá datová komunikace ESP8266: 3 kroky
Přímá datová komunikace ESP8266: 3 kroky

Video: Přímá datová komunikace ESP8266: 3 kroky

Video: Přímá datová komunikace ESP8266: 3 kroky
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Červenec
Anonim
Přímá datová komunikace ESP8266
Přímá datová komunikace ESP8266

Úvod

Zatímco jsem dělal nějaké projekty s moduly Arduinos a nRF24l01, přemýšlel jsem, jestli bych mohl ušetřit nějaké úsilí tím, že místo toho použiji modul ESP8266. Výhodou modulu ESP8266 je, že obsahuje na desce mikrořadič, takže není potřeba žádná další deska Arduino. Kromě toho je velikost paměti ESP8266 mnohem větší a pokud jde o rychlost, ESP8266 běží maximálně na 160 MHz namísto 16 MHz na Arduinu. Samozřejmě existují některé negativní stránky.

ESP8266 běží pouze na 3,3 V, má méně pinů a chybí mu pěkné analogové vstupy, které Arduino má (má jeden, ale pouze pro 1,0 V a ne 3,3 V). Kromě toho existuje mnoho dalších příkladů kódu pro Arduino + nRF24l01 než pro ESP8266, zejména pokud jde o přímý přenos dat.

Takže s ohledem na projekt jsem se podíval na téma rychlého a lehkého přenosu dat mezi dvěma ESP8266 bez všech věcí WWW a

Při hledání příkladů na internetu (většina níže uvedeného kódu byla vybrána ze sítě na různých místech) jsem narazil na mnoho otázek, jak implementovat přímý přenos dat bez pěkných příkladů typu „udělej to takhle“. Existoval nějaký ukázkový kód, ale většinou s otázkou, proč to nefunguje.

Po přečtení a pokusu o porozumění jsem vytvořil níže uvedené příklady, které umožňují rychlý a jednoduchý přenos dat mezi dvěma ESP8266.

Krok 1: Hranice a pozadí (TCP vs. UDP)

Abychom se tam dostali, je třeba ve srovnání s nRF24l01 vyjasnit některé hranice.

Chcete -li používat ESP8266 v prostředí Arduino, základní knihovnou, kterou je třeba použít, je ESP8266WiFi.h. Mohou to být různé, ale většina příkladů používá uvedené. Když to používáte, musíte dostat svou komunikaci na úroveň WiFi.

Ke komunikaci tedy musí existovat alespoň přístupový bod (AP) / server a klient. AP poskytuje název sítě a IP adresy a klient se k tomuto serveru připojí.

Takže ve srovnání s nRF24l01, kde je kód na obou koncích víceméně stejný (kromě přenosových kanálů), je kód ESP8266 zásadně odlišný, protože jeden je konfigurován jako AP a druhý jako klient.

Dalším tématem je, že místo posílání některých bytů na nRF24l01 je třeba dodržovat přenosové protokoly ESP8266.

Existují dva běžně používané protokoly: TCP a UDP.

TCP (Transmission Control Protocol) je protokol, který umožňuje bezztrátový přenos mezi serverem a klientem. Protokol obsahuje „handshakes“(spousta vlajek a acknoledge odeslaných mezi oběma stranami) a číslování a detekci paketů za účelem identifikace a opětovného přenosu ztracených paketů. Kromě toho protokol pomocí všech těchto handshakes zabrání ztrátě dat v důsledku odesílání mnoha paketů současně v síti. Datové pakety čekají na jejich přijetí.

UDP (User Datagram Protocol) postrádá všechna podání rukou, číslování paketů a opakovaný přenos. Jeho režie je proto menší a není nutné, aby všechny stisky rukou udržovaly spojení. UDP obsahuje základní detekci chyb, ale žádnou opravu (poškozený balíček je právě zrušen). Data jsou odesílána bez vědomí, zda je přijímající strana oprávněna data přijímat. Současně se může srazit více paketů, protože každá strana odesílá data, kdykoli je to potřeba. Vynecháním všech potřesení rukou existuje ještě jedna pěkná funkce UDP s názvem „vícesměrové vysílání“a „vysílání“. V případě „vícesměrového vysílání“jsou datové pakety odesílány do předem definované skupiny členů, v případě „vysílání“jsou datové pakety odesílány všem připojeným členům. To značně omezuje přenos dat v případě streamů, které mají být přijímány více členy (např. Odesláním video signálu do více přijímačů nebo odesláním aktuálního času do více připojených zařízení).

Na Youtube je několik dobrých videí, která to vysvětlují ještě lépe.

Při odesílání dat je tedy důležité znát své potřeby:

  • nepoškozená data, správa více vrstevníků handshakes → TCP
  • data v reálném čase, rychlé připojení → UDP

Nejprve jsem začal s implementací komunikace založené na TCP (mezi jedním serverem a jedním klientem). Při testování jsem měl problémy s přenosem. Ze začátku se data vyměňovala rychle, pak po chvíli rychlost dramaticky klesla. Došel jsem k závěru, že se jedná o typický problém přístupu TCP (což bylo špatně!), A tak jsem to změnil na řešení založené na UDP. Nakonec jsem k práci přistoupil oba. Bude tedy poskytnuto obě řešení.

Níže uvedené náčrty mají pro TCP a UDP společné tyto:

  • jsou nezávislé na jakékoli stávající WiFi síti. Bude tedy fungovat kdekoli daleko od internetu a připojených routerů.
  • odesílají data ASCII k tisku přes sériový monitor.
  • odesílají data získaná funkcí millis () pro analýzu rychlosti přenosu.
  • nejsou testovány pro více klientů (kvůli hardwaru k nastavení sítě právě teď)

Krok 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

K otestování celé sestavy jsem použil dva moduly ESP8266. Jeden modul je adaptér ESP-01 + USB-UART. Druhý modul je modul založený na ESP-12, který obsahuje připojení USB, regulátor napětí a několik zábavných věcí, jako jsou přepínače, LDR a vícebarevná LED.

Modul USB-to-UART pro ESP-01 potřeboval trochu upravit, aby jej mohl používat jako programátor (opět Youtube od Csongora Vargy).

Chcete -li spustit skici, musíte nainstalovat knihovny ESP8266 (jak je popsáno na mnoha místech na internetu). V obou případech (TCP i UDP) existuje skica serveru a klienta. Nezáleží na tom, která skica je načtena do kterého modulu.

Poděkování

Jak již bylo zmíněno, skici vycházejí z mnoha kousků, které jsem našel na webu. Už si nepamatuji, kde jsem co našel a co je původní kód nebo co jsem změnil. Chtěl jsem tedy jen poděkovat velké komunitě obecně za zveřejnění všech skvělých příkladů.

Krok 3: Skici

Kód se skládá ze dvou skic, každá (jak bylo vysvětleno), skici serveru a náčrtu klienta, každý pro TCP a UDP.

Doporučuje: