Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-23 14:40
Oma käimasoleva projekti puhul on mul vaja mitu ESP -d, et rääkida üksteisega ilma ruuterita. Selleks kasutan ESP-NOW-d, et juhtmeta suhelda ilma ESP-ruuterita.
Tarvikud
Asjad, mida kasutasin:
ESP32 DEV moodul
NODEMCU 1.0 (ESP12E moodul)
Samm: hankige juhatuse Maci aadress
ESP-now kaudu räägivad ESP-seadmed üksteisega, saates andmed oma unikaalsele aadressile, olles samal ajal ühendatud esp-seadme intiiliseerimise ajal loodud sisemise juurdepääsupunktivõrguga.. Seega määrake iga seadme MAC -aadress. Lisatud on minu ESP32 ja ESP8266 juhatuse seaded
ESP32 jaoks
#include "WiFi.h" // ESP32 WIFI võimalustele juurdepääsuks
void setup () {Serial.begin (115200); Serial.print ("ESP32 juhatuse MAC -aadress:"); Serial.println (WiFi.macAddress ()); // prindib oma MAC -aadressi} void loop () {}
ESP8266 jaoks
#include // Raamatukogu, mida kasutatakse juurdepääsuks ESP8266 WIFI võimalustele
void setup () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // prindib oma MAC -aadressi} void loop () {}
Minu MAC -AADRESS on:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Samm: kuidas panna ESP-NOW tööle
Siin on ülevaade selle toimimisest:
- Kaasa esp kohe ja WiFi -teegid
- Salvestage vastuvõtja ESP mac -aadress
- Määrake saadetud/vastuvõetud sõnumi andmestruktuur
- Seadistamisel seadke wifi jaamarežiimi
- Initsialiseeri esp_now
- helistage ja registreerige pärast andmete saatmist ja vastuvõtmist tagasi helistamise funktsioon
- Esp8266 puhul määrake selle roll
- registreerige eakaaslane või saaja esp
- Andmete saatmine
3. toiming: ESP-NOW FUNKTSIOONID (ESP32)
esp_now_init (tühine)
Tagasi:
- ESP_OK: õnnestub
- ESP_ERR_ESPNOW_INTERNAL: Sisemine viga
Kirjeldus:
ESPNOW funktsiooni initsialiseerimine
esp_now_register_send_cb (cb)
Tagastab:
- ESP_OK: õnnestub
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW pole lähtestatud
- ESP_ERR_ESPNOW_INTERNAL: sisemine viga
Parameetrid:
-
cb: tagasihelistamisfunktsiooni nimi pärast ESPNOW andmete saatmist järgmiste parameetritega:
-
tühine cb (const uint8_t *mac_addr, esp_now_send_status_t olek)
- mac_addr: vastuvõtja mac -aadress
-
staatus:
- 1 = edu
- 0 = ebaõnnestumine
-
Kirjeldus:
Pärast ESPNOW andmete saatmist helistage funktsioonile OnDataSent
esp_now_add_peerconst esp_now_peer_info_t *eakaaslane)
Tagastab:
- ESP_OK: õnnestub
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW pole lähtestatud
- ESP_ERR_ESPNOW_ARG: vale argument
- ESP_ERR_ESPNOW_FULL: kaaslaste nimekiri on täis
- ESP_ERR_ESPNOW_NO_MEM: mälu on otsas
- ESP_ERR_ESPNOW_EXIST: kaaslane on olemas
Parameetrid:
-
peer: vastastikune teave järgmiste andmetega:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW võrgu MAC -aadress, mis on ühtlasi jaama või softi MAC -aadress
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW võrdõiguslik kohalik peavõti, mida kasutatakse andmete krüptimiseks
-
kanal uint8_t
WiFi-kanal, mida kolleeg kasutab ESPNOW-andmete saatmiseks/vastuvõtmiseks. Kui väärtus on 0, kasutage praegust kanalit, mis jaam või diivan on sisse lülitatud. Vastasel juhul tuleb see seadistada kanaliks, millel jaam või diivan on sisse lülitatud
-
wifi_interface_t ifidx
WiFi-liides, mida kolleeg kasutab ESPNOW andmete saatmiseks/vastuvõtmiseks
- bool krüptida
ESPNOW andmed, mida see kolleeg saadab/võtab vastu, on krüptitud või mitte
-
tühine *privaat
ESPNOW sarnased privaatsed andmed
-
Kirjeldus:
Lisage kaaslaste nimekirja eakaaslane
esp_now_send (const uint8_t *peer_addr, const uint8_t *andmed, size_t len)
Tagastab:
- ESP_OK: õnnestub
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW pole lähtestatud
- ESP_ERR_ESPNOW_ARG: vale argument
- ESP_ERR_ESPNOW_INTERNAL: sisemine viga
- ESP_ERR_ESPNOW_NO_MEM: mälu on otsas
- ESP_ERR_ESPNOW_NOT_FOUND: sarnast ei leitud
- ESP_ERR_ESPNOW_IF: praegune WiFi -liides ei vasta kaaslaste omale
Parameetrid:
- peer_addr: peer MAC -aadress
- andmed: andmed, mida saata
- len: andmete pikkus
Kirjeldus:
ESPNOW andmete saatmine. Mõnel juhul juhtub see:
- Kui peer_addr ei ole NULL, saatke andmed samaealisele, kelle MAC -aadress vastab peer_addr
- Kui peer_addr on NULL, saatke andmed kõigile eakaaslaste loendisse lisatud eakaaslastele
- Andmete maksimaalne pikkus peab olema väiksem kui ESP_NOW_MAX_DATA_LEN
- Puhver, millele viitab andmete argument, ei pea pärast esp_now_send tagastamist kehtima
esp_now_register_recv_cb (cb)
Tagastab:
- ESP_OK: õnnestub
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW pole lähtestatud
- ESP_ERR_ESPNOW_INTERNAL: sisemine viga
Parameetrid:
-
cb: tagasihelistamisfunktsioon ESPNOW andmete vastuvõtmiseks
-
tühine cb (const uint8_t *mac_addr, const uint8_t *andmed, int data_len)
-
mac_addr:
vastuvõtja mac aadress
-
*andmed:
andmeid vastu võtta
-
data_len
andmebaidi pikkus
-
-
Kirjeldus:
Pärast ESPNOW andmete saamist helistage funktsioonile cb
4. samm: ESP-NOW FUNKTSIOONID (ESP8266)
FUNKTSIOONIDE KIRJELDUS ESP32 ESP8266
int esp_now_init (tühine)
Tagastab:
- 1 = edu
- 0 = ebaõnnestumine
Kirjeldus
ESPNOW funktsiooni initsialiseerimine
int esp_now_set_self_role (roll u8)
Parameetrid:
- ESP_NOW_ROLE_IDLE: andmete edastamine pole lubatud.
- ESP_NOW_ROLE_CONTROLLER: prioriteet on Sationi liides
- ESP_NOW_ROLE_SLAVE: eelistatakse SoftAP -liidest
- ESP_NOW_ROLE_COMBO: prioriteet on SoftAPinterface
Kirjeldus
Määrab seadme rolli
int esp_now_register_send_cb (cb)
Tagastab:
- 1 = edu
- 0 = ebaõnnestumine
Parameetrid:
-
cb: tagasihelistamisfunktsiooni nimi pärast ESPNOW andmete saatmist järgmiste parameetritega:
-
tühine cb (const uint8_t *mac_addr, esp_now_send_status_t olek)
- mac_addr: vastuvõtja mac -aadress
-
staatus:
- 1 = edu
- 0 = ebaõnnestumine
-
Kirjeldus
Pärast ESPNOW andmete saatmist helistage funktsioonile OnDataSent
int esp_now_add_peer (u8 *mac_addr, u8 roll, u8 kanal, u8 *võti, u8 key_len)
Tagastab:
- 1 = edu
- 0 = ebaõnnestumine
Parameetrid:
-
mac_addr
eakaaslase mac -aadress
- rolli
-
kanal
Kui väärtus on 0, kasutage praegust kanalit, mis jaam või diivan on sisse lülitatud. Vastasel juhul tuleb see seadistada kanaliks, millel jaam või diivan on sisse lülitatud
-
*võti
võti krüptimiseks
-
key_len
võtme pikkus
Kirjeldus:
Lisage kaaslaste nimekirja eakaaslane
int esp_now_send (const uint8_t *peer_addr, const uint8_t *andmed, size_t len)
Tagastab:
- 1 = edu
- 0 = ebaõnnestus
Parameetrid:
- peer_addr: peer MAC -aadress
- andmed: andmed, mida saata
- len: andmete pikkus
Kirjeldus:
ESPNOW andmete saatmine. Mõnel juhul juhtub see:
- Kui peer_addr ei ole NULL, saatke andmed samaealisele, kelle MAC -aadress vastab peer_addr
- Kui peer_addr on NULL, saatke andmed kõigile eakaaslaste loendisse lisatud eakaaslastele
- Andmete maksimaalne pikkus peab olema väiksem kui ESP_NOW_MAX_DATA_LEN
- Puhver, millele viitab andmete argument, ei pea pärast esp_now_send tagastamist kehtima
int esp_now_register_recv_cb (cb)
Tagastab:
- 1 = edu
- 0 = ebaõnnestus
Parameetrid:
-
cb: tagasihelistamisfunktsioon ESPNOW andmete vastuvõtmiseks
-
tühine cb (const uint8_t *mac_addr, const uint8_t *andmed, int data_len)
-
mac_addr:
vastuvõtja mac aadress
-
*andmed:
andmeid vastu võtta
-
data_len
andmebaidi pikkus
-
-
Kirjeldus:
Pärast ESPNOW andmete saamist helistage funktsioonile cb
Samm: ühesuunaline suhtlus (saatjana ESP32)
ESP32 saadab andmed seadmesse ESP8266. selle koodiga. Muutke broadcastAddress oma vastava vastuvõtja mac -aadressiks. Minu oma oli A4: CF: 12: C7: 9C: 77
// Lisage vajalikud teegid
#include // Esp kohe funktsioonidele juurdepääsemiseks #include // Wifi -võimaluste lisamiseks ESP32 -le // salvestage MAC -aadress massiivi nimega broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // minu vastuvõtja MAC -aadress/*määratlevad mitmete muutujate andmetüübid, mis on struktureeritud ja ümbernimetatud kui struktureeritud_sõnum*/typedef struktuuri_sõnum {char a [32]; int b; ujuk c; String d; bool e; } structure_message; // Loo struktuuri_teade nimega myData struktuuri_teade myData; // funktsioon, mis kutsutakse välja andmete saatmisel selle oleku tühjendamiseks tühine OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nViimase paketi saatmise olek: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Edastamise õnnestumine": "Edastus ebaõnnestus"); } void setup () {// Seadke edastuskiirus jadaühenduseks ESP Serial.begin (115200); // Määra seade WiFi-jaamaks WiFi.mode (WIFI_STA); // Käivitab wifi // Init ESP-NOW ja tagastab oma oleku, kui (esp_now_init ()! = ESP_OK) {Serial.println ("Viga ESP-i lähtestamisel -NÜÜD "); tagasipöördumine; } // helistage funktsioonile OnDataSent pärast ESPNOW andmete saatmist esp_now_register_send_cb (OnDataSent); // registreeri peer esp_now_peer_info_t peerInfo; // initsialiseerida ja määrata vastastikune teave kursoriks aadressile memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopeerige broadcastAddressi väärtus 6 baidiga peerInfo.peer_addr peerInfo.channel = 0; // kanal, millel esp räägib. 0 tähendab määratlemata ja andmed saadetakse praegusel kanalil. 1-14 on kehtivad kanalid, mis on sama kohaliku seadmega peerInfo.encrypt = false; // pole krüpteeritud // Lisa seade seotud seadmete loendisse if (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Eakaaslase lisamine ebaõnnestus"); tagasipöördumine; }} void loop () {// Määra väärtused saatmiseks strcpy (myData.a, "THIS IS A CHAR"); // salvesta "THIS IS A CHAR" muutujale a minu varem määratletud "andmed" myData.b = juhuslik (1, 20); // salvesta juhuslik väärtus myData.c = 1.2; // salvesta ujuk myData.d = "Tere"; // salvestada string myData.e = false; // salvesta bool // Saada andmed ESP-NOW kaudu 250 baiti või vähem ja tagastab selle oleku esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Edukalt saadetud"); } else {Serial.println ("Viga andmete saatmisel"); } viivitus (2000); }
ESP8266 võtab selle koodi abil ESP32 -lt andmeid vastu.
// Lisage vajalikud teegid
#include // Wifi -võimaluste lisamiseks ESP32 -le #include // Esp now funktsioonidele juurdepääsemiseks /*määratlege mitmete muutujate andmetüübid, mis on struktureeritud ja ümbernimetatud kui struktuursed sõnumid* /typedef struktuursõnumid {char a [32]; int b; ujuk c; String d; bool e; } structure_message; // Loo muutuja struktuuri_teade nimega myData struktuuri_teade myData; // funktsioon kutsutakse välja andmete vastuvõtmisel ja prindib need tühjaks OnDataRecv (uint8_t * mac, uint8_t * sissetulevad andmed, uint8_t len) {memcpy (& myData, sissetulevad andmed, sizeof (myData)); Serial.print ("Vastuvõetud baidid:"); 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 () {// Seadke edastuskiirus jadaühenduseks ESP Serial.begin (115200); // Määra seade Wi-Fi jaamaks WiFi.mode (WIFI_STA); // Käivitab wifi // Init ESP-NOW ja tagastab oma oleku, kui (esp_now_init ()! = 0) {Serial.println ("Viga ESP-NOW initsialiseerimisel"); tagasipöördumine; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Määrab selle esp rolli esp_now_register_recv_cb (OnDataRecv); // helistage funktsioonile OnDataRecv pärast ESPNOW andmete saamist} void loop () {}
6. samm: ühesuunaline suhtlus (saatjana ESP8266)
ESP8266 saadab andmed ESP32 -le. selle koodiga. Muutke broadcastAddress oma vastava vastuvõtja mac -aadressiks. Minu esp32 aadress on 30: AE: A4: F5: 03: A4. Muud esp8266 funktsioonid leiate siit
// Lisage vajalikud teegid
#include // Wifi -võimaluste lisamine ESP32 -le #include // Esp -funktsioonidele juurdepääsemiseks // salvestage MAC -aadress massiivi nimega broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*määratlege mitmete muutujate andmetüübid, mis on struktureeritud ja ümbernimetatud kui struktuuri_sõnum*/ typedef struktuuri_tekst {char a [32]; int b; ujuk c; String d; bool e; } structure_message; // Loo struktureeritud muutuja nimega myData structure_message myData; // funktsiooni kutsutakse andmete saatmisel ja prindib nende oleku tühjaks OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nViimase paketi saatmise olek: / t"); Serial.println (sendStatus == 1? "Edastamise õnnestumine": "Tarne ebaõnnestus"); } void setup () {// Seadke edastuskiirus jadaühenduseks ESP Serial.begin (115200); // Määra seade WiFi-jaamaks WiFi.mode (WIFI_STA); // Käivitab wifi // Init ESP-NOW ja tagastab oma oleku, kui (esp_now_init ()) {Serial.println ("Viga ESP-NOW initsialiseerimisel"); tagasipöördumine; } esp_now_register_send_cb (OnDataSent); // helistage funktsioonile OnDataSent pärast ESPNOW andmete saatmist // Lisage seade seotud seadmete loendisse, kui (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Eakaaslase lisamine ebaõnnestus"); tagasipöördumine; }} void loop () {// Määra väärtused saatmiseks strcpy (myData.a, "THIS IS A CHAR"); // salvesta "THIS IS CHAR" muutujale a minu varem määratletud "andmed" myData.b = juhuslik (1, 20); // salvesta juhuslik väärtus myData.c = 1.2; // salvesta ujuk myData.d = "SP8266"; // salvestada string myData.e = false; // salvesta bool // Saada andmed ESP-NOW kaudu 250 baiti või vähem ja tagastab selle oleku int result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Edukalt saadetud"); } else {Serial.println ("Viga andmete saatmisel"); } viivitus (2000); }
ESP32 võtab andmeid vastu ESP8266 -lt. selle koodiga. Muude funktsioonide kohta vaata siit
// Lisage vajalikud teegid
#include // Esp nüüd funktsioonidele juurdepääsemiseks #include // Wifi -võimaluste lisamiseks ESP32 -le /*määratlege mitmete muutujate andmetüübid, mis on struktureeritud ja ümbernimetatud kui struktureeritud_sõnum* /typedef struktuuri_sõnum {char a [32]; int b; ujuk c; String d; bool e; } structure_message; // Loo muutuja struktuuri_teade nimega myData struktuuri_teade myData; // funktsioon kutsutakse välja andmete vastuvõtmisel ja prindib need tühjaks OnDataRecv (const uint8_t * mac, const uint8_t * sissetulevad andmed, int len) {memcpy (& myData, sissetulevad andmed, sizeof (myData)); Serial.print ("Vastuvõetud baidid:"); 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 () {// Seadke edastuskiirus jadaühenduseks ESP Serial.begin (115200); // Määra seade WiFi-jaamaks WiFi.mode (WIFI_STA); // Käivitab wifi // Init ESP-NOW ja tagastab oma oleku, kui (esp_now_init ()! = 0) {Serial.println ("Viga ESP-NOW initsialiseerimisel"); tagasipöördumine; } esp_now_register_recv_cb (OnDataRecv); // helistage funktsioonile OnDataRecv pärast ESPNOW andmete saamist} void loop () {}
7. samm: kahesuunaline side
ESP32 saadab käivitamisel andmed ESP8266 -le. ESP8266 prindib vastuvõetud sõnumi ja seejärel vastab sellele, millele ESP32 prindib oma seeriamonitorile.
ESP32 KOOD
// Lisage vajalikud teegid
#include // Esp kohe funktsioonidele juurdepääsemiseks #include // Wifi -võimaluste lisamiseks ESP32 -le // salvestage MAC -aadress massiivi nimega broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // minu vastuvõtja MAC -aadress/*määratlevad mitmete muutujate andmetüübid, mis on struktureeritud ja ümbernimetatud kui struktureeritud_sõnum*/typedef struktuuri_sõnum {char a [32]; int b; ujuk c; String d; bool e; } structure_message; // Loo struktuuri_teade nimega myData struktuuri_teade myData; // funktsioon, mis kutsutakse välja andmete saatmisel selle oleku tühjendamiseks tühine OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nViimase paketi saatmise olek: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Kohaletoimetamise õnnestumine": "Tarne ebaõnnestus"); if (olek! = ESP_NOW_SEND_SUCCESS) {send_data ();}} tühine OnDataRecv (const uint8_t * mac, const uint8_t * sissetulevad andmed, int len) {memcpy (& myData, sissetulevad andmed, sizeof (myData)); Serial.print ("Vastuvõetud baidid:"); 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 () {// Seadke edastuskiirus jadaühenduseks ESP Serial.begin (115200); // Seadistage WiFi-jaamaks WiFi.mode (WIFI_STA); // Käivitab wifi // Init ESP-NOW ja tagastab oma oleku, kui (esp_now_init ()! = ESP_OK) {Serial.println ("Viga ESP initsialiseerimisel -NÜÜD "); tagasipöördumine; } // helistage funktsioonile OnDataSent pärast ESPNOW andmete saatmist esp_now_register_send_cb (OnDataSent); // registreeri peer esp_now_peer_info_t peerInfo; // initsialiseerida ja määrata vastastikune teave kursoriks aadressile memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopeerige broadcastAddressi väärtus 6 baidiga peerInfo.peer_addr peerInfo.channel = 0; // kanal, millel esp räägib. 0 tähendab määratlemata ja andmed saadetakse praegusel kanalil.1-14 on kehtivad kanalid, mis on sama kohaliku seadmega peerInfo.encrypt = false; // pole krüpteeritud // Lisa seade seotud seadmete loendisse if (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Eakaaslase lisamine ebaõnnestus"); tagasipöördumine; } esp_now_register_recv_cb (OnDataRecv); // helistage funktsioonile OnDataRecv pärast ESPNOW andmete saamist send_data (); } void loop () {} void send_data () {Serial.println ("Saadan"); // Määra väärtused saatmiseks strcpy (myData.a, "THIS IS A CHAR"); // salvesta "THIS IS CHAR" muutujale a minu varem määratletud "andmed" myData.b = juhuslik (1, 20); // salvesta juhuslik väärtus myData.c = 1.2; // salvesta ujuk myData.d = "ESP32"; // salvestada string myData.e = false; // salvesta bool // Saada andmed ESP-NOW kaudu 250 baiti või vähem ja tagastab selle oleku esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Saadetud edukalt");} else {Serial.println ("Viga andmete saatmisel"); }}
ESP8266 KOOD
// Lisage vajalikud teegid
#include // Wifi -võimaluste lisamine ESP32 -le #include // Esp -funktsioonidele juurdepääsemiseks // salvestage MAC -aadress massiivi nimega broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*määratlege mitmete muutujate andmetüübid, mis on struktureeritud ja ümbernimetatud kui struktuuri_sõnum*/ typedef struktuuri_tekst {char a [32]; int b; ujuk c; String d; bool e; } structure_message; // Loo muutuja struktuuri_teade nimega myData struktuuri_teade myData; // funktsioon kutsutakse välja andmete vastuvõtmisel ja prindib need tühjaks OnDataRecv (uint8_t * mac, uint8_t * sissetulevad andmed, uint8_t len) {memcpy (& myData, sissetulevad andmed, sizeof (myData)); Serial.print ("Vastuvõetud baidid:"); 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 / nViimase paketi saatmise olek: / t"); Serial.println (sendStatus == 1? "Edastamise õnnestumine": "Tarne ebaõnnestus"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Määra väärtused saatmiseks strcpy (myData.a, "THIS IS A CHAR"); // salvesta "THIS IS CHAR" muutujale a minu varem määratletud "andmed" myData.b = juhuslik (1, 20); // salvesta juhuslik väärtus myData.c = 1.2; // salvesta ujuk myData.d = "ESP8266"; // salvestada string myData.e = false; // salvesta bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Seadke edastuskiirus jadaühenduseks ESP Serial.begin (115200); // Määra seade WiFi-jaamaks WiFi.mode (WIFI_STA); // Käivitab wifi // Init ESP-NOW ja tagastab oma oleku, kui (esp_now_init ()! = 0) {Serial.println ("Viga ESP-NOW initsialiseerimisel"); tagasipöördumine; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Eakaaslase lisamine ebaõnnestus"); tagasipöördumine; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Määrab selle esp rolli esp_now_register_recv_cb (OnDataRecv); // helistage funktsioonile OnDataRecv pärast ESPNOW andmete saamist} void loop () {}
8. samm: viited
ESPNOW_32_Näide
ESPNOW_8266 Näide
WIFI.h
ESP8266WiFi.h
esp_now.h ESP8266 jaoks
esp_now.h ESP32 jaoks
esp_now ametlik dokument (funktsioonide parem selgitus)
ESP-NOW ametlik juhend
Soovitan:
Mitu BMP280 andurit Arduino Unos SPI kaudu: 6 sammu
Mitu BMP280 andurit Arduino Unos SPI kaudu: Selles õpetuses ühendame SPI kaudu kolm Arduino Uno BMP280 -d, kuid võite ühendada Uno -ga kuni kaheksa BMP280, kasutades iga anduri jaoks digitaalseid porte D3 kuni D10 nSS (Slave Select). atmosfäärirõhu proovidest, mida mõõdetakse B
Kuidas teha mobiilse kaugjuhtimisega autot Bluetoothi kaudu: 4 sammu
Kuidas teha mobiilse kaugjuhtimisega autot Bluetoothi kaudu: kuidas teha mobiilse kaugjuhtimisega autot Bluetoothi kaudu | India LifeHacker
ESP32 CAM -i kasutamise alustamine - Video voogesitus, kasutades ESP CAM -i Wifi kaudu - ESP32 turvakaamera projekt: 8 sammu
ESP32 CAM -i kasutamise alustamine | Video voogesitus, kasutades ESP CAM -i Wifi kaudu | ESP32 turvakaamera projekt: täna õpime, kuidas seda uut ESP32 CAM -plaati kasutada ja kuidas seda kodeerida ning kasutada turvakaamerana ja saada voogesitusvideot wifi kaudu
Kuidas teha IoT -seadet seadmete juhtimiseks ja ilma jälgimiseks, kasutades Esp8266: 5 sammu
Kuidas teha IoT-seadet seadmete juhtimiseks ja ilma jälgimiseks, kasutades Esp8266: asjade Internet (IoT) on füüsiliste seadmete (mida nimetatakse ka "ühendatud seadmeteks" ja "nutiseadmeteks"), hoonete, ja muud esemed, mis on integreeritud elektroonika, tarkvara, andurite, täiturmehhanismide ja
Kuidas teha vanavanemate kalendrit & Külalisteraamat (isegi kui te ei tea, kuidas külalisteraamatut teha): 8 sammu (piltidega)
Kuidas teha vanavanemate kalendrit & Külalisteraamat (isegi kui te ei tea, kuidas külalisteraamatut teha): see on väga ökonoomne (ja väga tänuväärne!) Puhkusekink vanavanematele. Ma tegin sel aastal 5 kalendrit hinnaga vähem kui 7 dollarit. Materjalid: 12 suurepärast fotot teie lapsest, lastest, õetütardest, vennapoegadest, koertest, kassidest või muudest sugulastest12 erinevat tükki