Sadržaj:
- Supplies
- Korak 1: Nabavite Board adresu Maca
- Korak 2: Kako učiniti da ESP-NOW funkcionira
- Korak 3: ESP-SADA FUNKCIJE (ESP32)
- Korak 4: ESP-SADA FUNKCIJE (ESP8266)
- Korak 5: Jednosmjerna komunikacija (ESP32 kao pošiljalac)
- Korak 6: Jednosmjerna komunikacija (ESP8266 kao pošiljalac)
- Korak 7: DVOSTRUKA KOMUNIKACIJA
- Korak 8: REFERENCE
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Na mom tekućem projektu potrebno mi je više ESP -ova za međusobnu komunikaciju 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.
Supplies
Stvari koje sam koristio:
ESP32 DEV modul
NODEMCU 1.0 (ESP12E modul)
Korak 1: Nabavite Board adresu Maca
Preko ESP-a sada, ESP uređaji međusobno razgovaraju šaljući podatke na njihovu jedinstvenu adresu dok su povezani na internu pristupnu tačku koja je napravljena 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 // Biblioteka 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 su:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Korak 2: Kako učiniti da ESP-NOW funkcionira
Evo pregleda kako to učiniti da funkcionira:
- Uključite esp sada i wifi biblioteke
- Spremite mac adresu primatelja ESP -a
- Definirajte strukturu podataka poruke poslane/primljene
- Prilikom postavljanja postavite WiFi na način rada stanice
- Pokreni esp_now
- uputite i registrirajte funkciju povratnog poziva koja se poziva nakon slanja i primanja podataka
- Za Esp8266 definirajte njegovu ulogu
- registrirajte primatelja ili primatelja esp
- Slanje podataka
Korak 3: ESP-SADA FUNKCIJE (ESP32)
esp_now_init (void)
Povratak:
- ESP_OK: uspelo
- ESP_ERR_ESPNOW_INTERNAL: Interna greška
Opis:
Pokrenite funkciju ESPNOW
esp_now_register_send_cb (cb)
Povrat:
- ESP_OK: uspelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_INTERNAL: interna greš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 primaoca
-
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: uspelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_ARG: nevažeći argument
- ESP_ERR_ESPNOW_FULL: lista kolega je puna
- ESP_ERR_ESPNOW_NO_MEM: nema memorije
- ESP_ERR_ESPNOW_EXIST: peer je postojao
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 stanice 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 peer koristi za slanje/primanje ESPNOW podataka. Ako je vrijednost 0, koristite trenutni kanal na kojoj je stanica ili softap. U suprotnom, mora se postaviti kao kanal na kojem je stanica ili softap
-
wifi_interface_t ifidx
Wi-Fi sučelje koje peer koristi za slanje/primanje ESPNOW podataka
-
bool encrypt
ESPNOW podaci koje ovaj ravnopravni partner šalje/prima su šifrirani ili ne
-
void *priv
ESPNOW privatni podaci kolega
-
Opis:
Dodajte ravnopravnu listu na ravnopravne
esp_now_send (const uint8_t *peer_addr, const uint8_t *podaci, size_t len)
Povrat:
- ESP_OK: uspelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_ARG: nevažeći argument
- ESP_ERR_ESPNOW_INTERNAL: interna greška
- ESP_ERR_ESPNOW_NO_MEM: nema memorije
- ESP_ERR_ESPNOW_NOT_FOUND: peer nije pronađen
- ESP_ERR_ESPNOW_IF: trenutno WiFi sučelje ne podudara se s analognim
Parametri:
- peer_addr: peer MAC adresa
- data: podaci za slanje
- len: dužina podataka
Opis:
Pošaljite ESPNOW podatke. U nekim slučajevima to se događa:
- Ako peer_addr nije NULL, pošaljite podatke peeru čija MAC adresa odgovara peer_addr
- Ako je peer_addr NULL, pošaljite podatke svim vršnjacima koji su dodani na listu ravnopravnih
- Maksimalna dužina 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
esp_now_register_recv_cb (cb)
Povrat:
- ESP_OK: uspelo
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nije inicijaliziran
- ESP_ERR_ESPNOW_INTERNAL: interna greška
Parametri:
- cb: funkcija povratnog poziva za prijem ESPNOW podataka
-
void cb (const uint8_t *mac_addr, const uint8_t *podaci, int data_len)
-
mac_addr:
mac adresa prijemnika
-
*podaci:
primanje podataka
-
data_len
dužina bajta podataka
-
-
Opis:
Pozovite 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 dozvoljen.
- ESP_NOW_ROLE_CONTROLLER: prioritet se daje interfejsu Sation
- ESP_NOW_ROLE_SLAVE: prioritet se daje SoftAP sučelju
- 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 primaoca
-
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, koristite trenutni kanal na kojoj je stanica ili softap. U suprotnom, mora se postaviti kao kanal na kojem je stanica ili softap
-
*ključ
ključ za šifriranje
-
key_len
dužina ključa
Opis:
Dodajte ravnopravnu listu na ravnopravne
int esp_now_send (const uint8_t *peer_addr, const uint8_t *podaci, size_t len)
Povrat:
- 1 = Uspjeh
- 0 = Greška
Parametri:
- peer_addr: peer MAC adresa
- data: podaci za slanje
- len: dužina podataka
Opis:
Pošaljite ESPNOW podatke. U nekim slučajevima to se događa:
- Ako peer_addr nije NULL, pošaljite podatke peeru čija MAC adresa odgovara peer_addr
- Ako je peer_addr NULL, pošaljite podatke svim vršnjacima koji su dodani na listu ravnopravnih
- Maksimalna dužina 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 = Greška
Parametri:
- cb: funkcija povratnog poziva za prijem ESPNOW podataka
-
void cb (const uint8_t *mac_addr, const uint8_t *podaci, int data_len)
-
mac_addr:
mac adresa prijemnika
-
*podaci:
primanje podataka
-
data_len
dužina bajta podataka
-
-
Opis:
Pozovite funkciju cb nakon što primite ESPNOW podatke
Korak 5: Jednosmjerna komunikacija (ESP32 kao pošiljalac)
ESP32 šalje podatke na ESP8266. sa ovim kodom. Promijenite broadcastAddress na svoju odgovarajuću mac adresu primatelja. Moj je bio A4: CF: 12: C7: 9C: 77
// Dodavanje potrebnih biblioteka
#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 prijemnika/*definira tipove podataka višestrukih varijabli strukturiranih i preimenovanih u struct_message*/typedef struct struct_message {char a [32]; int b; float c; String d; bool e; } struct_message; // Kreiramo 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 / nPosljednji status slanja paketa: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Isporuka uspješna": "Dostava nije uspjela"); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavljanje uređaja kao Wi-Fi stanice WiFi.mode (WIFI_STA); // Pokretanje WiFi-a // Init ESP-NOW i vraćanje statusa if (esp_now_init ()! = ESP_OK) {Serial.println ("Greška pri pokretanju ESP-a -SAD"); return; } // 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 vršnjaka 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 koji su isti sa lokalnim uređajem peerInfo.encrypt = false; // nije šifrirano // Dodajte uređaj na listu uparenih uređaja if (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Neuspješno dodavanje peer"); return; }} void loop () {// Postavlja 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 = "Zdravo"; // 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 sa uspehom"); } else {Serial.println ("Greška pri slanju podataka"); } kašnjenje (2000); }
ESP8266 prima podatke iz ESP32 pomoću ovog koda.
// Dodavanje potrebnih biblioteka
#include // Za dodavanje Wi -Fi mogućnosti na ESP32 #include // Za pristup esp sada funkcijama /*definirajte tipove podataka višestrukih varijabli strukturiranih i preimenujte ih sve u struct_message* /typedef struct struct_message {char a [32]; int b; float c; String d; bool e; } struct_message; // Kreiranje varijable struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci prime i ispiše ispisuje OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); 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 () {// 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 // Pokreće ESP-NOW i vraća njegov status if (esp_now_init ()! = 0) {Serial.println ("Greška pri pokretanju ESP-NOW-a"); return; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definira ulogu ovog esp enow_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon prijema ESPNOW podataka} void loop () {}
Korak 6: Jednosmjerna komunikacija (ESP8266 kao pošiljalac)
ESP8266 šalje podatke na ESP32. sa 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 biblioteka
#include // Za dodavanje Wi -Fi mogućnosti na ESP32 #include // Za pristup esp funkcijama sada // 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; float c; String d; bool e; } struct_message; // Kreiramo strukturiranu varijablu pod nazivom myData struct_message myData; // funkcija pozvana pri slanju podataka i ispis statusa 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"); } void setup () {// Postavite brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavljanje uređaja kao Wi-Fi stanice WiFi.mode (WIFI_STA); // Pokretanje WiFi-a // Init ESP-NOW i vraćanje statusa if (esp_now_init ()) {Serial.println ("Greška pri pokretanju ESP-NOW-a"); return; } esp_now_register_send_cb (OnDataSent); // poziva funkciju OnDataSent nakon slanja ESPNOW podataka // Dodajte uređaj na listu uparenih uređaja if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Neuspješno dodavanje peer"); return; }} void loop () {// Postavlja 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 sa uspehom"); } else {Serial.println ("Greška pri slanju podataka"); } kašnjenje (2000); }
ESP32 prima podatke sa ESP8266. sa ovim kodom. Za ostale funkcije pogledajte ovdje
// Dodavanje potrebnih biblioteka
#include // Za pristup esp funkcijama sada #include // Za dodavanje Wi -Fi mogućnosti na ESP32 /*definirajte tipove podataka višestrukih varijabli strukturiranih i preimenujte ih u struct_message* /typedef struct struct_message {char a [32]; int b; float c; Niz d; bool e; } struct_message; // Kreiranje varijable struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada su podaci primljeni i ispisani. OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); 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 () {// 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 // Pokreće ESP-NOW i vraća njegov status if (esp_now_init ()! = 0) {Serial.println ("Greška pri pokretanju ESP-NOW-a"); return; } esp_now_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon prijema ESPNOW podataka} void loop () {}
Korak 7: DVOSTRUKA KOMUNIKACIJA
ESP32 šalje podatke pri pokretanju na ESP8266. ESP8266 štampa primljenu poruku, a zatim odgovore na koje ESP32 štampa na svom serijskom monitoru.
ESP32 KOD
// Dodavanje potrebnih biblioteka
#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 prijemnika/*definira tipove podataka višestrukih varijabli strukturiranih i preimenovanih u struct_message*/typedef struct struct_message {char a [32]; int b; float c; Niz d; bool e; } struct_message; // Kreiramo 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 / nPosljednji status slanja paketa: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Isporuka uspješna": "Dostava 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:"); 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 () {// Postavi brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavljanje uređaja kao Wi-Fi stanice WiFi.mode (WIFI_STA); // Pokretanje WiFi-a // Init ESP-NOW i vraćanje statusa if (esp_now_init ()! = ESP_OK) {Serial.println ("Greška pri pokretanju ESP-a -SAD"); return; } // 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 vršnjaka 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 koji su isti sa lokalnim uređajem peerInfo.encrypt = false; // nije šifrirano // Dodajte uređaj na listu uparenih uređaja if (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Neuspješno dodavanje peer"); return; } esp_now_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon prijema ESPNOW podataka send_data (); } void loop () {} void send_data () {Serial.println ("Sending"); // 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 (result == ESP_OK) {Serial.println ("Poslano sa uspehom");} else {Serial.println ("Greška pri slanju podataka"); }}
ESP8266 KOD
// Dodavanje potrebnih biblioteka
#include // Za dodavanje Wi -Fi mogućnosti na ESP32 #include // Za pristup esp funkcijama sada // 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; float c; Niz d; bool e; } struct_message; // Kreiranje varijable struct_message pod nazivom myData struct_message myData; // funkcija koja se poziva kada se podaci prime i ispiše ispisuje OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Primljeni bajtovi:"); 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 (); } void OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPoslednji 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 Č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 = "ESP8266"; // spremanje niza myData.e = false; // spremanje bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Postavi brzinu prijenosa za serijsku komunikaciju s ESP Serial.begin (115200); // Postavi uređaj kao Wi-Fi postaju WiFi.mode (WIFI_STA); // Pokreće wifi // Pokreće ESP-NOW i vraća njegov status if (esp_now_init ()! = 0) {Serial.println ("Greška pri pokretanju ESP-NOW-a"); return; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Dodavanje peer -a nije uspelo"); return; } 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 enow_register_recv_cb (OnDataRecv); // poziva funkciju OnDataRecv nakon prijema ESPNOW podataka} void loop () {}
Korak 8: REFERENCE
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čuje se:
Kako napraviti RADAR koristeći Arduino za naučni projekat - Najbolji Arduino projekti: 5 koraka
Kako napraviti RADAR koristeći Arduino za naučni projekat | Najbolji Arduino projekti: Zdravo prijatelji, u ovom uputstvu pokazat ću vam kako napraviti nevjerojatan radarski sistem izgrađen pomoću arduino nano, ovaj projekt je idealan za naučne projekte i to možete lako učiniti uz vrlo malo ulaganja i šanse ako je osvajanje nagrade velika
Kako napraviti stroj za utege za bebe koristeći Arduino Nano, HX-711 mjernu ćeliju i OLED 128X64 -- Kalibracija HX-711: 5 koraka
Kako napraviti stroj za utege za bebe koristeći Arduino Nano, HX-711 mjernu ćeliju i OLED 128X64 || Kalibracija HX-711: Zdravo Instructables, Prije nekoliko dana postao sam otac slatke bebe?. Kada sam bio u bolnici otkrio sam da je težina bebe toliko važna za praćenje rasta bebe. Imam ideju? da od sebe napravim mašinu za vaganje beba.u ovom uputstvu ja
ESP8266 Vodič za NODEMCU BLYNK IOT - Esp8266 IOT koristeći Blunk i Arduino IDE - Upravljanje LED diodama putem Interneta: 6 koraka
ESP8266 Vodič za NODEMCU BLYNK IOT | Esp8266 IOT koristeći Blunk i Arduino IDE | Upravljanje LED diodama putem Interneta: Zdravo dečki, u ovim uputstvima naučit ćemo kako koristiti IOT sa našim ESP8266 ili Nodemcu. Za to ćemo koristiti aplikaciju blynk. Zato ćemo koristiti naš esp8266/nodemcu za kontrolu LED dioda putem interneta. Dakle, aplikacija Blynk bit će povezana s našim esp8266 ili Nodemcu
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 iPhone -a: 3 koraka
Najlakši načini za ispis tekstualnih poruka ili razgovora putem IM -a sa iPhone -a: 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