
Sadržaj:
- Pribor
- Korak 1: Nabavite Board adresu Maca
- Korak 2: Kako učiniti da ESP-SADA funkcionira
- Korak 3: ESP-SADA FUNKCIJE (ESP32)
- Korak 4: ESP-SADA FUNKCIJE (ESP8266)
- Korak 5: Jednosmjerna komunikacija (ESP32 kao pošiljatelj)
- Korak 6: Jednosmjerna komunikacija (ESP8266 kao pošiljatelj)
- Korak 7: DVOSTRUKA KOMUNIKACIJA
- Korak 8: LITERATURA
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47

Na mom tekućem projektu potrebno mi je više ESP -ova za međusobno razgovaranje bez usmjerivača. Da bih to učinio, koristit ću ESP-NOW za bežičnu međusobnu komunikaciju bez usmjerivača na ESP-u.
Pribor
Stvari koje sam koristio:
ESP32 DEV modul
NODEMCU 1.0 (modul ESP12E)
Korak 1: Nabavite Board adresu Maca


Putem ESP-a sada, ESP uređaji međusobno razgovaraju šaljući podatke na njihovu jedinstvenu adresu dok su povezani s unutarnjom mrežom pristupnih točaka napravljenom nakon pokretanja esp-a sada.. Stoga odredite MAC adresu svakog uređaja. U prilogu su moje postavke ESP32 i ESP8266 ploče
ZA ESP32
#include "WiFi.h" // Za pristup ESP32 WIFI mogućnostima
void setup () {Serial.begin (115200); Serial.print ("ESP32 MAC adresa ploče:"); Serial.println (WiFi.macAddress ()); // ispisuje svoju MAC adresu} void loop () {}
ZA ESP8266
#include // Knjižnica koja se koristi za pristup ESP8266 WIFI mogućnostima
void setup () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 MAC adresa ploče:"); Serial.println (WiFi.macAddress ()); // ispisuje svoju MAC adresu} void loop () {}
Moja MAC ADRESA je:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Korak 2: Kako učiniti da ESP-SADA funkcionira
Evo pregleda kako to učiniti da funkcionira:
- Uključite esp sada i wifi knjižnice
- Spremite mac adresu primatelja ESP -a
- Definirajte strukturu podataka poruke poslane/primljene
- Prilikom postavljanja postavite WiFi na način rada stanice
- Pokreni esp_now
- napraviti i registrirati funkciju povratnog poziva koja se poziva nakon slanja i primanja podataka
- Za Esp8266 definirajte njegovu ulogu
- registrirati vršnjaka ili primatelja esp
- Slanje podataka
Korak 3: ESP-SADA FUNKCIJE (ESP32)
esp_now_init (void)
Povratak:
- ESP_OK: uspjelo
- ESP_ERR_ESPNOW_INTERNAL: Interna pogreška
Opis:
Pokrenite funkciju ESPNOW
esp_now_register_send_cb (cb)
Povrat:
- ESP_OK: uspjelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_INTERNAL: unutarnja pogreška
Parametri:
-
cb: naziv funkcije povratnog poziva nakon slanja ESPNOW podataka sa ovim parametrima:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mac adresa primatelja
-
status:
- 1 = uspjeh
- 0 = neuspjeh
-
Opis:
Pozovite funkciju OnDataSent nakon slanja ESPNOW podataka
esp_now_add_peerconst esp_now_peer_info_t *peer)
Povrat:
- ESP_OK: uspjelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_ARG: nevažeći argument
- ESP_ERR_ESPNOW_FULL: popis kolega je pun
- ESP_ERR_ESPNOW_NO_MEM: nema memorije
- ESP_ERR_ESPNOW_EXIST: ravnopravna mreža postoji
Parametri:
-
peer: peer informacije sa sljedećim podacima:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW ravnopravna MAC adresa koja je ujedno i MAC adresa postaje ili programa
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW ravnopravni lokalni ključ koji se koristi za šifriranje podataka
-
uint8_t kanal
Wi-Fi kanal koji kolega koristi za slanje/primanje podataka ESPNOW. Ako je vrijednost 0, upotrijebite trenutni kanal na kojoj je stanica ili softap. U protivnom se mora postaviti kao kanal na kojem je stanica ili softap
-
wifi_interface_t ifidx
Wi-Fi sučelje koje kolega koristi za slanje/primanje ESPNOW podataka
-
bool šifriranje
Podaci ESPNOW -a koje ovaj ravnopravni partner šalje/prima su šifrirani ili ne
-
void *priv
ESPNOW privatni podaci kolega
-
Opis:
Dodajte ravnopravni popis ravnopravnih
esp_now_send (const uint8_t *peer_addr, const uint8_t *podaci, size_t len)
Povrat:
- ESP_OK: uspjelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_ARG: nevažeći argument
- ESP_ERR_ESPNOW_INTERNAL: unutarnja pogreška
- ESP_ERR_ESPNOW_NO_MEM: nema memorije
- ESP_ERR_ESPNOW_NOT_FOUND: kolega nije pronađena
- ESP_ERR_ESPNOW_IF: trenutno WiFi sučelje ne podudara se s analognim
Parametri:
- peer_addr: ravnopravna MAC adresa
- data: podaci za slanje
- len: duljina podataka
Opis:
Pošaljite ESPNOW podatke. U nekim slučajevima to se događa:
- Ako peer_addr nije NULL, pošaljite podatke vršnjaku čija MAC adresa odgovara peer_addr
- Ako je peer_addr NULL, pošaljite podatke svim kolegama koji su dodani na popis ravnopravnih
- Maksimalna duljina podataka mora biti manja od ESP_NOW_MAX_DATA_LEN
- Me uspremnik na koji ukazuje argument podataka ne mora biti važeći nakon što se esp_now_send vrati
esp_now_register_recv_cb (cb)
Povrat:
- ESP_OK: uspjelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_INTERNAL: unutarnja pogreška
Parametri:
- cb: funkcija povratnog poziva za primanje ESPNOW podataka
-
void cb (const uint8_t *mac_addr, const uint8_t *podaci, int data_len)
-
mac_addr:
mac adresa primatelja
-
*podaci:
primanje podataka
-
data_len
duljina bajta podataka
-
-
Opis:
Nazovite funkciju cb nakon što primite ESPNOW podatke
Korak 4: ESP-SADA FUNKCIJE (ESP8266)
OPIS FUNKCIJA ESP32 ESP8266
int esp_now_init (void)
Povrat:
- 1 = uspjeh
- 0 = neuspjeh
Opis
Pokrenite funkciju ESPNOW
int esp_now_set_self_role (uloga u8)
Parametri:
- ESP_NOW_ROLE_IDLE: prijenos podataka nije dopušten.
- ESP_NOW_ROLE_CONTROLLER: prioritet se daje sučelju Sation
- ESP_NOW_ROLE_SLAVE: prioritet ima SoftAP sučelje
- ESP_NOW_ROLE_COMBO: prioritet ima SoftAPinterface
Opis
Postavlja ulogu uređaja
int esp_now_register_send_cb (cb)
Povrat:
- 1 = uspjeh
- 0 = neuspjeh
Parametri:
-
cb: naziv funkcije povratnog poziva nakon slanja ESPNOW podataka sa ovim parametrima:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mac adresa primatelja
-
status:
- 1 = uspjeh
- 0 = neuspjeh
-
Opis
Pozovite funkciju OnDataSent nakon slanja ESPNOW podataka
int esp_now_add_peer (u8 *mac_addr, u8 uloga, u8 kanal, u8 *ključ, u8 ključ_len)
Povrat:
- 1 = uspjeh
- 0 = neuspjeh
Parametri:
-
mac_addr
mac adresa vršnjaka
- uloga
-
kanal
Ako je vrijednost 0, upotrijebite trenutni kanal na kojoj je stanica ili softap. U protivnom se mora postaviti kao kanal na kojem je stanica ili softap
-
*ključ
ključ za šifriranje
-
ključ_len
duljina ključa
Opis:
Dodajte ravnopravni popis ravnopravnih
int esp_now_send (const uint8_t *peer_addr, const uint8_t *podaci, size_t len)
Povrat:
- 1 = Uspjeh
- 0 = Neuspjeh
Parametri:
- peer_addr: ravnopravna MAC adresa
- data: podaci za slanje
- len: duljina podataka
Opis:
Pošaljite ESPNOW podatke. U nekim slučajevima to se događa:
- Ako peer_addr nije NULL, pošaljite podatke vršnjaku čija MAC adresa odgovara peer_addr
- Ako je peer_addr NULL, pošaljite podatke svim kolegama koji su dodani na popis ravnopravnih
- Maksimalna duljina podataka mora biti manja od ESP_NOW_MAX_DATA_LEN
- Međuspremnik na koji ukazuje argument podataka ne mora biti važeći nakon što se vrati esp_now_send
int esp_now_register_recv_cb (cb)
Povrat:
- 1 = Uspjeh
- 0 = Neuspjeh
Parametri:
- cb: funkcija povratnog poziva za primanje ESPNOW podataka
-
void cb (const uint8_t *mac_addr, const uint8_t *podaci, int data_len)
-
mac_addr:
mac adresa primatelja
-
*podaci:
primanje podataka
-
data_len
duljina bajta podataka
-
-
Opis:
Nazovite funkciju cb nakon što primite ESPNOW podatke
Korak 5: Jednosmjerna komunikacija (ESP32 kao pošiljatelj)
ESP32 šalje podatke na ESP8266. s ovim kodom. Promijenite broadcastAddress na svoju odgovarajuću mac adresu primatelja. Moj je bio A4: CF: 12: C7: 9C: 77
// Dodavanje potrebnih knjižnica
#include // Za pristup esp funkcijama sada #include // Dodavanje Wifi mogućnosti na ESP32 // spremanje MAC adrese u niz pod imenom broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa mog primatelja/*definirati tipove podataka višestrukih varijabli strukturiranih i preimenovanih u struct_message*/typedef struct struct_message {char a [32]; int b; plovak c; Niz d; bool e; } struct_message; // Stvorite struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci šalju za ispis statusa void 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? "Isporuka uspješna": "Isporuka nije uspjela"); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Init ESP-NOW i vraća njegov status if (esp_now_init ()! = ESP_OK) {Serial.println ("Pogreška pri pokretanju ESP-a -SADA"); povratak; } // pozvati funkciju OnDataSent nakon slanja ESPNOW podataka esp_now_register_send_cb (OnDataSent); // Registrirajte peer esp_now_peer_info_t peerInfo; // inicijaliziramo i dodjeljujemo informacije o vršnjacima kao pokazivač na adresnu memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopiramo vrijednost broadcastAddress sa 6 bajtova u peerInfo.peer_addr peerInfo.channel = 0; // kanal na kojem esp razgovaraju. 0 znači nedefinirano i podaci će se slati na trenutni kanal. 1-14 su valjani kanali što je isto s lokalnim uređajem peerInfo.encrypt = false; // nije šifrirano // Dodajte uređaj na popis uparenih uređaja if (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nije uspjelo dodavanje ravnopravnih uređaja"); povratak; }} void loop () {// Postavi vrijednosti za slanje strcpy (myData.a, "OVO JE ČAR"); // spremi "OVO JE ČAR" u varijablu a mojih "podataka" definiranih ranije myData.b = random (1, 20); // spremanje slučajne vrijednosti myData.c = 1.2; // spremi float myData.d = "Pozdrav"; // spremanje niza myData.e = false; // sprema bool // Šalje podatke manje ili jednake 250 bajtova putem ESP-NOW-a i vraća njihov status esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (rezultat == ESP_OK) {Serial.println ("Poslano s uspjehom"); } else {Serial.println ("Pogreška pri slanju podataka"); } kašnjenje (2000); }
ESP8266 prima podatke iz ESP32 pomoću ovog koda.
// Dodavanje potrebnih knjižnica
#include // Dodavanje Wi -Fi mogućnosti na ESP32 #include // Za pristup esp sada funkcijama /*definirajte tipove podataka višestrukih varijabli strukturiranih i preimenujte ih u struct_message* /typedef struct struct_message {char a [32]; int b; plovak c; Niz d; bool e; } struct_message; // Stvaranje varijable struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci zaprime i ispiše. OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); Serijski.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 ("Niz:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Init ESP-NOW i vraća njegov status if (esp_now_init ()! = 0) {Serial.println ("Pogreška pri pokretanju ESP-NOW-a"); povratak; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definira ulogu ovog esp esp_now_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon primanja podataka ESPNOW} void loop () {}
Korak 6: Jednosmjerna komunikacija (ESP8266 kao pošiljatelj)
ESP8266 šalje podatke na ESP32. s ovim kodom. Promijenite broadcastAddress na svoju odgovarajuću mac adresu primatelja. Moja esp32 adresa je 30: AE: A4: F5: 03: A4. Za ostale funkcije za esp8266 idite ovdje
// Dodavanje potrebnih knjižnica
#include // Za dodavanje Wi -Fi mogućnosti na ESP32 #include // Za pristup esp sada funkcijama // spremanje MAC adrese u niz pod imenom broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definirajte tipove podataka višestrukih varijabli strukturiranih i preimenujte ih u struct_message*/ typedef struct struct_message {char a [32]; int b; plovak c; Niz d; bool e; } struct_message; // Stvaranje strukturirane varijable pod nazivom myData struct_message myData; // funkcija pozvana prilikom slanja podataka i ispis statusa void OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Isporuka uspješna": "Dostava nije uspjela"); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Init ESP-NOW i vraća njegov status if (esp_now_init ()) {Serial.println ("Pogreška pri pokretanju ESP-NOW-a"); povratak; } esp_now_register_send_cb (OnDataSent); // pozvati funkciju OnDataSent nakon slanja podataka ESPNOW // Dodajte uređaj na popis uparenih uređaja if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Nije uspjelo dodavanje peer"); povratak; }} void loop () {// Postavi vrijednosti za slanje strcpy (myData.a, "OVO JE ČAR"); // spremi "OVO JE ČAR" u varijablu a mojih "podataka" definiranih ranije myData.b = random (1, 20); // spremanje slučajne vrijednosti myData.c = 1.2; // spremi float myData.d = "SP8266"; // spremanje niza myData.e = false; // sprema bool // Šalje podatke manje ili jednake 250 bajtova putem ESP-NOW-a i vraća njihov status int result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Poslano s uspjehom"); } else {Serial.println ("Pogreška pri slanju podataka"); } kašnjenje (2000); }
ESP32 prima podatke od ESP8266. s ovim kodom. Za ostale funkcije pogledajte ovdje
// Dodavanje potrebnih knjižnica
#include // Za pristup esp sada funkcijama #include // Za dodavanje Wifi mogućnosti na ESP32 /*definirajte tipove podataka višestrukih varijabli strukturiranih i preimenujte ih sve u struct_message* /typedef struct struct_message {char a [32]; int b; plovak c; Niz d; bool e; } struct_message; // Stvaranje varijable struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci zaprime i ispiše. OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); Serijski.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 ("Niz:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Init ESP-NOW i vraća njegov status if (esp_now_init ()! = 0) {Serial.println ("Pogreška pri pokretanju ESP-NOW-a"); povratak; } esp_now_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon primanja podataka ESPNOW} void loop () {}
Korak 7: DVOSTRUKA KOMUNIKACIJA


ESP32 šalje podatke pri pokretanju na ESP8266. ESP8266 ispisuje primljenu poruku, a zatim odgovore na koje ESP32 ispisuje na svom serijskom monitoru.
KOD ESP32
// Dodavanje potrebnih knjižnica
#include // Za pristup esp funkcijama sada #include // Dodavanje Wifi mogućnosti na ESP32 // spremanje MAC adrese u niz pod imenom broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa mog primatelja/*definirati tipove podataka višestrukih varijabli strukturiranih i preimenovanih u struct_message*/typedef struct struct_message {char a [32]; int b; plovak c; Niz d; bool e; } struct_message; // Stvorite struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci šalju za ispis statusa void 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? "Isporuka uspješna": "Isporuka nije uspjela"); if (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} void OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); Serijski.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 ("Niz:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Init ESP-NOW i vraća njegov status if (esp_now_init ()! = ESP_OK) {Serial.println ("Pogreška pri pokretanju ESP-a -SADA"); povratak; } // pozvati funkciju OnDataSent nakon slanja ESPNOW podataka esp_now_register_send_cb (OnDataSent); // Registrirajte peer esp_now_peer_info_t peerInfo; // inicijaliziramo i dodjeljujemo informacije o vršnjacima kao pokazivač na adresnu memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopiramo vrijednost broadcastAddress sa 6 bajtova u peerInfo.peer_addr peerInfo.channel = 0; // kanal na kojem esp razgovaraju. 0 znači nedefinirano i podaci će se slati na trenutni kanal.1-14 su valjani kanali što je isto s lokalnim uređajem peerInfo.encrypt = false; // nije šifrirano // Dodajte uređaj na popis uparenih uređaja if (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nije uspjelo dodavanje ravnopravnih uređaja"); povratak; } esp_now_register_recv_cb (OnDataRecv); // pozvati funkciju OnDataRecv nakon primanja ESPNOW podataka send_data (); } void loop () {} void send_data () {Serial.println ("Slanje"); // Postavljanje vrijednosti za slanje strcpy (myData.a, "OVO JE ČAR"); // spremi "OVO JE ČAR" u varijablu a mojih "podataka" definiranih ranije myData.b = random (1, 20); // spremanje slučajne vrijednosti myData.c = 1.2; // spremi float myData.d = "ESP32"; // spremanje niza myData.e = false; // sprema bool // Šalje podatke manje ili jednake 250 bajtova putem ESP-NOW-a i vraća njihov status esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (rezultat == ESP_OK) {Serial.println ("Poslano s uspjehom");} else {Serial.println ("Pogreška pri slanju podataka"); }}
KOD ESP8266
// Dodavanje potrebnih knjižnica
#include // Za dodavanje Wi -Fi mogućnosti na ESP32 #include // Za pristup esp sada funkcijama // spremanje MAC adrese u niz pod imenom broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definirajte tipove podataka višestrukih varijabli strukturiranih i preimenujte ih u struct_message*/ typedef struct struct_message {char a [32]; int b; plovak c; Niz d; bool e; } struct_message; // Stvaranje varijable struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci zaprime i ispiše. OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); Serijski.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 ("Niz:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); send_data (); } void OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPosljednji status slanja paketa: / t"); Serial.println (sendStatus == 1? "Isporuka uspješna": "Dostava nije uspjela"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Postavi vrijednosti za slanje strcpy (myData.a, "Ovo je znak"); // spremi "OVO JE ČAR" u varijablu a mojih "podataka" definiranih ranije myData.b = random (1, 20); // spremanje slučajne vrijednosti myData.c = 1.2; // spremi float myData.d = "ESP8266"; // spremanje niza myData.e = false; // spremanje bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Init ESP-NOW i vraća njegov status if (esp_now_init ()! = 0) {Serial.println ("Pogreška pri pokretanju ESP-NOW-a"); povratak; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Nije uspjelo dodavanje vršnjaka"); povratak; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Definira ulogu ovog esp esp_now_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon primanja podataka ESPNOW} void loop () {}
Korak 8: LITERATURA
ESPNOW_32_Primjer
ESPNOW_8266 Primjer
WIFI.h
ESP8266WiFi.h
esp_now.h za ESP8266
esp_now.h za ESP32
esp_now službeni dokument (bolje objašnjenje funkcija)
ESP-NOW Službeni vodič
Preporučeni:
Upravljanje Led putem aplikacije Blynk pomoću Nodemcua putem interneta: 5 koraka

Upravljanje LED -om putem aplikacije Blynk pomoću Nodemcua putem Interneta: Pozdrav svima Danas ćemo vam pokazati kako možete upravljati LED diodom pomoću pametnog telefona putem interneta
Uradi sam -- Kako napraviti Spider robota kojim se može upravljati pomoću pametnog telefona pomoću Arduino Uno: 6 koraka

Uradi sam || Kako napraviti Spider robota koji se može kontrolirati pomoću pametnog telefona pomoću Arduino Uno: Dok izrađujete Spider robota, možete naučiti toliko stvari o robotici. Kao što je izrada robota zabavna, ali i izazovna. U ovom videu pokazat ćemo vam kako napraviti Spider robota, kojim možemo upravljati pomoću našeg pametnog telefona (Androi
Početak rada s ESP32 CAM - Streaming videa putem ESP CAM -a putem Wi -Fi -ja. Projekt sigurnosne kamere ESP32: 8 koraka

Početak rada s ESP32 CAM | Streaming videa putem ESP CAM -a putem Wi -Fi -ja. Projekt sigurnosne kamere ESP32: Danas ćemo naučiti kako koristiti ovu novu ESP32 CAM ploču i kako je možemo kodirati i koristiti kao sigurnosnu kameru te dobiti streaming video putem WiFi -ja
Udaljenost razgovora s Arduino Uno, ultrazvučnim senzorom HC-SR04 i zvučnim modulom WTV020SD: 4 koraka

Udaljenost razgovora s Arduino Uno, ultrazvučnim senzorom HC-SR04 i zvučnim modulom WTV020SD: Dobro došli u moj Instructable #31, jedan od najpopularnijih Arduino projekata. Ako vam se sviđa ovaj projekt, postanite jedan od mojih sljedbenika na Instructables i pretplatite se na moj Youtube kanal … www.youtube.com/rcloversanU svakom slučaju, za ovaj projekt
Najlakši načini ispisa tekstualnih poruka ili razgovora putem IM -a s iPhonea: 3 koraka

Najjednostavniji načini ispisa tekstualnih poruka ili razgovora putem IM -a s iPhonea: Pozdrav svima, U ovom uputstvu pokazat ću vam nekoliko najjednostavnijih načina ispisa tekstualnih poruka s vašeg iPhone -a. ne dolazi pismom, pa čak ni e -poštom, već putem teksta