Obsah:
- Zásoby
- Krok 1: Získajte adresu Mac rady
- Krok 2: Ako zabezpečiť, aby ESP-TERAZ fungovalo
- Krok 3: FUNKCIE ESP-TERAZ (ESP32)
- Krok 4: FUNKCIE ESP-HNEĎ (ESP8266)
- Krok 5: Jednosmerná komunikácia (ESP32 ako odosielateľ)
- Krok 6: Jednosmerná komunikácia (ESP8266 ako odosielateľ)
- Krok 7: DVOJCESTNÁ KOMUNIKÁCIA
- Krok 8: ODKAZY
Video: Ako vytvoriť viac rozhovorov ESP prostredníctvom ESP-TERAZ pomocou ESP32 a ESP8266: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Na svojom prebiehajúcom projekte potrebujem viac ESP na vzájomnú komunikáciu bez smerovača. Na tento účel použijem ESP-NOW na vzájomnú bezdrôtovú komunikáciu bez smerovača na ESP.
Zásoby
Veci, ktoré som použil:
Modul ESP32 DEV
NODEMCU 1.0 (modul ESP12E)
Krok 1: Získajte adresu Mac rady
Prostredníctvom ESP-now zariadenia ESP medzi sebou komunikujú odosielaním údajov na svoju jedinečnú adresu, keď sú pripojené k internej sieti prístupových bodov vytvorenej pri okamžitej integrácii esp.. Určte teda MAC adresu každého zariadenia. V prílohe sú moje nastavenia dosky ESP32 a ESP8266
PRE ESP32
#include "WiFi.h" // Prístup k funkciám ESP32 WIFI
void setup () {Serial.begin (115200); Serial.print („Adresa MAC dosky ESP32:“); Serial.println (WiFi.macAddress ()); // vytlačí svoju MAC adresu} prázdna slučka () {}
PRE ESP8266
#include // Knižnica používaná na prístup k funkciám ESP8266 WIFI
void setup () {Serial.begin (115200); Serial.println (); Serial.print ("Adresa MAC dosky ESP8266:"); Serial.println (WiFi.macAddress ()); // vytlačí svoju MAC adresu} prázdna slučka () {}
Moje MAC ADRESY sú:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Krok 2: Ako zabezpečiť, aby ESP-TERAZ fungovalo
Tu je prehľad, ako to funguje:
- Zahrňte knižnicu esp now a wifi
- Uložte mac adresu príjemcu ESP
- Definujte dátovú štruktúru správy odoslanej/prijatej
- V nastavení nastavte wifi na režim stanice
- Inicializujte esp_now
- vytvoriť a zaregistrovať funkciu spätného volania vyvolanú po odoslaní a prijatí údajov
- V prípade Esp8266 definujte jeho úlohu
- zaregistrujte rovesníka alebo príjemcu, napr
- Odoslať údaje
Krok 3: FUNKCIE ESP-TERAZ (ESP32)
esp_now_init (neplatné)
Návrat:
- ESP_OK: uspieť
- ESP_ERR_ESPNOW_INTERNAL: Interná chyba
Popis:
Inicializujte funkciu ESPNOW
esp_now_register_send_cb (cb)
Vrátené:
- ESP_OK: uspieť
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
- ESP_ERR_ESPNOW_INTERNAL: interná chyba
Parametre:
-
cb: názov funkcie spätného volania po odoslaní údajov ESPNOW s týmito parametrami:
-
neplatné cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mac adresa prijímača
-
postavenie:
- 1 = úspech
- 0 = zlyhať
-
Popis:
Po odoslaní údajov ESPNOW zavolajte funkciu OnDataSent
esp_now_add_peerconst esp_now_peer_info_t *peer)
Vrátené:
- ESP_OK: uspieť
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
- ESP_ERR_ESPNOW_ARG: neplatný argument
- ESP_ERR_ESPNOW_FULL: zoznam podobných spoločností je plný
- ESP_ERR_ESPNOW_NO_MEM: nedostatok pamäte
- ESP_ERR_ESPNOW_EXIST: partnerský vzťah existuje
Parametre:
-
peer: partnerské informácie s nasledujúcimi údajmi:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW partnerská MAC adresa, ktorá je tiež MAC adresou stanice alebo softapu
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW partnerský miestny hlavný kľúč, ktorý sa používa na šifrovanie údajov
-
kanál uint8_t
Kanál Wi-Fi, ktorý partner používa na odosielanie/prijímanie údajov ESPNOW. Ak je hodnota 0, použite aktuálny kanál, na ktorom je stanica alebo softap zapnutý. V opačnom prípade musí byť nastavený ako kanál, na ktorom je stanica alebo softap zapnutý
-
wifi_interface_t ifidx
Rozhranie Wi-Fi, ktoré partner používa na odosielanie/prijímanie údajov ESPNOW
-
bool šifrovanie
Údaje ESPNOW, ktoré tento partner odosiela/prijíma, sú šifrované alebo nie
-
prázdny *priv
ESPNOW partnerské súkromné údaje
-
Popis:
Pridajte partnera do zoznamu podobných
esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)
Vrátené:
- ESP_OK: uspieť
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
- ESP_ERR_ESPNOW_ARG: neplatný argument
- ESP_ERR_ESPNOW_INTERNAL: interná chyba
- ESP_ERR_ESPNOW_NO_MEM: nedostatok pamäte
- ESP_ERR_ESPNOW_NOT_FOUND: partner sa nenašiel
- ESP_ERR_ESPNOW_IF: aktuálne rozhranie WiFi sa nezhoduje s rozhraním od ostatných
Parametre:
- peer_addr: peer MAC adresa
- údaje: údaje na odoslanie
- len: dĺžka údajov
Popis:
Odošlite údaje ESPNOW. V niektorých prípadoch sa to stane:
- Ak peer_addr nemá NULL, odošlite údaje peerovi, ktorého adresa MAC sa zhoduje s peer_addr
- Ak je hodnota peer_addr NULL, odošlite údaje všetkým partnerom, ktorí sú pridaní do zoznamu partnerov
- Maximálna dĺžka údajov musí byť menšia ako ESP_NOW_MAX_DATA_LEN
- Vyrovnávacia pamäť, na ktorú poukazuje argument údajov, nemusí byť platná po návrate esp_now_send
esp_now_register_recv_cb (cb)
Vrátené:
- ESP_OK: uspieť
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW nie je inicializovaný
- ESP_ERR_ESPNOW_INTERNAL: interná chyba
Parametre:
-
cb: funkcia spätného volania na príjem údajov ESPNOW
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
mac adresa prijímača
-
*údaje:
príjem dát
-
data_len
dĺžka dátového bajtu
-
-
Popis:
Po prijatí údajov ESPNOW zavolajte funkciu cb
Krok 4: FUNKCIE ESP-HNEĎ (ESP8266)
POPIS FUNKCIÍ ESP32 ESP8266
int esp_now_init (neplatné)
Vrátené:
- 1 = úspech
- 0 = zlyhať
Popis
Inicializujte funkciu ESPNOW
int esp_now_set_self_role (rola u8)
Parametre:
- ESP_NOW_ROLE_IDLE: prenos údajov nie je povolený.
- ESP_NOW_ROLE_CONTROLLER: priorita je daná rozhraniu Sation
- ESP_NOW_ROLE_SLAVE: priorita je daná rozhraniu SoftAP
- ESP_NOW_ROLE_COMBO: priorita je daná rozhraniu SoftAPinterface
Popis
Nastaví rolu zariadenia
int esp_now_register_send_cb (cb)
Vrátené:
- 1 = úspech
- 0 = zlyhať
Parametre:
-
cb: názov funkcie spätného volania po odoslaní údajov ESPNOW s týmito parametrami:
-
neplatné cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mac adresa prijímača
-
postavenie:
- 1 = úspech
- 0 = zlyhať
-
Popis
Po odoslaní údajov ESPNOW zavolajte funkciu OnDataSent
int esp_now_add_peer (u8 *mac_addr, u8 rola, u8 kanál, u8 *kľúč, u8 key_len)
Vrátené:
- 1 = úspech
- 0 = zlyhať
Parametre:
-
mac_addr
mac adresa partnera
- úlohu
-
kanál
Ak je hodnota 0, použite aktuálny kanál, na ktorom je stanica alebo softap zapnutý. V opačnom prípade musí byť nastavený ako kanál, na ktorom je stanica alebo softap zapnutý
-
*kľúč
kľúč na šifrovanie
-
key_len
dĺžka kľúča
Popis:
Pridajte partnera do zoznamu podobných
int esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)
Vrátené:
- 1 = úspech
- 0 = Zlyhanie
Parametre:
- peer_addr: peer MAC adresa
- údaje: údaje na odoslanie
- len: dĺžka údajov
Popis:
Odošlite údaje ESPNOW. V niektorých prípadoch sa to stane:
- Ak peer_addr nemá NULL, odošlite údaje peerovi, ktorého adresa MAC sa zhoduje s peer_addr
- Ak je hodnota peer_addr NULL, odošlite údaje všetkým partnerom, ktorí sú pridaní do zoznamu partnerov
- Maximálna dĺžka údajov musí byť menšia ako ESP_NOW_MAX_DATA_LEN
- Vyrovnávacia pamäť, na ktorú poukazuje argument údajov, nemusí byť platná po návrate esp_now_send
int esp_now_register_recv_cb (cb)
Vrátené:
- 1 = úspech
- 0 = Zlyhanie
Parametre:
-
cb: funkcia spätného volania na príjem údajov ESPNOW
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
mac adresa prijímača
-
*údaje:
príjem dát
-
data_len
dĺžka dátového bajtu
-
-
Popis:
Po prijatí údajov ESPNOW zavolajte funkciu cb
Krok 5: Jednosmerná komunikácia (ESP32 ako odosielateľ)
ESP32 odosiela údaje do ESP8266. s týmto kódom. Zmeňte adresu broadcastAddress na svoju vlastnú adresu MAC prijímača. Moje bolo A4: CF: 12: C7: 9C: 77
// Pridajte potrebné knižnice
#include // Prístup k funkciám esp teraz #include // Pridanie funkcií Wifi na ESP32 // uloženie adresy MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa môjho prijímača/*definuje dátové typy viacerých premenných štruktúrované a všetky ich premenuje na struct_message*/typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte správu struct_message s názvom myData struct_message myData; // funkcia volaná pri odoslaní údajov na vytlačenie ich stavu neplatné OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Doručenie úspešné": "Doručenie zlyhalo"); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = ESP_OK) {Serial.println ("Chyba pri inicializácii ESP -NOW "); návrat; } // zavolajte funkciu OnDataSent po odoslaní údajov ESPNOW esp_now_register_send_cb (OnDataSent); // Registrácia peer esp_now_peer_info_t peerInfo; // inicializácia a priradenie peer informácií ako ukazovateľ addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // skopírujte hodnotu broadcastAddress so 6 bytmi na peerInfo.peer_addr peerInfo.channel = 0; // kanál, na ktorom hovoria esp. 0 znamená nedefinované a údaje budú odoslané na aktuálnom kanáli. 1-14 sú platné kanály, ktoré sú rovnaké s lokálnym zariadením peerInfo.encrypt = false; // nezašifrované // Pridajte zariadenie do zoznamu spárovaných zariadení, ak (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nepodarilo sa pridať peer"); návrat; }} void loop () {// Nastavte hodnoty na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // save a float myData.d = "Ahoj"; // uloženie reťazca myData.e = false; // uloženie boolu // Odoslanie údajov menších alebo rovných 250 bajtov prostredníctvom ESP-TERAZ a vráti jeho stav esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Odoslané úspešne"); } else {Serial.println ("Chyba pri odosielaní údajov"); } oneskorenie (2000); }
ESP8266 prijíma údaje z ESP32 pomocou tohto kódu.
// Pridajte potrebné knižnice
#include // Pridanie funkcií Wifi do systému ESP32 #include // Prístup k funkciám esp now /*definujte dátové typy viacerých štruktúrovaných premenných a premenujte ich všetky na struct_message* /typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte premennú struct_message s názvom myData struct_message myData; // funkcia volajúca po prijatí údajov a vytlačí ich neplatné OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); 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 ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = 0) {Serial.println ("Chyba pri inicializácii ESP-TERAZ"); návrat; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definuje úlohu tohto esp esp_now_register_recv_cb (OnDataRecv); // volanie funkcie OnDataRecv po prijatí údajov ESPNOW} void loop () {}
Krok 6: Jednosmerná komunikácia (ESP8266 ako odosielateľ)
ESP8266 odosiela údaje do ESP32. s týmto kódom. Zmeňte adresu broadcastAddress na svoju vlastnú adresu MAC prijímača. Moja adresa esp32 je 30: AE: A4: F5: 03: A4. Ďalšie funkcie pre esp8266 nájdete tu
// Pridajte potrebné knižnice
#include // Ak chcete pridať možnosti WiFi na ESP32 #include // Prístup k funkciám esp teraz // uložte adresu MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definujte dátové typy viacerých štruktúrovaných premenných a všetky ich premenujte na struct_message*/ typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte štruktúrovanú premennú s názvom myData struct_message myData; // funkcia volaná pri odoslaní údajov a vytlačenie jej stavu neplatné OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (sendStatus == 1? "Doručenie úspešné": "Doručenie zlyhalo"); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-HNED a vráti svoj stav, ak (esp_now_init ()) {Serial.println ("Chyba pri inicializácii ESP-HNEĎ"); návrat; } esp_now_register_send_cb (OnDataSent); // zavolajte funkciu OnDataSent po odoslaní údajov ESPNOW // Pridajte zariadenie do zoznamu spárovaných zariadení, ak (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Nepodarilo sa pridať peer"); návrat; }} void loop () {// Nastavte hodnoty na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // ulož float myData.d = "SP8266"; // uloženie reťazca myData.e = false; // save bool // Odoslanie údajov menších alebo rovných 250 bajtov cez ESP-NOW a vrátenie ich stavu int result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Odoslané úspešne"); } else {Serial.println ("Chyba pri odosielaní údajov"); } oneskorenie (2000); }
ESP32 prijíma údaje z ESP8266. s týmto kódom. Pre ostatné funkcie rozhodca tu
// Pridajte potrebné knižnice
#include // Prístup k funkciám esp teraz #include // Pridanie funkcií Wi -Fi na ESP32 /*definujte dátové typy viacerých štruktúrovaných premenných a premenujte ich všetky na struct_message* /typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte premennú struct_message s názvom myData struct_message myData; // funkcia volaná po prijatí údajov, ktorá ich vytlačí, neplatná OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); 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 ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = 0) {Serial.println ("Chyba pri inicializácii ESP-TERAZ"); návrat; } esp_now_register_recv_cb (OnDataRecv); // zavolať funkciu OnDataRecv po prijatí údajov ESPNOW} void loop () {}
Krok 7: DVOJCESTNÁ KOMUNIKÁCIA
ESP32 odosiela údaje o štarte do ESP8266. ESP8266 vytlačí prijatú správu a potom odpovie, na ktoré ESP32 vytlačí jej sériový monitor.
KÓD ESP32
// Pridajte potrebné knižnice
#include // Prístup k funkciám esp teraz #include // Pridanie funkcií Wifi na ESP32 // uloženie adresy MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC adresa môjho prijímača/*definuje dátové typy viacerých premenných štruktúrované a všetky ich premenuje na struct_message*/typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorenie správy_štruktúry s názvom myData struct_message myData; // funkcia volaná pri odoslaní údajov na vytlačenie ich stavu neplatné OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Doručenie úspešné": "Doručenie zlyhalo"); if (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} neplatné OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); 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 ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = ESP_OK) {Serial.println ("Chyba pri inicializácii ESP -NOVE '); návrat; } // zavolajte funkciu OnDataSent po odoslaní údajov ESPNOW esp_now_register_send_cb (OnDataSent); // Registrácia peer esp_now_peer_info_t peerInfo; // inicializácia a priradenie peer informácií ako ukazovateľ addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // skopírujte hodnotu broadcastAddress so 6 bytmi na peerInfo.peer_addr peerInfo.channel = 0; // kanál, na ktorom hovoria esp. 0 znamená nedefinované a údaje budú odoslané na aktuálnom kanáli.1-14 sú platné kanály, ktoré sú rovnaké s lokálnym zariadením peerInfo.encrypt = false; // nezašifrované // Pridajte zariadenie do zoznamu spárovaných zariadení, ak (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Nepodarilo sa pridať peer"); návrat; } esp_now_register_recv_cb (OnDataRecv); // volanie funkcie OnDataRecv po prijatí údajov ESPNOW send_data (); } void loop () {} void send_data () {Serial.println ("Odosielanie"); // Nastavte hodnoty na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // save a float myData.d = "ESP32"; // uloženie reťazca myData.e = false; // uloženie boolu // Odoslanie údajov menších alebo rovných 250 bajtov prostredníctvom ESP-TERAZ a vráti jeho stav esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Odoslané úspešne");} else {Serial.println ("Chyba pri odosielaní údajov"); }}
KÓD ESP8266
// Pridajte potrebné knižnice
#include // Ak chcete pridať možnosti WiFi na ESP32 #include // Prístup k funkciám esp teraz // uložte adresu MAC do poľa s názvom broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definujte dátové typy viacerých štruktúrovaných premenných a všetky ich premenujte na struct_message*/ typedef struct struct_message {char a [32]; int b; plavák c; Reťazec d; bool e; } struct_message; // Vytvorte premennú struct_message s názvom myData struct_message myData; // funkcia volajúca po prijatí údajov a vytlačí ich neplatné OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Prijaté bajty:"); 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 ("Reťazec:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); send_data (); } neplatné OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nPosledný stav odoslania paketu: / t"); Serial.println (sendStatus == 1? "Doručenie úspešné": "Doručenie zlyhalo"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Nastavenie hodnôt na odosielanie strcpy (myData.a, "TOTO JE CHAR"); // uloženie „TOTO JE CHAR“do premennej a mojich „údajov“definovaných skôr myData.b = random (1, 20); // uloženie náhodnej hodnoty myData.c = 1,2; // ulož float myData.d = "ESP8266"; // uloženie reťazca myData.e = false; // uloženie boolu esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Nastavte prenosovú rýchlosť pre sériovú komunikáciu s ESP Serial.begin (115200); // Nastaviť zariadenie ako Wi-Fi Station WiFi.mode (WIFI_STA); // Spustí wifi // Spustí ESP-TERAZ a vráti svoj stav, ak (esp_now_init ()! = 0) {Serial.println ("Chyba pri inicializácii ESP-TERAZ"); návrat; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Nepodarilo sa pridať peer"); návrat; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Definuje úlohu tohto esp esp_now_register_recv_cb (OnDataRecv); // zavolať funkciu OnDataRecv po prijatí údajov ESPNOW} void loop () {}
Krok 8: ODKAZY
ESPNOW_32_Priklad
ESPNOW_8266 Príklad
WIFI.h
ESP8266WiFi.h
esp_now.h pre ESP8266
esp_now.h pre ESP32
esp_now oficiálny dokument (Lepšie vysvetlenie funkcií)
ESP-HNEĎ Oficiálna príručka
Odporúča:
Ako čítať viac analógových hodnôt pomocou jedného analógového kolíka: 6 krokov (s obrázkami)
Ako čítať viac analógových hodnôt pomocou jedného analógového pinu: V tomto návode vám ukážem, ako čítať viac analógových hodnôt pomocou iba jedného analógového vstupného pinu
Pestovanie viac šalátu na menšom priestore alebo Pestovanie šalátu vo vesmíre, (viac alebo menej) .: 10 krokov
Pestovanie viac šalátu na menšom priestore alebo … Pestovanie šalátu vo vesmíre, (viac či menej) .: Toto je profesionálny príspevok do súťaže Growing Beyond Earth, Maker Contest, predloženej prostredníctvom Instructables. Už som nemohol byť nadšený z toho, že budem navrhovať vesmírnu produkciu plodín a zverejním svoj prvý návod. Na začiatku nás súťaž požiadala, aby sme
Ako opravím svoj mŕtvy notebook viac ako dva roky: 8 krokov
Ako opravím svoj mŕtvy notebook trvajúci viac ako dva roky: Poznámka ** prosím, hlasujte, ak oceníte tento projekt, ďakujem Hlúpe notebook NE522 tejto brány v mojej zásuvke asi dva roky pravdepodobne preto, že mám iný na použitie, takže keď som videl túto súťaž Viem, že stojí za to to opraviť a zdieľať všetky opravy
Ako vytvoriť 2D znak pomocou ovládača znakov v programe Unreal Engine 4 pomocou Visual Script pre PC: 11 krokov
Ako vytvoriť 2d znak pomocou ovládača znakov v Unreal Engine 4 pomocou Visual Script pre PC: Ako vytvoriť 2d znak pomocou ovládača znakov v Unreal Engine 4 pomocou vizuálneho skriptu pre PC Ahoj, som Jordan Steltz. Videohry vyvíjam od svojich 15 rokov. Tento tutoriál vás naučí, ako vytvoriť základnú postavu pomocou
Ako vytvoriť 1 USB na 2 alebo viac .: 7 krokov
Ako vytvoriť 1 USB na 2 alebo viac .: Krok za krokom vás naučím, ako zvýšiť počet USB portov dostupných vo vašom počítači. To vás môže stáť menej ako 10 dolárov alebo zadarmo