Sisällysluettelo:
Video: ESP8266 Suora tiedonsiirto: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Johdanto
Tehtyäni joitain projekteja Arduinos- ja nRF24l01 -moduuleilla mietin, voisinko säästää vaivaa käyttämällä ESP8266 -moduulia. ESP8266 -moduulin etuna on, että siinä on mikro -ohjain, joten Arduino -korttia ei tarvita. Lisäksi ESP8266: n muistikoko on paljon suurempi ja nopeuden suhteen ESP8266 toimii enintään 160 MHz: llä Arduinon 16 MHz: n sijasta. Toki negatiivisiakin puolia on.
ESP8266 toimii vain 3,3 V: lla, siinä on vähemmän nastoja ja siitä puuttuu Arduinon mukavat analogiset tulot (siinä on yksi, mutta vain 1,0 V eikä 3,3 V). Lisäksi Arduino + nRF24l01: lle on paljon enemmän koodiesimerkkejä kuin ESP8266: lle, varsinkin kun kyse on suorasta tiedonsiirrosta.
Joten projektia ajatellen tutkin aihetta nopeasta ja kevyestä tiedonsiirrosta kahden ESP8266: n välillä ilman kaikkea WWW- ja HTTP -tavaraa.
Etsiessäni esimerkkejä Internetistä (suurin osa alla olevasta koodista on poimittu verkosta eri paikoista) törmäsin moniin kysymyksiin, kuinka suora tiedonsiirto voidaan toteuttaa ilman hienoja "tee se näin" -esimerkkejä. Siinä oli esimerkki koodi, mutta enimmäkseen kysymys, miksi se ei toiminut.
Joten lukemisen ja ymmärtämisen yrittämisen jälkeen loin alla olevat esimerkit, jotka mahdollistavat nopean ja yksinkertaisen tiedonsiirron kahden ESP8266: n välillä.
Vaihe 1: Rajat ja taustat (TCP vs. UDP)
Sinne pääsemiseksi joitakin rajoja on selvennettävä verrattuna nRF24l01: een.
ESP8266: n käyttämiseksi Arduino -ympäristössä peruskirjasto on ESP8266WiFi.h. Ne voivat olla erilaisia, mutta useimmat esimerkit käyttävät edellä mainittuja. Kun käytät tätä, sinun on saatava viestintä WiFi -tasolle.
Joten kommunikointiin tarvitaan ainakin tukiasema (AP) / palvelin ja asiakas. Tukiasema antaa verkon nimen ja IP -osoitteet, ja asiakas muodostaa yhteyden tähän palvelimeen.
Joten verrattuna nRF24l01: een, jossa koodi molemmissa päissä on suunnilleen sama (lähetyskanavia lukuun ottamatta), ESP8266: n koodi on pohjimmiltaan erilainen, koska toinen on määritetty AP: ksi ja toinen asiakkaaksi.
Seuraava aihe on, että sen sijaan, että lähetettäisiin vain joitain tavuja nRF24l01: lle, ESP8266 -siirtoprotokollia on noudatettava.
Yleisesti käytettyjä protokollia on kaksi: TCP ja UDP.
TCP (Transmission Control Protocol) on protokolla, joka mahdollistaa häviöttömän siirron palvelimen ja asiakkaan välillä. Protokolla sisältää "kädenpuristukset" (paljon lippuja ja korotuksia molempien osapuolten välillä) ja pakettien numeroinnin ja havaitsemisen kadonneiden pakettien tunnistamiseksi ja uudelleenlähettämiseksi. Lisäksi käyttämällä kaikkia näitä kättelyjä protokolla estää tietoja, jotka menetetään useiden samanaikaisesti verkossa lähetettävien pakettien vuoksi. Datapaketit odottavat, kunnes ne voidaan vastaanottaa.
UDP: stä (User Datagram Protocol) puuttuu kaikki kädenpuristukset, pakettien numerointi ja uudelleenlähetys. Sen yleiskustannukset ovat siksi pienemmät, eikä kaikkien kädenpuristusten tarvitse ylläpitää yhteyttä. UDP sisältää joitakin perusvirheentunnistuksia, mutta ei korjausta (vioittunut paketti pudotetaan juuri). Tiedot lähetetään tietämättä, onko vastaanottava osapuoli vapaa vastaanottamaan tiedot. Samaan aikaan useat paketit voivat törmätä, koska kukin osapuoli lähettää tiedot aina tarvittaessa. Kun kaikki kädenpuristukset jätetään pois, UDP: ssä on yksi mukava lisäominaisuus, nimeltään "multicast" ja "broadcast". "Multicast" -tapauksessa datapaketit lähetetään ennalta määrätylle jäsenryhmälle, "broadcast" -datapaketit lähetetään kaikille yhdistetyille jäsenille. Tämä vähentää tiedonsiirtoa huomattavasti, jos useat jäsenet vastaanottavat virtoja (esim. Lähettämällä videosyötteen useille vastaanottimille tai lähettämällä nykyisen ajan useille yhdistetyille laitteille).
Youtubessa on hyviä videoita, jotka selittävät sen vielä paremmin.
Joten tietoja lähetettäessä on tärkeää tietää tarpeesi:
- vioittumaton data, useiden vertaisten hallinta kättelyillä → TCP
- reaaliaikainen data, nopea yhteys → UDP
Aloitin ensin TCP -pohjaisen viestinnän toteuttamisen (yhden palvelimen ja yhden asiakkaan välillä). Testauksen aikana minulla oli siirto -ongelmia. Alussa tietoja vaihdettiin nopeasti, sitten jonkin ajan kuluttua nopeus laski dramaattisesti. Päätin, että tämä oli tyypillinen TCP -lähestymistavan ongelma (mikä oli väärin!), Joten muutin sitten ratkaisuksi, joka perustuu UDP: hen. Lopulta lähestyin molempia toimimaan. Joten molemmat ratkaisut tarjotaan.
Alla olevilla luonnoksilla on yhteistä TCP: lle ja UDP: lle:
- ovat riippumattomia olemassa olevasta WiFi -verkosta. Joten se toimii missä tahansa kaukana Internetistä ja yhdistetyistä reitittimistä.
- lähettävät ASCII -tietoja tulostettavaksi sarjamonitorin kautta.
- lähettävät millis ()-funktion keräämiä tietoja lähetyksen nopeuden analysoimiseksi.
- ei ole testattu useille asiakkaille (koska verkon asentamiseen tarvittava laitteisto on juuri nyt)
Vaihe 2: Laitteisto
Koko kokoonpanon testaamiseen käytin kahta ESP8266 -moduulia. Yksi moduuli on ESP-01 + USB-UART-sovitin. Toinen moduuli on ESP-12-pohjainen moduuli, joka sisältää USB-liitännän, jännitesäätimen ja joitain hauskoja juttuja, kuten kytkimet, LDR ja monivärinen LED.
ESP-01: n USB-UART-moduulia oli muutettava hieman, jotta sitä voitaisiin käyttää ohjelmoijana (jälleen Youtube, Csongor Varga).
Luonnosten suorittamiseksi sinun on asennettava ESP8266 -kirjastot (kuten on kuvattu monissa paikoissa Internetissä). Molemmissa tapauksissa (TCP ja UDP) on palvelin- ja asiakasluonnos. Mikä luonnos ladataan mihin moduuliin, ei ole väliä.
Kiitokset
Kuten mainittiin, luonnokset perustuvat moniin bitteihin, jotka löysin verkosta. En muista enää mistä löysin mitä, ja mikä on alkuperäinen koodi tai mitä muutin. Joten halusin vain kiittää suurta yhteisöä yleensä kaikkien hienojen esimerkkien julkaisemisesta.
Vaihe 3: Luonnokset
Koodi koostuu kahdesta luonnoksesta (kuten selitetty), palvelinpiirustuksesta ja asiakasluonnoksesta, kumpikin TCP: lle ja UDP: lle.
Suositeltava:
MIDI-ohjattu askelmoottori, jossa on suora digitaalinen synteesi (DDS) -piiri: 3 vaihetta
MIDI-ohjattu askelmoottori, jossa on suora digitaalinen synteesi (DDS) -piiri: Onko sinulla koskaan ollut aavistusta, että sinun täytyi muuttua miniprojektiksi? No, pelasin luonnoksella, jonka olin tehnyt Arduino Due: lle ja jonka tarkoituksena oli tehdä musiikkia AD9833 Direct Digital Synthesis (DDS) -moduulilla … ja jossain vaiheessa ajattelin & q
LoRa 3–8 km: n langaton tiedonsiirto edullisilla E32 -laitteilla (sx1278/sx1276) Arduino-, Esp8266- tai Esp32 -laitteille: 15 vaihetta
LoRa 3Km - 8Km Langaton tiedonsiirto edullisilla E32 (sx1278/sx1276) -laitteilla Arduinolle, Esp8266: lle tai Esp32: Luon kirjaston EBYTE E32: n hallintaan perustuen LoRa -laitteen Semtech -sarjaan, erittäin tehokas, yksinkertainen ja halpa laite. 3 km: n versio täällä, 8 km: n versio täällä He voivat työskennellä 3000–8000 metrin etäisyydellä, ja niissä on paljon ominaisuuksia
ESP8266 ja Python -tiedonsiirto Noobs: 6 vaihetta
ESP8266 ja Python -tiedonsiirto Noobs: Tämän oppaan avulla voit saada tietoja ESP8266: sta ja hallita sitä pythonilla ilman AT -komentoja. Aloittelijoille suurin osa ESP8266: n käyttöä koskevista oppaista on vaikeita, koska he haluavat sinun vilkkuvan "KÄSKYILLE"”Siruksi, joka on: tarpeetonta hukkaa
RTL-SDR-suora näytteenottotila: 3 vaihetta
RTL-SDR-suora näytteenottomoduuli: Monet dongleista eivät pysty käyttämään alle 30 Mhz: n taajuuksia, mutta joitain laitteita on mahdollista muokata niin, että käytetään suoraa näytteenottomenetelmää. Suorassa näytteenotossa lähetämme signaalin suoraan dongleiden aivoihin ohittamalla tehokkaasti t
Tukiasema - Aseman tiedonsiirto kahden ESP8266 MCU: n välillä: 3 vaihetta
Tukiasema - Aseman tiedonsiirto kahden ESP8266 MCU: n välillä: Hei Makers! Edellisessä ohjeessani tein WiFi -yhteyden kahden ESP8266 MCU: n välillä kodin WiFi -reitittimen kautta. Kuten kommenteista huomasin, on valmistajia, jotka haluavat käyttää ESP8266 MCU -laitteita kaukana reitittimen kantamasta. Tässä siis baari