Obsah:
Video: Přímá datová komunikace ESP8266: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Ú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
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:
Raspberry PI 3 - Povolení sériové komunikace pro kroky TtyAMA0 až BCM GPIO 14 a GPIO 15: 9
Raspberry PI 3 - Povolení sériové komunikace na TtyAMA0 až BCM GPIO 14 a GPIO 15: Nedávno jsem měl zájem povolit UART0 na svém Raspberry Pi (3b), abych jej mohl připojit přímo k zařízení s úrovní signálu RS -232 pomocí standardního 9 -pinový konektor d-sub, aniž byste museli procházet adaptérem USB na RS-232. Část mého zájmu
Bezdrátová komunikace SmartHome: extrémní základy MQTT: 3 kroky
Bezdrátová komunikace SmartHome: extrémní základy MQTT: Základy MQTT: ** Budu dělat sérii domácí automatizace, projdu kroky, které jsem podnikl, abych se v budoucnu naučil vše, co jsem udělal. This Instructable is the baseline on how to setup MQTT for use in my future Instructables. Howeve
KOMUNIKACE SENZORU PŘES USB: 3 kroky
KOMUNIKACE SENZORU PŘES USB: Tento tutoriál ukazuje, jak pomocí izolované nosné desky USB EZO komunikovat s obvody EZO. Pomocí několika jednoduchých kroků budete moci kalibrovat a ladit obvody nebo dokonce sledovat v reálném čase dotyčný parametr. VÝHODY:
Somatic - datová rukavice pro skutečný svět: 6 kroků (s obrázky)
Somatic-Datové rukavice pro skutečný svět: neodymové magnety o průměru 4 mm Neodymové magnety o průměru 4 mm Somatic je přenosná klávesnice a myš, která je pohodlná, ničím neruší a je připravena na celodenní nošení. Je nabitý veškerým hardwarem pro překlad ručních značek a
Přístupový bod - komunikace stanice mezi dvěma MCU ESP8266: 3 kroky
Přístupový bod - komunikace stanice mezi dvěma MCU ESP8266: Dobrý den, tvůrci! Ve svém předchozím pokynu jsem provedl WiFi komunikaci mezi dvěma MCU ESP8266 prostřednictvím domácího WiFi routeru. Jak jsem viděl z komentářů, existují výrobci, kteří by chtěli používat MCU ESP8266 daleko od dosahu routeru. Takže tady je bar