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
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
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
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
Kako napraviti kalendar djeda i baka & Spomenar (čak i ako ne znate kako napraviti spomenar): 8 koraka (sa slikama)
Kako napraviti kalendar djeda i baka & Spomenar (čak i ako ne znate kako se bilježiti): Ovo je vrlo ekonomičan (i cijenjen!) Praznični poklon za bake i djedove. Ove sam godine napravio 5 kalendara za manje od 7 dolara svaki. Materijali: 12 sjajnih fotografija vašeg djeteta, djece, nećaka, nećaka, pasa, mačaka ili druge rodbine12 različitih komada