Taula de continguts:

ESP8266 Comunicació directa de dades: 3 passos
ESP8266 Comunicació directa de dades: 3 passos

Vídeo: ESP8266 Comunicació directa de dades: 3 passos

Vídeo: ESP8266 Comunicació directa de dades: 3 passos
Vídeo: BTT GTR v1.0/M5 v1.0 - Basics 2024, De novembre
Anonim
ESP8266 Comunicació directa de dades
ESP8266 Comunicació directa de dades

Introducció

Tot i haver realitzat alguns projectes amb mòduls Arduinos i nRF24l01, em preguntava si podia estalviar esforços utilitzant un mòdul ESP8266. L’avantatge del mòdul ESP8266 és que conté un microcontrolador a la placa, de manera que no cal cap placa Arduino addicional. A més, la mida de la memòria de l'ESP8266 és molt més gran i, pel que fa a la velocitat, l'ESP8266 funciona a 160 MHz com a màxim en lloc dels 16 MHz d'Arduino. Per descomptat, hi ha alguns aspectes negatius.

L'ESP8266 funciona només amb 3,3 V, té menys pins i li falten les entrades analògiques que té l'Arduino (en té un, però només per a 1,0 V i no per a 3,3 V). A més, hi ha molts més exemples de codi per a l'Arduino + nRF24l01, llavors hi ha per a l'ESP8266, especialment quan es tracta de transferència directa de dades.

Així doncs, amb un projecte en ment, vaig examinar el tema de la transferència de dades ràpida i lleugera entre dos ESP8266 sense totes les coses WWW i

Mentre cercava exemples a Internet (la majoria del codi següent es va triar de la xarxa en diversos llocs), em vaig trobar amb moltes preguntes sobre com implementar una transferència directa de dades sense els bons exemples de "fer-ho així". Hi havia algun exemple de codi, però sobretot amb la pregunta de per què no funcionava.

Així que després d’haver llegit i provat d’entendre, vaig crear els exemples següents que permeten la transferència ràpida i senzilla de dades entre dos ESP8266.

Pas 1: límits i antecedents (TCP vs. UDP)

Per arribar-hi, cal aclarir alguns límits en comparació amb el nRF24l01.

Per utilitzar l’ESP8266 a l’entorn Arduino, la biblioteca bàsica a utilitzar és l’ESP8266WiFi.h. Podrien ser diferents, però la majoria d’exemples utilitzen l’esmentat a. Quan utilitzeu això, haureu d’aconseguir la vostra comunicació al nivell de WiFi.

Per tant, per comunicar-se ha d’haver com a mínim un punt d’accés (AP) / servidor i un client. L’AP proporciona el nom de la xarxa i les adreces IP i el client es connectarà a aquest servidor.

Així, comparat amb el nRF24l01, on el codi als dos extrems és més o menys el mateix (excepte els canals de transmissió), el codi de l’ESP8266 és fonamentalment diferent, ja que un es configura com AP i l’altre com a client.

El següent tema és que, en lloc d’enviar només alguns bytes al nRF24l01, cal observar els protocols de transferència ESP8266.

Hi ha dos protocols comuns utilitzats: TCP i UDP.

El TCP (Transmission Control Protocol) és un protocol que permet una transmissió sense pèrdues entre un servidor i un client. El protocol incorpora "encaixades de mans" (moltes banderes i accessoris enviats entre ambdues parts) i numeració i detecció de paquets per identificar i retransmetre els paquets perduts. A més, mitjançant l'ús de totes aquestes encaixes de mans, el protocol evita la pèrdua de dades a causa de molts paquets enviats alhora a la xarxa. Els paquets de dades esperen fins que es poden rebre.

Al UDP (User Datagram Protocol) li falten totes les encaixes de mans, la numeració de paquets i la retransmissió. Per tant, la seva sobrecàrrega és més petita i no és necessari que tots els encaixos de mans mantinguin una connexió. UDP incorpora algunes deteccions bàsiques d'errors, però no hi ha cap correcció (el paquet malmès acaba de caure). Les dades s’envien, sense saber si la part receptora és lliure de rebre-les. Al mateix temps, diversos paquets poden xocar, ja que cada part envia les dades sempre que calgui. En ometre totes les encaixes de mans, hi ha una característica addicional d’UDP anomenada “multidifusió” i “transmissió”. En el cas de “multidifusió”, els paquets de dades s’envien a un grup predeterminat de membres, en forma de “transmissió” s’envien paquets de dades a tots els membres connectats. Això redueix considerablement la transferència de dades en cas que diversos membres rebin reproduccions (p. Ex., Enviant un canal de vídeo a diversos receptors o enviant l’hora actual a diversos dispositius connectats).

Hi ha alguns bons vídeos a Youtube que ho expliquen encara millor.

Per tant, a l’hora d’enviar dades, és important conèixer les vostres necessitats:

  • dades sense danyar, gestió de diversos parells mitjançant encaixades de mans → TCP
  • dades en temps real, connexió ràpida → UDP

Primer vaig començar amb la implementació d’una comunicació basada en TCP (entre un servidor i un client). En provar-lo, vaig tenir problemes d’aturada en la transmissió. Al principi, les dades s’intercanviaven ràpidament i, al cap d’un temps, la velocitat va baixar dràsticament. Vaig concloure que aquest era un problema típic de l'enfocament TCP (que estava malament!), De manera que després vaig canviar a una solució basada en UDP. Finalment, tots dos em vaig plantejar treballar. Per tant, es proporcionarà ambdues solucions.

Els esbossos següents tenen en comú TCP i UDP:

  • són independents de qualsevol xarxa WiFi existent. Per tant, funcionarà a qualsevol lloc allunyat d'Internet i dels enrutadors connectats.
  • envien dades ASCII per imprimir-les mitjançant el monitor sèrie.
  • envien dades obtingudes per la funció millis (), per analitzar la velocitat de la transmissió.
  • no s'han provat per a diversos clients (a causa de tenir el maquinari per configurar la xarxa ara mateix)

Pas 2: maquinari

Maquinari
Maquinari
Maquinari
Maquinari
Maquinari
Maquinari
Maquinari
Maquinari

Per provar tota la configuració, he utilitzat dos mòduls ESP8266. Un mòdul és un adaptador ESP-01 + USB a UART. L’altre mòdul és un mòdul basat en l’ESP-12 que incorpora la connexió USB, el regulador de voltatge i algunes coses divertides, com ara interruptors, LDR i LED multicolor.

Calia modificar una mica el mòdul USB a UART de l’ESP-01 per poder utilitzar-lo com a programador (de nou Youtube de Csongor Varga).

Per executar els esbossos, heu d’instal·lar les biblioteques ESP8266 (tal com es descriu a molts llocs d’Internet). En ambdós casos (TCP i UDP) hi ha un esbós de servidor i client. Quin esbós es carrega a quin mòdul no importa.

Agraïments

Com es va esmentar, els esbossos es basen en molts fragments que he trobat al web. Ja no recordo on he trobat què, i què és el codi original o què he canviat. Per tant, només volia donar les gràcies a la gran comunitat en general per la publicació de tots els grans exemples.

Pas 3: els esbossos

El codi consta de dos esbossos cadascun (tal com s’explica), un esbós de servidor i un esbós de client, per a TCP i UDP cadascun.

Recomanat: