Indholdsfortegnelse:

Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin
Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin

Video: Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin

Video: Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin
Video: Complete guide to PCA9685 16 channel Servo controller for Arduino with code Version of 5 ( V1) 2024, Juli
Anonim
Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266
Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266

På mit igangværende projekt har jeg brug for flere ESP for at tale med hinanden uden en router. For at gøre dette vil jeg bruge ESP-NU til at få trådløs kommunikation med hinanden uden en router på ESP.

Forbrugsvarer

Ting jeg brugte:

ESP32 DEV -modul

NODEMCU 1.0 (ESP12E -modul)

Trin 1: Hent Board Mac -adressen

Få Board Mac -adressen
Få Board Mac -adressen
Hent Board Mac -adressen
Hent Board Mac -adressen

Gennem ESP-nu taler ESP-enheder til hinanden ved at sende data til deres unikke adresse, mens de er forbundet til et internt adgangspunktnetværk, der er oprettet ved intilaisering af esp nu.. Bestem således MAC -adressen for hver enhed. Vedhæftet er mine ESP32- og ESP8266 -kortindstillinger

TIL ESP32

#include "WiFi.h" // For at få adgang til ESP32 WIFI -funktioner

ugyldig opsætning () {Serial.begin (115200); Serial.print ("ESP32 Board MAC -adresse:"); Serial.println (WiFi.macAddress ()); // udskriver sin MAC -adresse} hulrum () {}

TIL ESP8266

#include // Bibliotek bruges til at få adgang til ESP8266 WIFI -funktioner

ugyldig opsætning () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Board MAC -adresse:"); Serial.println (WiFi.macAddress ()); // udskriver sin MAC -adresse} hulrum () {}

Min MAC ADRESSE er:

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

Trin 2: Sådan får du ESP-NU til at fungere

Her er en oversigt over, hvordan du får det til at fungere:

  1. Inkluder esp nu og wifi -biblioteker
  2. Gem mac -adressen til modtagerens ESP
  3. Definer datastrukturen for beskeden send/modtaget
  4. På opsætningen skal du indstille wifi til stationstilstand
  5. Initialiser esp_now
  6. foretage og registrere tilbagekaldsfunktionen, der kaldes efter afsendelse og modtagelse af data
  7. Definer dens rolle for Esp8266
  8. registrer kammeraten eller modtageren, f.eks
  9. Send data

Trin 3: ESP-NU-FUNKTIONER (ESP32)

esp_now_init (ugyldig)

Vend tilbage:

  • ESP_OK: lykkedes
  • ESP_ERR_ESPNOW_INTERNAL: Intern fejl

Beskrivelse:

Initialiser ESPNOW -funktionen

esp_now_register_send_cb (cb)

Vender tilbage:

  • ESP_OK: lykkedes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
  • ESP_ERR_ESPNOW_INTERNAL: intern fejl

Parametre:

  • cb: opkaldsfunktionsnavn efter afsendelse af ESPNOW -data med disse parametre:

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

      • mac_addr: modtagerens mac -adresse
      • status:

        • 1 = succes
        • 0 = mislykkes

Beskrivelse:

Kald funktionen OnDataSent efter afsendelse af ESPNOW -data

esp_now_add_peerconst esp_now_peer_info_t *peer)

Vender tilbage:

  • ESP_OK: lykkedes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
  • ESP_ERR_ESPNOW_ARG: ugyldigt argument
  • ESP_ERR_ESPNOW_FULL: Peer -listen er fuld
  • ESP_ERR_ESPNOW_NO_MEM: tom for hukommelse
  • ESP_ERR_ESPNOW_EXIST: peer har eksisteret

Parametre:

  • peer: peer information med følgende data:

    • uint8_t

      peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW peer MAC -adresse, der også er MAC -adressen på stationen eller softap

    • uint8_t lmk [ESP_NOW_KEY_LEN]

      ESPNOW peer lokal hovednøgle, der bruges til at kryptere data

    • uint8_t kanal

      Wi-Fi-kanal, som peer bruger til at sende/modtage ESPNOW-data. Hvis værdien er 0, skal du bruge den aktuelle kanal, som stationen eller softap'en er på. Ellers skal den indstilles som den kanal, stationen eller softap er på

    • wifi_interface_t ifidx

      Wi-Fi-interface, som peer bruger til at sende/modtage ESPNOW-data

    • bool kryptere

      ESPNOW -data, som denne peer sender/modtager, er krypteret eller ej

    • void *priv

      ESPNOW peer private data

Beskrivelse:

Tilføj en peer to peer -liste

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

Vender tilbage:

  • ESP_OK: lykkedes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
  • ESP_ERR_ESPNOW_ARG: ugyldigt argument
  • ESP_ERR_ESPNOW_INTERNAL: intern fejl
  • ESP_ERR_ESPNOW_NO_MEM: tom for hukommelse
  • ESP_ERR_ESPNOW_NOT_FOUND: peer findes ikke
  • ESP_ERR_ESPNOW_IF: nuværende WiFi -grænseflade matcher ikke peer

Parametre:

  • peer_addr: peer MAC -adresse
  • data: data, der skal sendes
  • len: længde af data

Beskrivelse:

Send ESPNOW -data. I nogle tilfælde sker dette:

  • Hvis peer_addr ikke er NULL, skal du sende data til den peer, hvis MAC -adresse matcher peer_addr
  • Hvis peer_addr er NULL, skal du sende data til alle de jævnaldrende, der føjes til peerlisten
  • Den maksimale datalængde skal være mindre end ESP_NOW_MAX_DATA_LEN
  • Bufferen, som dataargumentet peger på, behøver ikke at være gyldig efter esp_now_send returnerer

esp_now_register_recv_cb (cb)

Vender tilbage:

  • ESP_OK: lykkedes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
  • ESP_ERR_ESPNOW_INTERNAL: intern fejl

Parametre:

  • cb: tilbagekaldsfunktion til modtagelse af ESPNOW -data
    • void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)

      • mac_addr:

        modtagerens mac -adresse

      • *data:

        data modtager

      • data_len

        databyte længde

Beskrivelse:

Ring til funktionen cb efter modtagelse af ESPNOW -data

Trin 4: ESP-NU-FUNKTIONER (ESP8266)

FUNKTIONER BESKRIVELSE ESP32 ESP8266

int esp_now_init (ugyldig)

Vender tilbage:

  • 1 = succes
  • 0 = mislykkes

Beskrivelse

Initialiser ESPNOW -funktionen

int esp_now_set_self_role (u8 rolle)

Parametre:

  • ESP_NOW_ROLE_IDLE: dataoverførsel er ikke tilladt.
  • ESP_NOW_ROLE_CONTROLLER: Sation -grænsefladen prioriteres
  • ESP_NOW_ROLE_SLAVE: SoftAP -interface får prioritet
  • ESP_NOW_ROLE_COMBO: SoftAPinterface prioriteres

Beskrivelse

Indstiller enhedens rolle

int esp_now_register_send_cb (cb)

Vender tilbage:

  • 1 = succes
  • 0 = mislykkes

Parametre:

  • cb: opkaldsfunktionsnavn efter afsendelse af ESPNOW -data med disse parametre:

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

      • mac_addr: modtagerens mac -adresse
      • status:

        • 1 = succes
        • 0 = mislykkes

Beskrivelse

Kald funktionen OnDataSent efter afsendelse af ESPNOW -data

int esp_now_add_peer (u8 *mac_addr, u8 rolle, u8 kanal, u8 *nøgle, u8 key_len)

Vender tilbage:

  • 1 = succes
  • 0 = mislykkes

Parametre:

  • mac_addr

    mac -adresse til peer

  • rolle
  • kanal

    Hvis værdien er 0, skal du bruge den aktuelle kanal, som stationen eller softap'en er på. Ellers skal den indstilles som den kanal, stationen eller softap er på

  • *nøgle

    nøgle til kryptering

  • key_len

    nøglens længde

Beskrivelse:

Tilføj en peer to peer -liste

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

Vender tilbage:

  • 1 = Succes
  • 0 = Fejl

Parametre:

  • peer_addr: peer MAC -adresse
  • data: data, der skal sendes
  • len: længde af data

Beskrivelse:

Send ESPNOW -data. I nogle tilfælde sker dette:

  • Hvis peer_addr ikke er NULL, skal du sende data til den peer, hvis MAC -adresse matcher peer_addr
  • Hvis peer_addr er NULL, skal du sende data til alle de jævnaldrende, der føjes til peerlisten
  • Den maksimale datalængde skal være mindre end ESP_NOW_MAX_DATA_LEN
  • Bufferen, som dataargumentet peger på, behøver ikke at være gyldig efter esp_now_send returnerer

int esp_now_register_recv_cb (cb)

Vender tilbage:

  • 1 = Succes
  • 0 = Fejl

Parametre:

  • cb: tilbagekaldsfunktion til modtagelse af ESPNOW -data
    • void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)

      • mac_addr:

        modtagerens mac -adresse

      • *data:

        data modtager

      • data_len

        databyte længde

Beskrivelse:

Ring til funktionen cb efter modtagelse af ESPNOW -data

Trin 5: Envejskommunikation (ESP32 som afsender)

ESP32 sender data til en ESP8266. med denne kode. Skift broadcastAddress til din korresponderende modtager -mac -adresse. Min var A4: CF: 12: C7: 9C: 77

// Tilføj nødvendige biblioteker

#include // For at få adgang til esp nu -funktionerne #include // For at tilføje Wifi -muligheder på ESP32 // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adresse på min modtager/*definer datatyperne for de flere variabler, der er struktureret og omdøbt det hele til struct_message*/typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en struct_message kaldet myData struct_message myData; // funktion kaldes, når data sendes for at udskrive dens status tomrum OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Levering succes": "Levering mislykkedes"); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Fejl ved initialisering af ESP -NU"); Vend tilbage; } // kalde funktionen OnDataSent efter afsendelse af ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informationen som en markør til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier værdien af broadcastAddress med 6 bytes til peerInfo.peer_addr peerInfo.channel = 0; // kanal, hvor esp taler. 0 betyder udefineret, og data vil blive sendt på den aktuelle kanal. 1-14 er gyldige kanaler, hvilket er det samme med den lokale enhed peerInfo.encrypt = false; // ikke krypteret // Føj enheden til listen over parrede enheder, hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; }} void loop () {// Indstil værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "Hej"; // gem en streng myData.e = false; // gem en bool // Send data mindre end eller lig med 250 bytes via ESP-NOW og returnerer dens status esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); hvis (resultat == ESP_OK) {Serial.println ("Sendt med succes"); } else {Serial.println ("Fejl ved afsendelse af dataene"); } forsinkelse (2000); }

ESP8266 modtager data fra ESP32 ved hjælp af denne kode.

// Tilføj nødvendige biblioteker

#include // For at tilføje Wifi -muligheder på ESP32 #include // For at få adgang til esp nu -funktionerne /*definer datatyperne for de strukturerede multiple variabler og omdøb det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en variabel struct_message kaldet myData struct_message myData; // funktion kaldes når dataene modtages og udskriver den ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = 0) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definerer rollen for denne esp esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data} void loop () {}

Trin 6: Envejskommunikation (ESP8266 som afsender)

ESP8266 sender data til en ESP32. med denne kode. Skift broadcastAddress til din korresponderende modtager -mac -adresse. Min esp32 -adresse er 30: AE: A4: F5: 03: A4. For andre funktioner til esp8266, gå her

// Tilføj nødvendige biblioteker

#include // For at tilføje Wifi -muligheder på ESP32 #include // For at få adgang til esp nu -funktionerne // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatyperne for de strukturerede multiple variabler og omdøbe det hele til struct_message*/ typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en struktureret variabel kaldet myData struct_message myData; // funktion kaldes, når data sendes, og udskriver dens status tomrum OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Leveringssucces": "Levering mislykkedes"); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } esp_now_register_send_cb (OnDataSent); // kalde funktionen OnDataSent efter afsendelse af ESPNOW -data // Føj enheden til listen over parrede enheder, hvis (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; }} void loop () {// Indstil værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "SP8266"; // gem en streng myData.e = false; // gem en bool // Send data mindre end eller lig med 250 bytes via ESP-NOW og returnerer dets status int resultat = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); hvis (esp_now_init ()! = 0) {Serial.println ("Sendt med succes"); } else {Serial.println ("Fejl ved afsendelse af data"); } forsinkelse (2000); }

ESP32 modtager data fra en ESP8266. med denne kode. For andre funktioner refere her

// Tilføj nødvendige biblioteker

#include // For at få adgang til esp nu -funktionerne #include // For at tilføje Wifi -muligheder på ESP32 /*definer datatyperne for de strukturerede flere variabler og omdøb det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en variabel struct_message kaldet myData struct_message myData; // funktion kaldes, når dataene modtages og udskriver den ugyldige OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = 0) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data} void loop () {}

Trin 7: COMMUNICATION på to måder

TO MÅDE KOMMUNIKATION
TO MÅDE KOMMUNIKATION
TO MÅDE KOMMUNIKATION
TO MÅDE KOMMUNIKATION

ESP32 sender data ved opstart til ESP8266. ESP8266 udskriver den modtagne meddelelse og svarer derefter, som ESP32 udskriver på sin serielle skærm.

ESP32 KODE

// Tilføj nødvendige biblioteker

#include // For at få adgang til esp nu -funktionerne #include // For at tilføje Wifi -muligheder på ESP32 // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adresse på min modtager/*definer datatyperne for de flere variabler, der er struktureret og omdøbt det hele til struct_message*/typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en struct_message kaldet myData struct_message myData; // funktion kaldes, når data sendes for at udskrive dens status tomrum OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Levering succes": "Levering mislykkedes"); hvis (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} ugyldig OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Fejl ved initialisering af ESP -NU"); Vend tilbage; } // kalde funktionen OnDataSent efter afsendelse af ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informationen som en markør til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier værdien af broadcastAddress med 6 bytes til peerInfo.peer_addr peerInfo.channel = 0; // kanal, hvor esp taler. 0 betyder udefineret, og data vil blive sendt på den aktuelle kanal.1-14 er gyldige kanaler, hvilket er det samme med den lokale enhed peerInfo.encrypt = false; // ikke krypteret // Føj enheden til listen over parrede enheder, hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; } esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data send_data (); } void loop () {} void send_data () {Serial.println ("Sender"); // Indstil værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "ESP32"; // gem en streng myData.e = false; // gem en bool // Send data mindre end eller lig med 250 bytes via ESP-NOW og returnerer dens status esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Sendt med succes");} else {Serial.println ("Fejl ved afsendelse af dataene"); }}

ESP8266 KODE

// Tilføj nødvendige biblioteker

#include // For at tilføje Wifi -muligheder på ESP32 #include // For at få adgang til esp nu -funktionerne // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatyperne for de strukturerede multiple variabler og omdøbe det hele til struct_message*/ typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en variabel struct_message kaldet myData struct_message myData; // funktion kaldes når dataene modtages og udskriver den ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 ("String:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); send_data (); } ugyldig OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Leveringssucces": "Levering mislykkedes"); hvis (sendStatus! = 1) {send_data (); }} ugyldig send_data () {// Angiv værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "ESP8266"; // gem en streng myData.e = false; // gem en bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = 0) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Definerer rollen for denne esp esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data} void loop () {}

Trin 8: REFERENCER

ESPNOW_32_Eksempel

ESPNOW_8266 Eksempel

WIFI.h

ESP8266WiFi.h

esp_now.h til ESP8266

esp_now.h til ESP32

esp_now officielt dokument (Bedre forklaring af funktioner)

ESP-NU Officiel vejledning

Anbefalede: