Innholdsfortegnelse:

Slik snakker du flere ESP via ESP-NOW ved bruk av ESP32 og ESP8266: 8 trinn
Slik snakker du flere ESP via ESP-NOW ved bruk av ESP32 og ESP8266: 8 trinn

Video: Slik snakker du flere ESP via ESP-NOW ved bruk av ESP32 og ESP8266: 8 trinn

Video: Slik snakker du flere ESP via ESP-NOW ved bruk av ESP32 og ESP8266: 8 trinn
Video: wiz spacesense og integration 2024, Desember
Anonim
Slik snakker du flere ESP via ESP-NÅ ved hjelp av ESP32 og ESP8266
Slik snakker du flere ESP via ESP-NÅ ved hjelp av ESP32 og ESP8266

På mitt pågående prosjekt trenger jeg flere ESP for å snakke med hverandre uten en ruter. For å gjøre dette, bruker jeg ESP-NOW til å få trådløs kommunikasjon med hverandre uten en ruter på ESP.

Rekvisita

Ting jeg brukte:

ESP32 DEV -modul

NODEMCU 1.0 (ESP12E -modul)

Trinn 1: Få Board Mac -adressen

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

Gjennom ESP-nå snakker ESP-enheter til hverandre ved å sende data til sin unike adresse mens de er koblet til et internt tilgangspunktnettverk som ble opprettet ved intilisering av esp nå.. Bestem således MAC -adressen til hver enhet. Vedlagte er mine ESP32 og ESP8266 Board Settings

FOR ESP32

#include "WiFi.h" // For å få tilgang til ESP32 WIFI -funksjoner

ugyldig oppsett () {Serial.begin (115200); Serial.print ("ESP32 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // skriver ut MAC -adressen} hulromsløyfe () {}

FOR ESP8266

#include // Bibliotek som brukes for å få tilgang til ESP8266 WIFI -funksjoner

ugyldig oppsett () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // skriver ut MAC -adressen} hulromsløyfe () {}

Min MAC -ADRESSE er:

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

Trinn 2: Slik får du ESP-NU til å fungere

Her er en oversikt over hvordan du får det til å fungere:

  1. Inkluder esp nå og wifi -biblioteker
  2. Lagre mac -adressen til mottakerens ESP
  3. Definer datastrukturen til meldingen send/mottatt
  4. På oppsettet, sett wifi til stasjonsmodus
  5. Initialiser esp_now
  6. foreta og registrere tilbakeringingsfunksjonen som ringes etter sending og mottak av data
  7. Definer rollen for Esp8266
  8. registrer likemannen eller mottakeren, spesielt
  9. Send data

Trinn 3: ESP-NÅ-FUNKSJONER (ESP32)

esp_now_init (ugyldig)

Komme tilbake:

  • ESP_OK: lykkes
  • ESP_ERR_ESPNOW_INTERNAL: Intern feil

Beskrivelse:

Initialiser ESPNOW -funksjonen

esp_now_register_send_cb (cb)

Returnerer:

  • ESP_OK: lykkes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
  • ESP_ERR_ESPNOW_INTERNAL: intern feil

Parametere:

  • cb: tilbakeringingsfunksjonsnavn etter å ha sendt ESPNOW -data med disse parameterne:

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

      • mac_addr: mottakerens mac -adresse
      • status:

        • 1 = suksess
        • 0 = mislykkes

Beskrivelse:

Ring funksjonen OnDataSent etter å ha sendt ESPNOW -data

esp_now_add_peerconst esp_now_peer_info_t *peer)

Returnerer:

  • ESP_OK: lykkes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
  • ESP_ERR_ESPNOW_ARG: ugyldig argument
  • ESP_ERR_ESPNOW_FULL: vennelisten er full
  • ESP_ERR_ESPNOW_NO_MEM: tom for minne
  • ESP_ERR_ESPNOW_EXIST: Peer har eksistert

Parametere:

  • peer: peer -informasjon med følgende data:

    • uint8_t

      peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW peer MAC -adresse som også er MAC -adressen til stasjonen eller softap

    • uint8_t lmk [ESP_NOW_KEY_LEN]

      ESPNOW peer lokal hovednøkkel som brukes til å kryptere data

    • uint8_t kanal

      Wi-Fi-kanal som peer bruker til å sende/motta ESPNOW-data. Hvis verdien er 0, bruker du gjeldende kanal som stasjonen eller programvaren er på. Ellers må den angis som kanalen som stasjonen eller programvaren er på

    • wifi_interface_t ifidx

      Wi-Fi-grensesnitt som peer bruker til å sende/motta ESPNOW-data

    • bool kryptere

      ESPNOW -data som denne kameraten sender/mottar, er kryptert eller ikke

    • void *priv

      ESPNOW private data

Beskrivelse:

Legg til en peer to peer -liste

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

Returnerer:

  • ESP_OK: lykkes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
  • ESP_ERR_ESPNOW_ARG: ugyldig argument
  • ESP_ERR_ESPNOW_INTERNAL: intern feil
  • ESP_ERR_ESPNOW_NO_MEM: tom for minne
  • ESP_ERR_ESPNOW_NOT_FOUND: Peer er ikke funnet
  • ESP_ERR_ESPNOW_IF: nåværende WiFi -grensesnitt stemmer ikke overens med peer

Parametere:

  • peer_addr: peer MAC -adresse
  • data: data som skal sendes
  • len: lengde på data

Beskrivelse:

Send ESPNOW -data. I noen tilfeller skjer dette:

  • Hvis peer_addr ikke er NULL, sender du data til peer hvis MAC -adresse samsvarer med peer_addr
  • Hvis peer_addr er NULL, sender du data til alle jevnaldrende som legges til i peer -listen
  • Maksimal datalengde må være mindre enn ESP_NOW_MAX_DATA_LEN
  • Bufferen som dataargumentet viser til trenger ikke å være gyldig etter at esp_now_send returnerer

esp_now_register_recv_cb (cb)

Returnerer:

  • ESP_OK: lykkes
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
  • ESP_ERR_ESPNOW_INTERNAL: intern feil

Parametere:

  • cb: tilbakeringingsfunksjon for mottak av ESPNOW -data
    • void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)

      • mac_addr:

        mac -adresse til mottaker

      • *data:

        data mottar

      • data_len

        databyte lengde

Beskrivelse:

Ring funksjonen cb etter å ha mottatt ESPNOW -data

Trinn 4: ESP-NÅ-FUNKSJONER (ESP8266)

FUNKSJONER BESKRIVELSE ESP32 ESP8266

int esp_now_init (ugyldig)

Returnerer:

  • 1 = suksess
  • 0 = mislykkes

Beskrivelse

Initialiser ESPNOW -funksjonen

int esp_now_set_self_role (u8 rolle)

Parametere:

  • ESP_NOW_ROLE_IDLE: dataoverføring er ikke tillatt.
  • ESP_NOW_ROLE_CONTROLLER: Sation -grensesnittet prioriteres
  • ESP_NOW_ROLE_SLAVE: SoftAP -grensesnitt prioriteres
  • ESP_NOW_ROLE_COMBO: prioritet gis til SoftAP -grensesnitt

Beskrivelse

Angir enhetens rolle

int esp_now_register_send_cb (cb)

Returnerer:

  • 1 = suksess
  • 0 = mislykkes

Parametere:

  • cb: tilbakeringingsfunksjonsnavn etter å ha sendt ESPNOW -data med disse parameterne:

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

      • mac_addr: mottakerens mac -adresse
      • status:

        • 1 = suksess
        • 0 = mislykkes

Beskrivelse

Ring funksjonen OnDataSent etter å ha sendt ESPNOW -data

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

Returnerer:

  • 1 = suksess
  • 0 = mislykkes

Parametere:

  • mac_addr

    mac -adressen til jevnaldrende

  • rolle
  • kanal

    Hvis verdien er 0, bruker du gjeldende kanal som stasjonen eller programvaren er på. Ellers må den angis som kanalen som stasjonen eller programvaren er på

  • *nøkkel

    nøkkel for kryptering

  • key_len

    nøkkellengde

Beskrivelse:

Legg til en peer to peer -liste

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

Returnerer:

  • 1 = Suksess
  • 0 = mislykkes

Parametere:

  • peer_addr: peer MAC -adresse
  • data: data som skal sendes
  • len: lengde på data

Beskrivelse:

Send ESPNOW -data. I noen tilfeller skjer dette:

  • Hvis peer_addr ikke er NULL, sender du data til peer hvis MAC -adresse samsvarer med peer_addr
  • Hvis peer_addr er NULL, må du sende data til alle jevnaldrende som legges til i peer -listen
  • Maksimal datalengde må være mindre enn ESP_NOW_MAX_DATA_LEN
  • Bufferen som dataargumentet viser til trenger ikke å være gyldig etter at esp_now_send returnerer

int esp_now_register_recv_cb (cb)

Returnerer:

  • 1 = Suksess
  • 0 = mislykkes

Parametere:

  • cb: tilbakeringingsfunksjon for mottak av ESPNOW -data
    • void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)

      • mac_addr:

        mac -adresse til mottaker

      • *data:

        data mottar

      • data_len

        databyte lengde

Beskrivelse:

Ring funksjonen cb etter å ha mottatt ESPNOW -data

Trinn 5: Enveiskommunikasjon (ESP32 som avsender)

ESP32 sender data til en ESP8266. med denne koden. Endre broadcastAddress til den korresponderende mottakerens mac -adresse. Min var A4: CF: 12: C7: 9C: 77

// Legg til nødvendige biblioteker

#include // For å få tilgang til esp nå -funksjonene #include // For å legge til Wifi -funksjoner på ESP32 // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adressen til mottakeren min/*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en struct_message kalt myData struct_message myData; // funksjon kalles når data sendes for å skrive ut statusens tomrom OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast pakke sendestatus: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Delivery Fail"); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Feil ved initialisering av ESP -NÅ"); komme tilbake; } // kall funksjonen OnDataSent etter å ha sendt ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informasjonen som en peker til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier verdien av broadcastAddress med 6 byte til peerInfo.peer_addr peerInfo.channel = 0; // kanal der esp snakker. 0 betyr udefinert og data vil bli sendt på den nåværende kanalen. 1-14 er gyldige kanaler som er det samme med den lokale enheten peerInfo.encrypt = false; // ikke kryptert // Legg til enheten i listen over sammenkoblede enheter hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke legge til peer"); komme tilbake; }} void loop () {// Angi verdier for å sende strcpy (myData.a, "THIS IS A CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "Hei"; // lagre en streng myData.e = false; // lagre en bool // Send data mindre enn eller lik 250 byte via ESP-NOW og returnerer statusen esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Sendt med suksess"); } else {Serial.println ("Feil ved sending av dataene"); } forsinkelse (2000); }

ESP8266 mottar data fra ESP32 ved hjelp av denne koden.

// Legg til nødvendige biblioteker

#include // For å legge til Wifi -funksjoner på ESP32 #include // For å få tilgang til esp now -funksjonene /*definer datatypene til de flere variablene som er strukturert og omdøpt det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en variabel struct_message kalt myData struct_message myData; // funksjon kalles når dataene mottas og skriver dem ut ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte mottatt:"); 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 (); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()! = 0) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definerer rollen til denne esp esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW data} void loop () {}

Trinn 6: Enveiskommunikasjon (ESP8266 som avsender)

ESP8266 sender data til en ESP32. med denne koden. Endre broadcastAddress til den korresponderende mottakerens mac -adresse. Min esp32 -adresse er 30: AE: A4: F5: 03: A4. For andre funksjoner for esp8266, gå hit

// Legg til nødvendige biblioteker

#include // For å legge til Wifi -funksjoner på ESP32 #include // For å få tilgang til esp nå -funksjonene // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/ typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en strukturert variabel kalt myData struct_message myData; // funksjon kalles når data sendes, og skriv ut statusens tomrom OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Delivery Success": "Delivery Fail"); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } esp_now_register_send_cb (OnDataSent); // ring funksjonen OnDataSent etter å ha sendt ESPNOW -data // Legg til enheten i listen over sammenkoblede enheter hvis (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Kunne ikke legge til peer"); komme tilbake; }} void loop () {// Angi verdier for å sende strcpy (myData.a, "THIS IS A CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "SP8266"; // lagre en streng myData.e = false; // lagre en bool // Send data mindre enn eller lik 250 byte via ESP-NOW og returnerer status int resultat = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Sendt med suksess"); } else {Serial.println ("Feil ved sending av dataene"); } forsinkelse (2000); }

ESP32 mottar data fra en ESP8266. med denne koden. For andre funksjoner referer du her

// Legg til nødvendige biblioteker

#include // For å få tilgang til esp nå -funksjonene #include // For å legge til Wifi -funksjoner på ESP32 /*definer datatypene til de flere variablene som er strukturert og omdøpt det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en variabel struct_message kalt myData struct_message myData; // funksjon kalles når dataene mottas og skriver dem ut ugyldige OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte mottatt:"); 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 (); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer status hvis (esp_now_init ()! = 0) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW data} void loop () {}

Trinn 7: TO -MÅTES KOMMUNIKASJON

TO -MÅTSKOMMUNIKASJON
TO -MÅTSKOMMUNIKASJON
TO -MÅTSKOMMUNIKASJON
TO -MÅTSKOMMUNIKASJON

ESP32 sender data ved oppstart til ESP8266. ESP8266 skriver ut den mottatte meldingen og svarer deretter som ESP32 skriver ut på den serielle skjermen.

ESP32 KODE

// Legg til nødvendige biblioteker

#include // For å få tilgang til esp nå -funksjonene #include // For å legge til Wifi -funksjoner på ESP32 // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adressen til mottakeren min/*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en struct_message kalt myData struct_message myData; // funksjon kalles når data sendes for å skrive ut statusens tomrom OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast pakke sendestatus: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Delivery Fail"); if (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 ("Byte mottatt:"); 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 (); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Feil ved initialisering av ESP -NÅ"); komme tilbake; } // kall funksjonen OnDataSent etter å ha sendt ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informasjonen som en peker til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier verdien av broadcastAddress med 6 byte til peerInfo.peer_addr peerInfo.channel = 0; // kanal der esp snakker. 0 betyr udefinert og data vil bli sendt på den nåværende kanalen.1-14 er gyldige kanaler som er det samme med den lokale enheten peerInfo.encrypt = false; // ikke kryptert // Legg til enheten i listen over sammenkoblede enheter hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke legge til peer"); komme tilbake; } esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW -data send_data (); } void loop () {} void send_data () {Serial.println ("Sender"); // Angi verdier for å sende strcpy (myData.a, "THIS IS A CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "ESP32"; // lagre en streng myData.e = false; // lagre en bool // Send data mindre enn eller lik 250 byte via ESP-NOW og returnerer statusen esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Sendt med suksess");} else {Serial.println ("Feil ved sending av dataene"); }}

ESP8266 KODE

// Legg til nødvendige biblioteker

#include // For å legge til Wifi -funksjoner på ESP32 #include // For å få tilgang til esp nå -funksjonene // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/ typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en variabel struct_message kalt myData struct_message myData; // funksjon kalles når dataene mottas og skriver dem ut ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte mottatt:"); 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? "Delivery Success": "Delivery Fail"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Angi verdier for å sende strcpy (myData.a, "DETTE ER EN CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "ESP8266"; // lagre en streng myData.e = false; // lagre en bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer status hvis (esp_now_init ()! = 0) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Kunne ikke legge til kollega"); komme tilbake; } 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 til denne esp esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW data} void loop () {}

Trinn 8: REFERANSER

ESPNOW_32_Eksempel

ESPNOW_8266 Eksempel

WIFI.h

ESP8266WiFi.h

esp_now.h for ESP8266

esp_now.h for ESP32

esp_now offisielt dokument (Bedre forklaring av funksjoner)

ESP-NÅ Offisiell guide

Anbefalt: