Obsah:

Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266: 8 krokov
Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266: 8 krokov

Video: Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266: 8 krokov

Video: Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266: 8 krokov
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, November
Anonim
Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266
Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266

Na svojom prebiehajúcom projekte potrebujem viac ESP na vzájomnú komunikáciu bez smerovača. Na tento účel použijem ESP-NOW na vzájomnú bezdrôtovú komunikáciu bez smerovača na ESP.

Zásoby

Veci, ktoré som použil:

Modul ESP32 DEV

NODEMCU 1.0 (modul ESP12E)

Krok 1: Získajte adresu Mac rady

Získať adresu Mac rady
Získať adresu Mac rady
Získať adresu Mac rady
Získať adresu Mac rady

Prostredníctvom ESP-now zariadenia ESP medzi sebou komunikujú odosielaním údajov na svoju jedinečnú adresu, keď sú pripojené k internej sieti prístupových bodov vytvorenej pri okamžitej integrácii esp.. Určte teda MAC adresu každého zariadenia. V prílohe sú moje nastavenia dosky ESP32 a ESP8266

PRE ESP32

#include "WiFi.h" // Prístup k funkciám ESP32 WIFI

void setup () {Serial.begin (115200); Serial.print („Adresa MAC dosky ESP32:“); Serial.println (WiFi.macAddress ()); // vytlačí svoju MAC adresu} prázdna slučka () {}

PRE ESP8266

#include // Knižnica používaná na prístup k funkciám ESP8266 WIFI

void setup () {Serial.begin (115200); Serial.println (); Serial.print ("Adresa MAC dosky ESP8266:"); Serial.println (WiFi.macAddress ()); // vytlačí svoju MAC adresu} prázdna slučka () {}

Moje MAC ADRESY sú:

  • ESP32 - 30: AE: A4: F5: 03: A4
  • ESP8266: A4: CF: 12: C7: 9C: 77

Krok 2: Ako zabezpečiť, aby ESP-TERAZ fungovalo

Tu je prehľad, ako to funguje:

  1. Zahrňte knižnicu esp now a wifi
  2. Uložte mac adresu príjemcu ESP
  3. Definujte dátovú štruktúru správy odoslanej/prijatej
  4. V nastavení nastavte wifi na režim stanice
  5. Inicializujte esp_now
  6. vytvoriť a zaregistrovať funkciu spätného volania vyvolanú po odoslaní a prijatí údajov
  7. V prípade Esp8266 definujte jeho úlohu
  8. zaregistrujte rovesníka alebo príjemcu, napr
  9. Odoslať údaje

Krok 3: FUNKCIE ESP-TERAZ (ESP32)

esp_now_init (neplatné)

Návrat:

  • ESP_OK: uspieť
  • ESP_ERR_ESPNOW_INTERNAL: Interná chyba

Popis:

Inicializujte funkciu ESPNOW

esp_now_register_send_cb (cb)

Vrátené:

  • ESP_OK: uspieť
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
  • ESP_ERR_ESPNOW_INTERNAL: interná chyba

Parametre:

  • cb: názov funkcie spätného volania po odoslaní údajov ESPNOW s týmito parametrami:

    • neplatné cb (const uint8_t *mac_addr, esp_now_send_status_t status)

      • mac_addr: mac adresa prijímača
      • postavenie:

        • 1 = úspech
        • 0 = zlyhať

Popis:

Po odoslaní údajov ESPNOW zavolajte funkciu OnDataSent

esp_now_add_peerconst esp_now_peer_info_t *peer)

Vrátené:

  • ESP_OK: uspieť
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
  • ESP_ERR_ESPNOW_ARG: neplatný argument
  • ESP_ERR_ESPNOW_FULL: zoznam podobných spoločností je plný
  • ESP_ERR_ESPNOW_NO_MEM: nedostatok pamäte
  • ESP_ERR_ESPNOW_EXIST: partnerský vzťah existuje

Parametre:

  • peer: partnerské informácie s nasledujúcimi údajmi:

    • uint8_t

      peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW partnerská MAC adresa, ktorá je tiež MAC adresou stanice alebo softapu

    • uint8_t lmk [ESP_NOW_KEY_LEN]

      ESPNOW partnerský miestny hlavný kľúč, ktorý sa používa na šifrovanie údajov

    • kanál uint8_t

      Kanál Wi-Fi, ktorý partner používa na odosielanie/prijímanie údajov ESPNOW. Ak je hodnota 0, použite aktuálny kanál, na ktorom je stanica alebo softap zapnutý. V opačnom prípade musí byť nastavený ako kanál, na ktorom je stanica alebo softap zapnutý

    • wifi_interface_t ifidx

      Rozhranie Wi-Fi, ktoré partner používa na odosielanie/prijímanie údajov ESPNOW

    • bool šifrovanie

      Údaje ESPNOW, ktoré tento partner odosiela/prijíma, sú šifrované alebo nie

    • prázdny *priv

      ESPNOW partnerské súkromné údaje

Popis:

Pridajte partnera do zoznamu podobných

esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)

Vrátené:

  • ESP_OK: uspieť
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
  • ESP_ERR_ESPNOW_ARG: neplatný argument
  • ESP_ERR_ESPNOW_INTERNAL: interná chyba
  • ESP_ERR_ESPNOW_NO_MEM: nedostatok pamäte
  • ESP_ERR_ESPNOW_NOT_FOUND: partner sa nenašiel
  • ESP_ERR_ESPNOW_IF: aktuálne rozhranie WiFi sa nezhoduje s rozhraním od ostatných

Parametre:

  • peer_addr: peer MAC adresa
  • údaje: údaje na odoslanie
  • len: dĺžka údajov

Popis:

Odošlite údaje ESPNOW. V niektorých prípadoch sa to stane:

  • Ak peer_addr nemá NULL, odošlite údaje peerovi, ktorého adresa MAC sa zhoduje s peer_addr
  • Ak je hodnota peer_addr NULL, odošlite údaje všetkým partnerom, ktorí sú pridaní do zoznamu partnerov
  • Maximálna dĺžka údajov musí byť menšia ako ESP_NOW_MAX_DATA_LEN
  • Vyrovnávacia pamäť, na ktorú poukazuje argument údajov, nemusí byť platná po návrate esp_now_send

esp_now_register_recv_cb (cb)

Vrátené:

  • ESP_OK: uspieť
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
  • ESP_ERR_ESPNOW_INTERNAL: interná chyba

Parametre:

  • cb: funkcia spätného volania na príjem údajov ESPNOW

    • void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)

      • mac_addr:

        mac adresa prijímača

      • *údaje:

        príjem dát

      • data_len

        dĺžka dátového bajtu

Popis:

Po prijatí údajov ESPNOW zavolajte funkciu cb

Krok 4: FUNKCIE ESP-HNEĎ (ESP8266)

POPIS FUNKCIÍ ESP32 ESP8266

int esp_now_init (neplatné)

Vrátené:

  • 1 = úspech
  • 0 = zlyhať

Popis

Inicializujte funkciu ESPNOW

int esp_now_set_self_role (rola u8)

Parametre:

  • ESP_NOW_ROLE_IDLE: prenos údajov nie je povolený.
  • ESP_NOW_ROLE_CONTROLLER: priorita je daná rozhraniu Sation
  • ESP_NOW_ROLE_SLAVE: priorita je daná rozhraniu SoftAP
  • ESP_NOW_ROLE_COMBO: priorita je daná rozhraniu SoftAPinterface

Popis

Nastaví rolu zariadenia

int esp_now_register_send_cb (cb)

Vrátené:

  • 1 = úspech
  • 0 = zlyhať

Parametre:

  • cb: názov funkcie spätného volania po odoslaní údajov ESPNOW s týmito parametrami:

    • neplatné cb (const uint8_t *mac_addr, esp_now_send_status_t status)

      • mac_addr: mac adresa prijímača
      • postavenie:

        • 1 = úspech
        • 0 = zlyhať

Popis

Po odoslaní údajov ESPNOW zavolajte funkciu OnDataSent

int esp_now_add_peer (u8 *mac_addr, u8 rola, u8 kanál, u8 *kľúč, u8 key_len)

Vrátené:

  • 1 = úspech
  • 0 = zlyhať

Parametre:

  • mac_addr

    mac adresa partnera

  • úlohu
  • kanál

    Ak je hodnota 0, použite aktuálny kanál, na ktorom je stanica alebo softap zapnutý. V opačnom prípade musí byť nastavený ako kanál, na ktorom je stanica alebo softap zapnutý

  • *kľúč

    kľúč na šifrovanie

  • key_len

    dĺžka kľúča

Popis:

Pridajte partnera do zoznamu podobných

int esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)

Vrátené:

  • 1 = úspech
  • 0 = Zlyhanie

Parametre:

  • peer_addr: peer MAC adresa
  • údaje: údaje na odoslanie
  • len: dĺžka údajov

Popis:

Odošlite údaje ESPNOW. V niektorých prípadoch sa to stane:

  • Ak peer_addr nemá NULL, odošlite údaje peerovi, ktorého adresa MAC sa zhoduje s peer_addr
  • Ak je hodnota peer_addr NULL, odošlite údaje všetkým partnerom, ktorí sú pridaní do zoznamu partnerov
  • Maximálna dĺžka údajov musí byť menšia ako ESP_NOW_MAX_DATA_LEN
  • Vyrovnávacia pamäť, na ktorú poukazuje argument údajov, nemusí byť platná po návrate esp_now_send

int esp_now_register_recv_cb (cb)

Vrátené:

  • 1 = úspech
  • 0 = Zlyhanie

Parametre:

  • cb: funkcia spätného volania na príjem údajov ESPNOW

    • void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)

      • mac_addr:

        mac adresa prijímača

      • *údaje:

        príjem dát

      • data_len

        dĺžka dátového bajtu

Popis:

Po prijatí údajov ESPNOW zavolajte funkciu cb

Krok 5: Jednosmerná komunikácia (ESP32 ako odosielateľ)

ESP32 odosiela údaje do ESP8266. s týmto kódom. Zmeňte adresu broadcastAddress na svoju vlastnú adresu MAC prijímača. Moje bolo A4: CF: 12: C7: 9C: 77

// Pridajte potrebné knižnice

#include // Prístup k funkciám esp teraz #include // Pridanie funkcií Wifi na ESP32 // uloženie adresy MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa môjho prijímača/*definuje dátové typy viacerých premenných štruktúrované a všetky ich premenuje na struct_message*/typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte správu struct_message s názvom myData struct_message myData; // funkcia volaná pri odoslaní údajov na vytlačenie ich stavu neplatné OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Doručenie úspešné": "Doručenie zlyhalo"); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = ESP_OK) {Serial.println ("Chyba pri inicializácii ESP -NOW "); návrat; } // zavolajte funkciu OnDataSent po odoslaní údajov ESPNOW esp_now_register_send_cb (OnDataSent); // Registrácia peer esp_now_peer_info_t peerInfo; // inicializácia a priradenie peer informácií ako ukazovateľ addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // skopírujte hodnotu broadcastAddress so 6 bytmi na peerInfo.peer_addr peerInfo.channel = 0; // kanál, na ktorom hovoria esp. 0 znamená nedefinované a údaje budú odoslané na aktuálnom kanáli. 1-14 sú platné kanály, ktoré sú rovnaké s lokálnym zariadením peerInfo.encrypt = false; // nezašifrované // Pridajte zariadenie do zoznamu spárovaných zariadení, ak (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nepodarilo sa pridať peer"); návrat; }} void loop () {// Nastavte hodnoty na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // save a float myData.d = "Ahoj"; // uloženie reťazca myData.e = false; // uloženie boolu // Odoslanie údajov menších alebo rovných 250 bajtov prostredníctvom ESP-TERAZ a vráti jeho stav esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Odoslané úspešne"); } else {Serial.println ("Chyba pri odosielaní údajov"); } oneskorenie (2000); }

ESP8266 prijíma údaje z ESP32 pomocou tohto kódu.

// Pridajte potrebné knižnice

#include // Pridanie funkcií Wifi do systému ESP32 #include // Prístup k funkciám esp now /*definujte dátové typy viacerých štruktúrovaných premenných a premenujte ich všetky na struct_message* /typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte premennú struct_message s názvom myData struct_message myData; // funkcia volajúca po prijatí údajov a vytlačí ich neplatné OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = 0) {Serial.println ("Chyba pri inicializácii ESP-TERAZ"); návrat; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definuje úlohu tohto esp esp_now_register_recv_cb (OnDataRecv); // volanie funkcie OnDataRecv po prijatí údajov ESPNOW} void loop () {}

Krok 6: Jednosmerná komunikácia (ESP8266 ako odosielateľ)

ESP8266 odosiela údaje do ESP32. s týmto kódom. Zmeňte adresu broadcastAddress na svoju vlastnú adresu MAC prijímača. Moja adresa esp32 je 30: AE: A4: F5: 03: A4. Ďalšie funkcie pre esp8266 nájdete tu

// Pridajte potrebné knižnice

#include // Ak chcete pridať možnosti WiFi na ESP32 #include // Prístup k funkciám esp teraz // uložte adresu MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definujte dátové typy viacerých štruktúrovaných premenných a všetky ich premenujte na struct_message*/ typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte štruktúrovanú premennú s názvom myData struct_message myData; // funkcia volaná pri odoslaní údajov a vytlačenie jej stavu neplatné OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (sendStatus == 1? "Doručenie úspešné": "Doručenie zlyhalo"); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-HNED a vráti svoj stav, ak (esp_now_init ()) {Serial.println ("Chyba pri inicializácii ESP-HNEĎ"); návrat; } esp_now_register_send_cb (OnDataSent); // zavolajte funkciu OnDataSent po odoslaní údajov ESPNOW // Pridajte zariadenie do zoznamu spárovaných zariadení, ak (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Nepodarilo sa pridať peer"); návrat; }} void loop () {// Nastavte hodnoty na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // ulož float myData.d = "SP8266"; // uloženie reťazca myData.e = false; // save bool // Odoslanie údajov menších alebo rovných 250 bajtov cez ESP-NOW a vrátenie ich stavu int result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Odoslané úspešne"); } else {Serial.println ("Chyba pri odosielaní údajov"); } oneskorenie (2000); }

ESP32 prijíma údaje z ESP8266. s týmto kódom. Pre ostatné funkcie rozhodca tu

// Pridajte potrebné knižnice

#include // Prístup k funkciám esp teraz #include // Pridanie funkcií Wi -Fi na ESP32 /*definujte dátové typy viacerých štruktúrovaných premenných a premenujte ich všetky na struct_message* /typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte premennú struct_message s názvom myData struct_message myData; // funkcia volaná po prijatí údajov, ktorá ich vytlačí, neplatná OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = 0) {Serial.println ("Chyba pri inicializácii ESP-TERAZ"); návrat; } esp_now_register_recv_cb (OnDataRecv); // zavolať funkciu OnDataRecv po prijatí údajov ESPNOW} void loop () {}

Krok 7: DVOJCESTNÁ KOMUNIKÁCIA

DVOJCESTNÁ KOMUNIKÁCIA
DVOJCESTNÁ KOMUNIKÁCIA
DVOJCESTNÁ KOMUNIKÁCIA
DVOJCESTNÁ KOMUNIKÁCIA

ESP32 odosiela údaje o štarte do ESP8266. ESP8266 vytlačí prijatú správu a potom odpovie, na ktoré ESP32 vytlačí jej sériový monitor.

KÓD ESP32

// Pridajte potrebné knižnice

#include // Prístup k funkciám esp teraz #include // Pridanie funkcií Wifi na ESP32 // uloženie adresy MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa môjho prijímača/*definuje dátové typy viacerých premenných štruktúrované a všetky ich premenuje na struct_message*/typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorenie správy_štruktúry s názvom myData struct_message myData; // funkcia volaná pri odoslaní údajov na vytlačenie ich stavu neplatné OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Doručenie úspešné": "Doručenie zlyhalo"); if (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} neplatné OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = ESP_OK) {Serial.println ("Chyba pri inicializácii ESP -NOVE '); návrat; } // zavolajte funkciu OnDataSent po odoslaní údajov ESPNOW esp_now_register_send_cb (OnDataSent); // Registrácia peer esp_now_peer_info_t peerInfo; // inicializácia a priradenie peer informácií ako ukazovateľ addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // skopírujte hodnotu broadcastAddress so 6 bytmi na peerInfo.peer_addr peerInfo.channel = 0; // kanál, na ktorom hovoria esp. 0 znamená nedefinované a údaje budú odoslané na aktuálnom kanáli.1-14 sú platné kanály, ktoré sú rovnaké s lokálnym zariadením peerInfo.encrypt = false; // nezašifrované // Pridajte zariadenie do zoznamu spárovaných zariadení, ak (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nepodarilo sa pridať peer"); návrat; } esp_now_register_recv_cb (OnDataRecv); // volanie funkcie OnDataRecv po prijatí údajov ESPNOW send_data (); } void loop () {} void send_data () {Serial.println ("Odosielanie"); // Nastavte hodnoty na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // save a float myData.d = "ESP32"; // uloženie reťazca myData.e = false; // uloženie boolu // Odoslanie údajov menších alebo rovných 250 bajtov prostredníctvom ESP-TERAZ a vráti jeho stav esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Odoslané úspešne");} else {Serial.println ("Chyba pri odosielaní údajov"); }}

KÓD ESP8266

// Pridajte potrebné knižnice

#include // Ak chcete pridať možnosti WiFi na ESP32 #include // Prístup k funkciám esp teraz // uložte adresu MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definujte dátové typy viacerých štruktúrovaných premenných a všetky ich premenujte na struct_message*/ typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte premennú struct_message s názvom myData struct_message myData; // funkcia volajúca po prijatí údajov a vytlačí ich neplatné OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Float:"); Serial.println (myData.c); Serial.print ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); send_data (); } neplatné OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (sendStatus == 1? "Doručenie úspešné": "Doručenie zlyhalo"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Nastavenie hodnôt na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // ulož float myData.d = "ESP8266"; // uloženie reťazca myData.e = false; // uloženie boolu esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = 0) {Serial.println ("Chyba pri inicializácii ESP-TERAZ"); návrat; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Nepodarilo sa pridať peer"); návrat; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Definuje úlohu tohto esp esp_now_register_recv_cb (OnDataRecv); // zavolať funkciu OnDataRecv po prijatí údajov ESPNOW} void loop () {}

Krok 8: ODKAZY

ESPNOW_32_Priklad

ESPNOW_8266 Príklad

WIFI.h

ESP8266WiFi.h

esp_now.h pre ESP8266

esp_now.h pre ESP32

esp_now oficiálny dokument (Lepšie vysvetlenie funkcií)

ESP-HNEĎ Oficiálna príručka

Odporúča: