Obsah:

Jak vytvořit více rozhovorů ESP prostřednictvím ESP-NOW pomocí ESP32 a ESP8266: 8 kroků
Jak vytvořit více rozhovorů ESP prostřednictvím ESP-NOW pomocí ESP32 a ESP8266: 8 kroků

Video: Jak vytvořit více rozhovorů ESP prostřednictvím ESP-NOW pomocí ESP32 a ESP8266: 8 kroků

Video: Jak vytvořit více rozhovorů ESP prostřednictvím ESP-NOW pomocí ESP32 a ESP8266: 8 kroků
Video: Shelly Příběh: Od běžného spínače k ovládání chytrého ohřívače vody pomocí Bluetooth přes ESPHome 2024, Červenec
Anonim
Jak vytvořit více rozhovorů ESP přes ESP-NYNÍ pomocí ESP32 a ESP8266
Jak vytvořit více rozhovorů ESP přes ESP-NYNÍ pomocí ESP32 a ESP8266

Na mém probíhajícím projektu potřebuji více ESP, abychom spolu mohli mluvit bez routeru. K tomu použiji ESP-NOW k bezdrátové komunikaci mezi sebou bez routeru na ESP.

Zásoby

Věci, které jsem použil:

Modul ESP32 DEV

NODEMCU 1.0 (modul ESP12E)

Krok 1: Získejte adresu Mac rady

Získejte adresu Mac rady
Získejte adresu Mac rady
Získejte adresu Mac rady
Získejte adresu Mac rady

Prostřednictvím ESP-now zařízení ESP hovoří mezi sebou odesíláním dat na svou jedinečnou adresu, zatímco jsou připojeni k interní síti přístupových bodů vytvořené při integraci esp nyní.. Určete tedy MAC adresu každého zařízení. Připojeno je moje nastavení desky ESP32 a ESP8266

PRO ESP32

#include "WiFi.h" // Přístup k funkcím ESP32 WIFI

neplatné nastavení () {Serial.begin (115200); Serial.print („Adresa MAC desky ESP32:“); Serial.println (WiFi.macAddress ()); // vytiskne svoji MAC adresu} void loop () {}

PRO ESP8266

#include // Knihovna používaná pro přístup k funkcím ESP8266 WIFI

neplatné nastavení () {Serial.begin (115200); Serial.println (); Serial.print ("Adresa MAC desky ESP8266:"); Serial.println (WiFi.macAddress ()); // vytiskne svoji MAC adresu} void loop () {}

Moje MAC adresa je:

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

Krok 2: Jak zajistit, aby ESP-NYNÍ fungovalo

Zde je přehled toho, jak to funguje:

  1. Zahrnout nyní esp a wifi knihovny
  2. Uložte mac adresu příjemce ESP
  3. Definujte datovou strukturu zprávy odeslané/přijaté
  4. V nastavení nastavte wifi na režim stanice
  5. Inicializujte esp_now
  6. provést a zaregistrovat funkci zpětného volání vyvolanou po odeslání a přijetí dat
  7. Pro Esp8266 definujte jeho roli
  8. zaregistrujte peer nebo příjemce esp
  9. Odeslat data

Krok 3: FUNKCE ESP-NYNÍ (ESP32)

esp_now_init (neplatné)

Vrátit se:

  • ESP_OK: úspěch
  • ESP_ERR_ESPNOW_INTERNAL: Interní chyba

Popis:

Inicializujte funkci ESPNOW

esp_now_register_send_cb (cb)

Vrací:

  • ESP_OK: úspěch
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW není inicializován
  • ESP_ERR_ESPNOW_INTERNAL: interní chyba

Parametry:

  • cb: název funkce zpětného volání po odeslání dat ESPNOW s těmito parametry:

    • void cb (const uint8_t *mac_addr, esp_now_send_status_t status)

      • mac_addr: mac adresa příjemce
      • postavení:

        • 1 = úspěch
        • 0 = selhání

Popis:

Po odeslání dat ESPNOW zavolejte funkci OnDataSent

esp_now_add_peerconst esp_now_peer_info_t *peer)

Vrací:

  • ESP_OK: úspěch
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW není inicializován
  • ESP_ERR_ESPNOW_ARG: neplatný argument
  • ESP_ERR_ESPNOW_FULL: seznam partnerů je plný
  • ESP_ERR_ESPNOW_NO_MEM: nedostatek paměti
  • ESP_ERR_ESPNOW_EXIST: peer existoval

Parametry:

  • peer: informace peer s následujícími údaji:

    • uint8_t

      peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW peer MAC adresa, která je také MAC adresou stanice nebo softapu

    • uint8_t lmk [ESP_NOW_KEY_LEN]

      Místní hlavní klíč ESPNOW peer, který se používá k šifrování dat

    • kanál uint8_t

      Kanál Wi-Fi, který peer používá k odesílání/přijímání dat ESPNOW. Pokud je hodnota 0, použijte aktuální kanál, na kterém je stanice nebo softap zapnutý. V opačném případě musí být nastaven jako kanál, na kterém je stanice nebo softap zapnutý

    • wifi_interface_t ifidx

      Rozhraní Wi-Fi, které peer používá k odesílání/přijímání dat ESPNOW

    • bool šifrování

      Data ESPNOW, která tento peer odesílá/přijímá, jsou šifrována nebo ne

    • prázdný *priv

      ESPNOW peer soukromá data

Popis:

Přidat peer do seznamu peer

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

Vrací:

  • ESP_OK: úspěch
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW není inicializován
  • ESP_ERR_ESPNOW_ARG: neplatný argument
  • ESP_ERR_ESPNOW_INTERNAL: interní chyba
  • ESP_ERR_ESPNOW_NO_MEM: nedostatek paměti
  • ESP_ERR_ESPNOW_NOT_FOUND: peer nebyl nalezen
  • ESP_ERR_ESPNOW_IF: aktuální rozhraní WiFi neodpovídá rozhraní peer

Parametry:

  • peer_addr: peer MAC adresa
  • data: data to send
  • len: délka dat

Popis:

Odeslat údaje ESPNOW. V některých případech se to stane:

  • Pokud peer_addr není NULL, odešlete data peer, jehož adresa MAC odpovídá peer_addr
  • Pokud je peer_addr NULL, odešlete data všem peerům, kteří jsou přidáni do seznamu peer
  • Maximální délka dat musí být menší než ESP_NOW_MAX_DATA_LEN
  • Vyrovnávací paměť, na kterou odkazuje argument data, nemusí být platná po návratu esp_now_send

esp_now_register_recv_cb (cb)

Vrací:

  • ESP_OK: úspěch
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW není inicializován
  • ESP_ERR_ESPNOW_INTERNAL: interní chyba

Parametry:

  • cb: funkce zpětného volání pro příjem dat ESPNOW

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

      • mac_addr:

        mac adresa přijímače

      • *data:

        příjem dat

      • data_len

        délka datového bajtu

Popis:

Po přijetí dat ESPNOW zavolejte funkci cb

Krok 4: FUNKCE ESP-NYNÍ (ESP8266)

POPIS FUNKCÍ ESP32 ESP8266

int esp_now_init (neplatné)

Vrací:

  • 1 = úspěch
  • 0 = selhání

Popis

Inicializujte funkci ESPNOW

int esp_now_set_self_role (role u8)

Parametry:

  • ESP_NOW_ROLE_IDLE: přenos dat není povolen.
  • ESP_NOW_ROLE_CONTROLLER: priorita je dána rozhraní Sation
  • ESP_NOW_ROLE_SLAVE: priorita je dána rozhraní SoftAP
  • ESP_NOW_ROLE_COMBO: priorita je dána SoftAPinterface

Popis

Nastaví roli zařízení

int esp_now_register_send_cb (cb)

Vrací:

  • 1 = úspěch
  • 0 = selhání

Parametry:

  • cb: název funkce zpětného volání po odeslání dat ESPNOW s těmito parametry:

    • void cb (const uint8_t *mac_addr, esp_now_send_status_t status)

      • mac_addr: mac adresa příjemce
      • postavení:

        • 1 = úspěch
        • 0 = selhání

Popis

Po odeslání dat ESPNOW zavolejte funkci OnDataSent

int esp_now_add_peer (u8 *mac_addr, u8 role, u8 kanál, u8 *klíč, u8 key_len)

Vrací:

  • 1 = úspěch
  • 0 = selhání

Parametry:

  • mac_addr

    mac adresa peer

  • role
  • kanál

    Pokud je hodnota 0, použijte aktuální kanál, na kterém je stanice nebo softap zapnutý. V opačném případě musí být nastaven jako kanál, na kterém je stanice nebo softap zapnutý

  • *klíč

    klíč pro šifrování

  • key_len

    délka klíče

Popis:

Přidat peer do seznamu peer

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

Vrací:

  • 1 = úspěch
  • 0 = Selhání

Parametry:

  • peer_addr: peer MAC adresa
  • data: data to send
  • len: délka dat

Popis:

Odeslat údaje ESPNOW. V některých případech se to stane:

  • Pokud peer_addr není NULL, odešlete data peer, jehož MAC adresa odpovídá peer_addr
  • Pokud je peer_addr NULL, odešlete data všem peerům, kteří jsou přidáni do seznamu peer
  • Maximální délka dat musí být menší než ESP_NOW_MAX_DATA_LEN
  • Vyrovnávací paměť, na kterou odkazuje argument data, nemusí být platná po návratu esp_now_send

int esp_now_register_recv_cb (cb)

Vrací:

  • 1 = úspěch
  • 0 = Selhání

Parametry:

  • cb: funkce zpětného volání pro příjem dat ESPNOW

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

      • mac_addr:

        mac adresa přijímače

      • *data:

        příjem dat

      • data_len

        délka datového bajtu

Popis:

Po přijetí dat ESPNOW zavolejte funkci cb

Krok 5: Jednosměrná komunikace (ESP32 jako odesílatel)

ESP32 odesílá data na ESP8266. s tímto kódem. Změňte broadcastAddress na vaši adresu mac přijímače corrsponding. Moje byla A4: CF: 12: C7: 9C: 77

// Přidejte potřebné knihovny

#include // Přístup k funkcím esp nyní #include // Přidání funkcí Wifi na ESP32 // uložení MAC adresy do pole s názvem broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa mého přijímače/*definuje strukturované datové typy více proměnných a všechny je přejmenoval na struct_message*/typedef struct struct_message {char a [32]; int b; float c; Řetězec d; bool e; } struct_message; // Vytvořte struct_message s názvem myData struct_message myData; // funkce volána při odesílání dat k vytištění jejího stavu neplatné OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nPoslední stav odeslání paketu: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Delivery Fail"); } void setup () {// Nastavení přenosové rychlosti pro sériovou komunikaci s ESP Serial.begin (115200); // Nastavit zařízení jako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Init ESP-NOW a vrátí svůj stav, pokud (esp_now_init ()! = ESP_OK) {Serial.println ("Chyba při inicializaci ESP -NYNÍ"); vrátit se; } // volání funkce OnDataSent po odeslání dat ESPNOW esp_now_register_send_cb (OnDataSent); // Registrace peer esp_now_peer_info_t peerInfo; // inicializace a přiřazení informací o peer jako ukazatel addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // zkopírujte hodnotu broadcastAddress se 6 bajty do peerInfo.peer_addr peerInfo.channel = 0; // kanál, na kterém esp mluví. 0 znamená nedefinováno a data budou odeslána na aktuální kanál. 1-14 jsou platné kanály, které jsou stejné s místním zařízením peerInfo.encrypt = false; // nezašifrováno // Přidejte zařízení do seznamu spárovaných zařízení, pokud (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nepodařilo se přidat peer"); vrátit se; }} void loop () {// Nastavení hodnot pro odesílání strcpy (myData.a, "TOTO JE CHAR"); // uložení "TOTO JE CHAR" do proměnné a mých "dat" definovaných dříve myData.b = random (1, 20); // uložení náhodné hodnoty myData.c = 1,2; // save a float myData.d = "Dobrý den"; // uložení řetězce myData.e = false; // uložit bool // Odeslat data menší nebo rovna 250 bytů přes ESP-NYNÍ a vrátí jeho stav esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Odesláno úspěšně"); } else {Serial.println ("Chyba při odesílání dat"); } zpoždění (2000); }

ESP8266 přijímá data z ESP32 pomocí tohoto kódu.

// Přidejte potřebné knihovny

#include // Přidání funkcí Wifi na ESP32 #include // Pro přístup k funkcím esp nyní /*definujte datové typy více strukturovaných proměnných a přejmenujte je na struct_message* /typedef struct struct_message {char a [32]; int b; float c; Řetězec d; bool e; } struct_message; // Vytvořte proměnnou struct_message s názvem myData struct_message myData; // funkce volaná při příjmu dat a vytiskne je neplatná OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byty přijaty:"); 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 ("Řetězec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavení přenosové rychlosti pro sériovou komunikaci s ESP Serial.begin (115200); // Nastavit zařízení jako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-NYNÍ a vrátí svůj stav, pokud (esp_now_init ()! = 0) {Serial.println ("Chyba při inicializaci ESP-NYNÍ"); vrátit se; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definuje roli tohoto esp esp_now_register_recv_cb (OnDataRecv); // volání funkce OnDataRecv po přijetí dat ESPNOW} void loop () {}

Krok 6: Jednosměrná komunikace (ESP8266 jako odesílatel)

ESP8266 odesílá data do ESP32. s tímto kódem. Změňte broadcastAddress na vaši adresu mac přijímače corrsponding. Moje adresa esp32 je 30: AE: A4: F5: 03: A4. Další funkce pro esp8266 najdete zde

// Přidejte potřebné knihovny

#include // Přidání funkcí Wifi na ESP32 #include // Přístup k funkcím esp nyní // uložte MAC adresu do pole s názvem broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definujte datové typy strukturovaných více proměnných a všechny je přejmenujte na struct_message*/ typedef struct struct_message {char a [32]; int b; float c; Řetězec d; bool e; } struct_message; // Vytvořte strukturovanou proměnnou s názvem myData struct_message myData; // funkce volána při odesílání dat a vytištění jejího stavu neplatné OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPoslední stav odeslání paketu: / t"); Serial.println (sendStatus == 1? "Delivery Delivery success": "Delivery Fail"); } void setup () {// Nastavení přenosové rychlosti pro sériovou komunikaci s ESP Serial.begin (115200); // Nastavit zařízení jako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Init ESP-NOW a vrátí svůj stav, pokud (esp_now_init ()) {Serial.println ("Chyba při inicializaci ESP-NOW"); vrátit se; } esp_now_register_send_cb (OnDataSent); // volání funkce OnDataSent po odeslání dat ESPNOW // přidání zařízení do seznamu spárovaných zařízení if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Nepodařilo se přidat peer"); vrátit se; }} void loop () {// Nastavení hodnot pro odesílání strcpy (myData.a, "TOTO JE CHAR"); // uložení "TOTO JE CHAR" do proměnné a mých "dat" definovaných dříve myData.b = random (1, 20); // uložení náhodné hodnoty myData.c = 1,2; // save a float myData.d = "SP8266"; // uložení řetězce myData.e = false; // uložit bool // Odeslat data menší nebo rovna 250 bytů přes ESP-NYNÍ a vrátí jeho stav int result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Odesláno úspěšně"); } else {Serial.println ("Chyba při odesílání dat"); } zpoždění (2000); }

ESP32 přijímá data z ESP8266. s tímto kódem. Pro ostatní funkce rozhodčí zde

// Přidejte potřebné knihovny

#include // Přístup k funkcím esp nyní #include // Přidání funkcí Wifi na ESP32 /*definujte datové typy strukturovaných více proměnných a přejmenujte je na struct_message* /typedef struct struct_message {char a [32]; int b; float c; Řetězec d; bool e; } struct_message; // Vytvořte proměnnou struct_message s názvem myData struct_message myData; // funkce volaná při příjmu dat a jejich vytištění neplatná OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byty přijaty:"); 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 ("Řetězec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavení přenosové rychlosti pro sériovou komunikaci s ESP Serial.begin (115200); // Nastavit zařízení jako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-NYNÍ a vrátí svůj stav, pokud (esp_now_init ()! = 0) {Serial.println ("Chyba při inicializaci ESP-NYNÍ"); vrátit se; } esp_now_register_recv_cb (OnDataRecv); // volání funkce OnDataRecv po přijetí dat ESPNOW} void loop () {}

Krok 7: DVOJCESTNÁ KOMUNIKACE

DVOJCESTNÁ KOMUNIKACE
DVOJCESTNÁ KOMUNIKACE
DVOJCESTNÁ KOMUNIKACE
DVOJCESTNÁ KOMUNIKACE

ESP32 odesílá data při spuštění do ESP8266. ESP8266 vytiskne přijatou zprávu a poté odpoví, které ESP32 vytiskne na svém sériovém monitoru.

KÓD ESP32

// Přidejte potřebné knihovny

#include // Přístup k funkcím esp nyní #include // Přidání funkcí Wifi na ESP32 // uložení MAC adresy do pole s názvem broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa mého přijímače/*definuje strukturované datové typy více proměnných a všechny je přejmenoval na struct_message*/typedef struct struct_message {char a [32]; int b; float c; Řetězec d; bool e; } struct_message; // Vytvořte struct_message s názvem myData struct_message myData; // funkce volaná při odesílání dat k vytištění jejího stavu neplatné OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nPoslední stav odeslání paketu: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Delivery Fail"); 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 ("Byty přijaty:"); 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 ("Řetězec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavení přenosové rychlosti pro sériovou komunikaci s ESP Serial.begin (115200); // Nastavit zařízení jako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Init ESP-NOW a vrátí svůj stav, pokud (esp_now_init ()! = ESP_OK) {Serial.println ("Chyba při inicializaci ESP -NYNÍ"); vrátit se; } // volání funkce OnDataSent po odeslání dat ESPNOW esp_now_register_send_cb (OnDataSent); // Registrace peer esp_now_peer_info_t peerInfo; // inicializace a přiřazení informací o peer jako ukazatel addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // zkopírujte hodnotu broadcastAddress se 6 bajty do peerInfo.peer_addr peerInfo.channel = 0; // kanál, na kterém mluví esp. 0 znamená nedefinováno a data budou odeslána na aktuální kanál.1-14 jsou platné kanály, které jsou stejné s místním zařízením peerInfo.encrypt = false; // nezašifrováno // Přidejte zařízení do seznamu spárovaných zařízení, pokud (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nepodařilo se přidat peer"); vrátit se; } esp_now_register_recv_cb (OnDataRecv); // volání funkce OnDataRecv po přijetí dat ESPNOW send_data (); } void loop () {} void send_data () {Serial.println ("Odesílání"); // Nastavte hodnoty pro odesílání strcpy (myData.a, "TOTO JE CHAR"); // uložení "TOTO JE CHAR" do proměnné a mých "dat" definovaných dříve myData.b = random (1, 20); // uložení náhodné hodnoty myData.c = 1,2; // save a float myData.d = "ESP32"; // uložení řetězce myData.e = false; // uložit bool // Odeslat data menší nebo rovna 250 bytů přes ESP-NYNÍ a vrátí jeho stav esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Odesláno s úspěchem");} else {Serial.println ("Chyba při odesílání dat"); }}

KÓD ESP8266

// Přidejte potřebné knihovny

#include // Přidání funkcí Wifi na ESP32 #include // Přístup k funkcím esp nyní // uložte MAC adresu do pole s názvem broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definujte datové typy strukturovaných více proměnných a všechny je přejmenujte na struct_message*/ typedef struct struct_message {char a [32]; int b; float c; Řetězec d; bool e; } struct_message; // Vytvořte proměnnou struct_message s názvem myData struct_message myData; // funkce volaná při příjmu dat a vytiskne je neplatná OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byty přijaty:"); 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 ("Řetězec:"); 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 odeslání paketu: / t"); Serial.println (sendStatus == 1? "Delivery Delivery success": "Delivery Fail"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Nastavení hodnot pro odesílání strcpy (myData.a, "TOTO JE CHAR"); // uložení "TOTO JE CHAR" do proměnné a mých "dat" definovaných dříve myData.b = random (1, 20); // uložení náhodné hodnoty myData.c = 1,2; // save a float myData.d = "ESP8266"; // uložení řetězce myData.e = false; // uložení bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Nastavení přenosové rychlosti pro sériovou komunikaci s ESP Serial.begin (115200); // Nastavit zařízení jako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-NYNÍ a vrátí svůj stav, pokud (esp_now_init ()! = 0) {Serial.println ("Chyba při inicializaci ESP-NYNÍ"); vrátit se; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Nepodařilo se přidat peer"); vrátit se; } 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 roli tohoto esp esp_now_register_recv_cb (OnDataRecv); // volání funkce OnDataRecv po přijetí dat ESPNOW} void loop () {}

Krok 8: REFERENCE

ESPNOW_32_Příklad

ESPNOW_8266 Příklad

WIFI.h

ESP8266WiFi.h

esp_now.h pro ESP8266

esp_now.h pro ESP32

esp_now oficiální dokument (Lepší vysvětlení funkcí)

ESP-NYNÍ Oficiální průvodce

Doporučuje: