Obsah:
Video: ESP8266 Priama dátová komunikácia: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Úvod
Keď som robil niekoľko projektov s modulmi Arduinos a nRF24l01, premýšľal som, či by som mohol ušetriť nejaké úsilie tým, že namiesto toho použijem modul ESP8266. Výhodou modulu ESP8266 je, že obsahuje na doske mikroprocesor, takže nie je potrebná žiadna ďalšia doska Arduino. Navyše veľkosť pamäte ESP8266 je oveľa väčšia a pokiaľ ide o rýchlosť, ESP8266 beží na max. 160 MHz namiesto 16 MHz na Arduine. Samozrejme, existujú aj negatívne stránky.
ESP8266 beží iba na 3,3 V, má menej pinov a chýbajú mu pekné analógové vstupy, ktoré má Arduino (má jeden, ale iba na 1,0 V a nie na 3,3 V). Okrem toho existuje mnoho ďalších príkladov kódu pre Arduino + nRF24l01, potom existuje pre ESP8266, najmä pokiaľ ide o priamy prenos údajov.
S ohľadom na projekt som sa teda zaoberal témou rýchleho a ľahkého prenosu dát medzi dvoma ESP8266 bez všetkých záležitostí WWW a
Pri hľadaní príkladov na internete (väčšina nižšie uvedeného kódu bola vybratá zo siete na rôznych miestach) som narazil na mnoho otázok, ako implementovať priamy prenos údajov bez pekných príkladov typu „urob to tak“. Existoval nejaký ukážkový kód, ale väčšinou s otázkou, prečo nefungoval.
Po prečítaní a pokuse o porozumenie som vytvoril nižšie uvedené príklady, ktoré umožňujú rýchly a jednoduchý prenos údajov medzi dvoma ESP8266.
Krok 1: Hranice a pozadia (TCP vs. UDP)
Aby sa tam dostali, musia byť v porovnaní s nRF24l01 objasnené niektoré hranice.
Na používanie ESP8266 v prostredí Arduino je základnou knižnicou ESP8266WiFi.h. Môžu to byť rôzne, ale väčšina príkladov používa uvedené. Keď to používate, musíte dostať svoju komunikáciu na úroveň WiFi.
Na komunikáciu teda musí existovať aspoň prístupový bod (AP) / server a klient. AP poskytuje názov siete a IP adresy a klient sa k tomuto serveru pripojí.
V porovnaní s nRF24l01, kde je kód na oboch koncoch viac -menej rovnaký (okrem prenosových kanálov), je kód ESP8266 zásadne odlišný, pretože jeden je nakonfigurovaný ako AP a druhý ako klient.
Ďalšou témou je, že namiesto odosielania niektorých bytov na nRF24l01 je potrebné sledovať prenosové protokoly ESP8266.
Existujú dva bežne používané protokoly: TCP a UDP.
TCP (Transmission Control Protocol) je protokol, ktorý umožňuje bezstratový prenos medzi serverom a klientom. Protokol obsahuje „podania rúk“(množstvo vlajok a acknoledge odoslaných medzi obidvoma stranami) a číslovanie a detekciu paketov na identifikáciu a opätovný prenos stratených paketov. Navyše, použitím všetkých týchto handshakes protokol zabráni strate dát kvôli mnohým paketom odosielaným súčasne v sieti. Dátové pakety čakajú na ich prijatie.
V protokole UDP (User Datagram Protocol) chýbajú všetky podania rúk, číslovanie paketov a opakovaný prenos. Jeho réžia je preto menšia a nie sú potrebné všetky podania rúk, aby sa udržalo spojenie. UDP obsahuje základnú detekciu chýb, ale žiadnu opravu (poškodený balík je práve zrušený). Údaje sa odosielajú bez toho, aby bolo známe, či je príjemca oprávnený údaje prijímať. Súčasne môže dôjsť k stretu viacerých paketov, pretože každá strana odosiela údaje vždy, keď je to potrebné. Vynechaním všetkých potrasení rukou existuje ešte jedna pekná funkcia UDP s názvom „multicast“a „broadcast“. V prípade „multicast“sa dátové pakety odosielajú do vopred definovanej skupiny členov, v prípade „vysielania“sa pakety odosielajú všetkým pripojeným členom. To značne obmedzuje prenos dát v prípade tokov, ktoré majú byť prijímané viacerými členmi (napr. Odoslaním video kanála do viacerých prijímačov alebo odoslaním aktuálneho času do viacerých pripojených zariadení).
Na Youtube je niekoľko dobrých videí, ktoré to ešte lepšie vysvetľujú.
Pri odosielaní údajov je preto dôležité poznať svoje potreby:
- nepoškodené údaje, správa viacerých rovesníkov podaním rúk → TCP
- údaje v reálnom čase, rýchle pripojenie → UDP
Najprv som začal s implementáciou komunikácie založenej na TCP (medzi jedným serverom a jedným klientom). Pri testovaní som mal problémy s prenosom. Na začiatku sa údaje rýchlo vymieňali, potom po chvíli rýchlosť dramaticky klesla. Dospel som k záveru, že ide o typický problém prístupu TCP (čo bolo nesprávne!), Preto som sa zmenil na riešenie založené na UDP. Nakoniec som oboch pristúpil k práci. Poskytne sa teda obe riešenie.
Nasledujúce náčrty majú pre TCP a UDP spoločné tieto:
- sú nezávislé od akejkoľvek existujúcej siete WiFi. Bude teda fungovať kdekoľvek ďaleko od internetu a pripojených smerovačov.
- odosielajú údaje ASCII na tlač prostredníctvom sériového monitora.
- odosielajú údaje získané pomocou funkcie millis () na analýzu rýchlosti prenosu.
- nie sú testované pre viacerých klientov (kvôli hardvéru na nastavenie siete práve teraz)
Krok 2: Hardvér
Na testovanie celej zostavy som použil dva moduly ESP8266. Jeden modul je adaptér ESP-01 + USB-UART. Druhý modul je modul založený na ESP-12, ktorý obsahuje pripojenie USB, regulátor napätia a niekoľko zábavných prvkov, ako sú prepínače, LDR a viacfarebné diódy LED.
Modul USB-to-UART pre ESP-01 bolo potrebné trochu upraviť, aby ho bolo možné použiť ako programátora (opäť Youtube od Csongora Vargu).
Na spustenie náčrtov je potrebné nainštalovať knižnice ESP8266 (ako je popísané na mnohých miestach na internete). V oboch prípadoch (TCP a UDP) existuje skica servera a klienta. Na tom, ktorý náčrt je načítaný, do ktorého modulu nezáleží.
Poďakovanie
Ako už bolo spomenuté, náčrty sú založené na mnohých kúskoch, ktoré som našiel na webe. Už si nepamätám, kde som čo našiel a čo je pôvodný kód alebo čo som zmenil. Preto som sa chcel poďakovať širokej komunite všeobecne za to, že zverejnila všetky skvelé príklady.
Krok 3: Skice
Kód sa skladá z dvoch skíc, každá (ako je vysvetlené), serverovej a klientskej, pre TCP a UDP.
Odporúča:
Bezdrôtová komunikácia SmartHome: Extrémne základy MQTT: 3 kroky
Bezdrôtová komunikácia SmartHome: Extrémne základy MQTT: Základy MQTT: ** Budem robiť sériu domácej automatizácie, prejdem krokmi, ktoré som urobil, aby som sa v budúcnosti dozvedel všetko, čo som urobil. Tento návod je východiskovým bodom pre nastavenie MQTT na použitie v mojich budúcich pokynoch. Ako
KOMUNIKÁCIA SNÍMAČA NAD USB: 3 kroky
KOMUNIKÁCIA SNÍMAČA NAD USB: Tento tutoriál ukazuje, ako používať izolovanú nosnú dosku USB EZO na interakciu s obvodmi EZO. V niekoľkých jednoduchých krokoch budete môcť kalibrovať a ladiť obvody alebo dokonca monitorovať príslušný parameter v reálnom čase. VÝHODY:
Somatic - Dátová rukavica pre skutočný svet: 6 krokov (s obrázkami)
Somatic-Dátové rukavice pre skutočný svet: neodymové magnety s priemerom 4 mm a neodymové magnety s priemerom 4 mm Somatic je prenosná klávesnica a myš, ktorá je pohodlná, ničím neruší a je pripravená na celodenné nosenie. Je vybavený všetkým hardvérom na preklad ručných značiek a
Priama vstupná kolíska mobilného telefónu: 10 krokov
Priama vstupná kolíska mobilného telefónu: Viem. Svet potrebuje ďalší držiak na mobil asi tak, ako ja dieru v hlave. Šokujúce je, že som nemohol nájsť držiak mobilného telefónu pre moje nákladné auto, ktorý by vyhovoval mojim potrebám. Nemyslel som si, že moje potreby sú také exotické, ale nemohol som nájsť
Prístupový bod - komunikácia stanice medzi dvoma MCU ESP8266: 3 kroky
Prístupový bod - komunikácia stanice medzi dvoma MCU ESP8266: Dobrý deň, tvorcovia! V mojom predchádzajúcom pokyne som uskutočnil WiFi komunikáciu medzi dvoma MCU ESP8266 prostredníctvom domáceho WiFi routera. Ako som videl z komentárov, existujú výrobcovia, ktorí by chceli používať MCU ESP8266 ďaleko od dosahu smerovača. Tu je teda bar