Taula de continguts:
- Subministraments
- Pas 1: Obteniu l'adreça Mac de la junta
- Pas 2: Com fer funcionar ESP-NOW
- Pas 3: FUNCIONS ESP-NOW (ESP32)
- Pas 4: FUNCIONS ESP-NOW (ESP8266)
- Pas 5: comunicació unidireccional (ESP32 com a remitent)
- Pas 6: comunicació unidireccional (ESP8266 com a remitent)
- Pas 7: COMUNICACIÓ DE DOS CAMINS
- Pas 8: REFERÈNCIES
Vídeo: Com fer diverses converses ESP mitjançant ESP-NOW mitjançant ESP32 i ESP8266: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
En el meu projecte en curs, necessito diversos ESP per parlar entre ells sense enrutador. Per fer-ho, utilitzaré l’ESP-NOW per fer que la comunicació sense fils entre si no tingui un encaminador a l’ESP.
Subministraments
Coses que he utilitzat:
Mòdul ESP32 DEV
NODEMCU 1.0 (mòdul ESP12E)
Pas 1: Obteniu l'adreça Mac de la junta
Mitjançant ESP-now, els dispositius ESP parlen entre si enviant dades a la seva adreça única mentre es connecten a una xarxa de punts d’accés intern feta en incorporar ara l’esp.. Per tant, determineu l’adreça MAC de cada dispositiu. Adjunta la configuració de la meva placa ESP32 i ESP8266
PER ESP32
#include "WiFi.h" // Per accedir a les funcions WIFI ESP32
configuració nul·la () {Serial.begin (115200); Serial.print ("Adreça MAC de la placa ESP32:"); Serial.println (WiFi.macAddress ()); // imprimeix la seva adreça MAC} bucle buit () {}
PER ESP8266
#include // Biblioteca utilitzada per accedir a les funcions WIFI ESP8266
configuració nul·la () {Serial.begin (115200); Serial.println (); Serial.print ("Adreça MAC de la placa ESP8266:"); Serial.println (WiFi.macAddress ()); // imprimeix la seva adreça MAC} bucle buit () {}
La meva ADREÇA MAC és:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Pas 2: Com fer funcionar ESP-NOW
Aquí teniu una visió general de com fer-ho funcionar:
- Inclou esp ara i biblioteques wifi
- Deseu l'adreça mac del destinatari ESP
- Definiu l'estructura de dades del missatge enviat / rebut
- A la configuració, configureu el wifi al mode d’estació
- Inicialitzeu esp_now
- fer i registrar la funció de trucada després de l'enviament i la recepció de dades
- Per a Esp8266, definiu el seu paper
- registre del parell o destinatari esp
- Enviar dades
Pas 3: FUNCIONS ESP-NOW (ESP32)
esp_now_init (buit)
Retorn:
- ESP_OK: té èxit
- ESP_ERR_ESPNOW_INTERNAL: error intern
Descripció:
Inicialitzeu la funció ESPNOW
esp_now_register_send_cb (cb)
Devolucions:
- ESP_OK: té èxit
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW no està inicialitzat
- ESP_ERR_ESPNOW_INTERNAL: error intern
Paràmetres:
-
cb: nom de la funció de devolució de trucada després d'enviar dades ESPNOW amb aquests paràmetres:
-
void cb (const uint8_t * mac_addr, estat esp_now_send_status_t)
- mac_addr: adreça mac del receptor
-
estat:
- 1 = èxit
- 0 = falla
-
Descripció:
Truqueu a la funció OnDataSent després d’enviar dades ESPNOW
esp_now_add_peerconst esp_now_peer_info_t * parell)
Devolucions:
- ESP_OK: té èxit
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW no està inicialitzat
- ESP_ERR_ESPNOW_ARG: argument no vàlid
- ESP_ERR_ESPNOW_FULL: la llista d’iguals està plena
- ESP_ERR_ESPNOW_NO_MEM: sense memòria
- ESP_ERR_ESPNOW_EXIST: el pare ha existit
Paràmetres:
-
peer: informació entre iguals amb les dades següents:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; Adreça MAC paritària ESPNOW que també és l'adreça MAC de l'estació o del softap
-
uint8_t lmk [ESP_NOW_KEY_LEN]
Clau mestra local paritària ESPNOW que s’utilitza per xifrar dades
-
canal uint8_t
Canal Wi-Fi que el parell utilitza per enviar / rebre dades ESPNOW. Si el valor és 0, utilitzeu el canal actual en què està activada l'estació o el softap. En cas contrari, s’ha d’establir com el canal en què s’utilitza l’estació o el softap
-
wifi_interface_t ifidx
Interfície Wi-Fi que el parell utilitza per enviar / rebre dades ESPNOW
-
xifrar bool
Les dades ESPNOW que envia / rep aquest parell estan encriptades o no
-
buit * priv
Dades privades d’equips d’ESPNOW
-
Descripció:
Afegiu un parell a la llista d'iguals
esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Devolucions:
- ESP_OK: té èxit
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW no està inicialitzat
- ESP_ERR_ESPNOW_ARG: argument no vàlid
- ESP_ERR_ESPNOW_INTERNAL: error intern
- ESP_ERR_ESPNOW_NO_MEM: sense memòria
- ESP_ERR_ESPNOW_NOT_FOUND: no s'ha trobat el parell
- ESP_ERR_ESPNOW_IF: la interfície WiFi actual no coincideix amb la del parell
Paràmetres:
- peer_addr: adreça MAC igual
- dades: dades per enviar
- len: longitud de les dades
Descripció:
Envia dades ESPNOW. En alguns casos, això passa:
- Si peer_addr no és NULL, envieu dades al parell l'adreça MAC del qual coincideixi amb peer_addr
- Si peer_addr és NULL, envieu les dades a tots els parells que s’afegeixen a la llista de parells
- La longitud màxima de les dades ha de ser inferior a ESP_NOW_MAX_DATA_LEN
- El buffer assenyalat per l'argument de dades no ha de ser vàlid després de tornar esp_now_send
esp_now_register_recv_cb (cb)
Devolucions:
- ESP_OK: té èxit
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW no està inicialitzat
- ESP_ERR_ESPNOW_INTERNAL: error intern
Paràmetres:
-
cb: funció de devolució de trucada per rebre dades ESPNOW
-
void cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
adreça mac del receptor
-
* dades:
dades rebudes
-
data_len
longitud de byte de dades
-
-
Descripció:
Truqueu a la funció cb després de rebre dades ESPNOW
Pas 4: FUNCIONS ESP-NOW (ESP8266)
FUNCIONS DESCRIPCIÓ ESP32 ESP8266
int esp_now_init (buit)
Devolucions:
- 1 = èxit
- 0 = falla
Descripció
Inicialitzeu la funció ESPNOW
int esp_now_set_self_role (rol u8)
Paràmetres:
- ESP_NOW_ROLE_IDLE: no es permet la transmissió de dades.
- ESP_NOW_ROLE_CONTROLLER: es dóna prioritat a la interfície Sation
- ESP_NOW_ROLE_SLAVE: es dóna prioritat a la interfície SoftAP
- ESP_NOW_ROLE_COMBO: es dóna prioritat a la interfície SoftAP
Descripció
Estableix la funció del dispositiu
int esp_now_register_send_cb (cb)
Devolucions:
- 1 = èxit
- 0 = falla
Paràmetres:
-
cb: nom de la funció de devolució de trucada després d'enviar dades ESPNOW amb aquests paràmetres:
-
void cb (const uint8_t * mac_addr, estat esp_now_send_status_t)
- mac_addr: adreça mac del receptor
-
estat:
- 1 = èxit
- 0 = falla
-
Descripció
Truqueu a la funció OnDataSent després d’enviar dades ESPNOW
int esp_now_add_peer (u8 * mac_addr, rol u8, canal u8, tecla u8 *, tecla u8_len)
Devolucions:
- 1 = èxit
- 0 = falla
Paràmetres:
-
mac_addr
adreça mac del parell
- paper
-
canal
Si el valor és 0, utilitzeu el canal actual en què està activada l'estació o el softap. En cas contrari, s’ha d’establir com el canal en què s’utilitza l’estació o el softap
-
* clau
clau per al xifratge
-
clau_len
longitud de la clau
Descripció:
Afegiu un parell a la llista d'iguals
int esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Devolucions:
- 1 = Èxit
- 0 = Error
Paràmetres:
- peer_addr: adreça MAC igual
- dades: dades per enviar
- len: longitud de les dades
Descripció:
Envia dades ESPNOW. En alguns casos, això passa:
- Si peer_addr no és NULL, envieu dades al parell l'adreça MAC del qual coincideixi amb peer_addr
- Si peer_addr és NULL, envieu les dades a tots els parells que s’afegeixen a la llista de parells
- La longitud màxima de les dades ha de ser inferior a ESP_NOW_MAX_DATA_LEN
- El buffer assenyalat per l'argument de dades no ha de ser vàlid després de tornar esp_now_send
int esp_now_register_recv_cb (cb)
Devolucions:
- 1 = Èxit
- 0 = Error
Paràmetres:
-
cb: funció de devolució de trucada per rebre dades ESPNOW
-
void cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
adreça mac del receptor
-
* dades:
dades rebudes
-
data_len
longitud de byte de dades
-
-
Descripció:
Truqueu a la funció cb després de rebre dades ESPNOW
Pas 5: comunicació unidireccional (ESP32 com a remitent)
L'ESP32 envia dades a un ESP8266. amb aquest codi. Canvieu broadcastAddress a la vostra adreça mac del receptor corresponent. El meu era A4: CF: 12: C7: 9C: 77
// Afegiu les biblioteques necessàries
#include // Per accedir a les funcions esp ara #include // Per afegir funcions Wifi a ESP32 // deseu l'adreça MAC en una matriu anomenada broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // L'adreça MAC del meu receptor / * defineix els tipus de dades de les múltiples variables estructurades i les renomina totes com struct_message * / typedef struct struct_message {char a [32]; int b; flotador c; Cadena d; bool e; } missatge_estructura; // Crea un missatge struct_message anomenat myData struct_message myData; // funció anomenada quan s’envien dades per imprimir el seu estat buit OnDataSent (const uint8_t * mac_addr, estat esp_now_send_status_t) {Serial.print ("\ r / nDarrer estat d’enviament de paquets: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Error de lliurament"); } void setup () {// Estableix la velocitat de transmissió per a la comunicació en sèrie amb ESP Serial.begin (115200); // Estableix el dispositiu com a estació Wi-Fi WiFi.mode (WIFI_STA); // Inicia el wifi // Inicia ESP-NOW i retorna el seu estat si (esp_now_init ()! = ESP_OK) {Serial.println ("Error inicialitzant ESP -ARA "); tornar; } // truqueu a la funció OnDataSent després d’enviar dades ESPNOW esp_now_register_send_cb (OnDataSent); // Registre peer esp_now_peer_info_t peerInfo; // inicialitzeu i assigneu la informació del parell com a punter a un memcpy addicional (peerInfo.peer_addr, broadcastAddress, 6); // copieu el valor de broadcastAddress amb 6 bytes a peerInfo.peer_addr peerInfo.channel = 0; // canal on es parla l'esp. 0 significa indefinit i s'enviaran dades al canal actual. 1-14 són canals vàlids que és el mateix amb el dispositiu local peerInfo.encrypt = false; // no xifrat // Afegiu el dispositiu a la llista de dispositius aparellats si (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("No s'ha pogut afegir el parell"); tornar; }} void loop () {// Estableix els valors per enviar strcpy (myData.a, "AIX IS ÉS UN CHAR"); // deseu "AIX IS ÉS UN CHAR" a la variable a de les meves "dades" definides anteriorment myData.b = random (1, 20); // desa un valor aleatori myData.c = 1,2; // save a float myData.d = "Hola"; // desa una cadena myData.e = false; // deseu un bool // Envieu dades de 250 bytes inferiors o iguals mitjançant ESP-NOW i retorna el seu estat esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Enviat amb èxit"); } else {Serial.println ("Error en enviar les dades"); } demora (2000); }
L'ESP8266 rep dades de l'ESP32 mitjançant aquest codi.
// Afegiu les biblioteques necessàries
#include // Per afegir funcions Wifi a ESP32 #include // Per accedir a les funcions esp ara / * definiu els tipus de dades de les múltiples variables estructurades i canvieu-les amb el nom de struct_message * / typedef struct struct_message {char a [32]; int b; flotador c; Cadena d; bool e; } missatge_estructura; // Creeu una variable struct_message anomenada myData struct_message myData; // Funció cridada quan es reben les dades i les imprimeix buides OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes rebuts:"); 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 ("Cadena:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Estableix la velocitat de transmissió per a la comunicació en sèrie amb ESP Serial.begin (115200); // Estableix el dispositiu com a estació Wi-Fi WiFi.mode (WIFI_STA); // Inicia el wifi // Inicia ESP-NOW i retorna el seu estat if (esp_now_init ()! = 0) {Serial.println ("Error inicialitzant ESP-NOW"); tornar; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Defineix el paper d'aquest esp esp_now_register_recv_cb (OnDataRecv); // trucar a la funció OnDataRecv després de rebre dades ESPNOW} void loop () {}
Pas 6: comunicació unidireccional (ESP8266 com a remitent)
L'ESP8266 envia dades a un ESP32. amb aquest codi. Canvieu broadcastAddress a la vostra adreça mac del receptor corresponent. La meva adreça esp32 és 30: AE: A4: F5: 03: A4. Per a altres funcions per a esp8266, aneu aquí
// Afegiu les biblioteques necessàries
#include // Per afegir funcions Wifi a ESP32 #include // Per accedir a les funcions esp ara // deseu l'adreça MAC en una matriu anomenada broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * defineix els tipus de dades de les múltiples variables estructurades i canvia el nom de totes com struct_message * / typedef struct struct_message {char a [32]; int b; flotador c; Cadena d; bool e; } missatge_estructura; // Creeu una variable estructurada anomenada myData struct_message myData; // funció anomenada quan s'envien dades i s'imprimeix el seu estat buit OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nDarrer estat d'enviament de paquets: / t"); Serial.println (sendStatus == 1? "Delivery Success": "Error de lliurament"); } void setup () {// Estableix la velocitat de transmissió per a la comunicació en sèrie amb ESP Serial.begin (115200); // Estableix el dispositiu com a estació Wi-Fi WiFi.mode (WIFI_STA); // Inicia el wifi // Inicia ESP-NOW i torna el seu estat si (esp_now_init ()) {Serial.println ("Error inicialitzant ESP-NOW"); tornar; } esp_now_register_send_cb (OnDataSent); // truqueu la funció OnDataSent després d'enviar dades ESPNOW // Afegiu el dispositiu a la llista de dispositius aparellats si (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("No s'ha pogut afegir el parell"); tornar; }} void loop () {// Estableix els valors per enviar strcpy (myData.a, "AIX IS ÉS UN CHAR"); // deseu "AIX IS ÉS UN CHAR" a la variable a de les meves "dades" definides anteriorment myData.b = random (1, 20); // desa un valor aleatori myData.c = 1,2; // desa un float myData.d = "SP8266"; // desa una cadena myData.e = false; // deseu un bool // Envieu dades de 250 bytes inferiors o iguals mitjançant ESP-NOW i retorna el seu estat int result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Enviat amb èxit"); } else {Serial.println ("Error en enviar les dades"); } demora (2000); }
L'ESP32 rep dades d'un ESP8266. amb aquest codi. Per a altres funcions, referiu-vos aquí
// Afegiu les biblioteques necessàries
#include // Per accedir a les funcions esp ara #include // Per afegir funcions de Wifi a ESP32 / * definiu els tipus de dades de les múltiples variables estructurades i canvieu-les amb el nom de struct_message * / typedef struct struct_message {char a [32]; int b; flotador c; Cadena d; bool e; } missatge_estructura; // Creeu una variable struct_message anomenada myData struct_message myData; // funció anomenada quan es reben les dades i les imprimeix buides OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes rebuts:"); 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 ("Cadena:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Estableix la velocitat de transmissió per a la comunicació en sèrie amb ESP Serial.begin (115200); // Estableix el dispositiu com a estació Wi-Fi WiFi.mode (WIFI_STA); // Inicia el wifi // Inicia ESP-NOW i retorna el seu estat if (esp_now_init ()! = 0) {Serial.println ("Error inicialitzant ESP-NOW"); tornar; } esp_now_register_recv_cb (OnDataRecv); // trucar a la funció OnDataRecv després de rebre dades ESPNOW} void loop () {}
Pas 7: COMUNICACIÓ DE DOS CAMINS
L'ESP32 envia dades a l'inici a l'ESP8266. L'ESP8266 imprimeix el missatge rebut i, a continuació, les respostes de les quals l'ESP32 imprimeix al seu monitor sèrie.
CODI ESP32
// Afegiu les biblioteques necessàries
#include // Per accedir a les funcions esp ara #include // Per afegir funcions Wifi a ESP32 // deseu l'adreça MAC en una matriu anomenada broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // L'adreça MAC del meu receptor / * defineix els tipus de dades de les múltiples variables estructurades i les renomina totes com struct_message * / typedef struct struct_message {char a [32]; int b; flotador c; Cadena d; bool e; } missatge_estructura; // Crea un missatge struct_message anomenat myData struct_message myData; // funció anomenada quan s’envien dades per imprimir el seu estat buit OnDataSent (const uint8_t * mac_addr, estat esp_now_send_status_t) {Serial.print ("\ r / nDarrer estat d’enviament de paquets: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Error de lliurament"); 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 ("Bytes rebuts:"); 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 ("Cadena:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } void setup () {// Estableix la velocitat de transmissió per a la comunicació en sèrie amb ESP Serial.begin (115200); // Estableix el dispositiu com a estació Wi-Fi WiFi.mode (WIFI_STA); // Inicia el wifi // Inicia ESP-NOW i retorna el seu estat si (esp_now_init ()! = ESP_OK) {Serial.println ("Error inicialitzant ESP -ARA "); tornar; } // truqueu a la funció OnDataSent després d’enviar dades ESPNOW esp_now_register_send_cb (OnDataSent); // Registre peer esp_now_peer_info_t peerInfo; // inicialitzeu i assigneu la informació del parell com a punter a un memcpy addicional (peerInfo.peer_addr, broadcastAddress, 6); // copieu el valor de broadcastAddress amb 6 bytes a peerInfo.peer_addr peerInfo.channel = 0; // canal on es parla l'esp. 0 significa indefinit i s'enviaran dades al canal actual.1-14 són canals vàlids que és el mateix amb el dispositiu local peerInfo.encrypt = false; // no xifrat // Afegiu el dispositiu a la llista de dispositius aparellats si (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("No s'ha pogut afegir el parell"); tornar; } esp_now_register_recv_cb (OnDataRecv); // truqueu a la funció OnDataRecv després de rebre dades ESPNOW send_data (); } void loop () {} void send_data () {Serial.println ("Sending"); // Estableix els valors per enviar strcpy (myData.a, "AIX IS ÉS UN CHAR"); // deseu "AIX IS ÉS UN CHAR" a la variable a de les meves "dades" definides anteriorment myData.b = random (1, 20); // desa un valor aleatori myData.c = 1,2; // desa un float myData.d = "ESP32"; // desa una cadena myData.e = false; // deseu un bool // Envieu dades de 250 bytes inferiors o iguals mitjançant ESP-NOW i retorna el seu estat esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Enviat amb èxit");} else {Serial.println ("Error en enviar les dades"); }}
CODI ESP8266
// Afegiu les biblioteques necessàries
#include // Per afegir funcions Wifi a ESP32 #include // Per accedir a les funcions esp ara // deseu l'adreça MAC en una matriu anomenada broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * defineix els tipus de dades de les múltiples variables estructurades i canvia el nom de totes com struct_message * / typedef struct struct_message {char a [32]; int b; flotador c; Cadena d; bool e; } missatge_estructura; // Creeu una variable struct_message anomenada myData struct_message myData; // Funció cridada quan es reben les dades i les imprimeix buides OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes rebuts:"); 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 ("Cadena:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); enviar_dades (); } void OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nDarrer estat d'enviament de paquets: / t"); Serial.println (sendStatus == 1? "Delivery Success": "Error de lliurament"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Estableix els valors per enviar strcpy (myData.a, "AIX IS ÉS UN CHAR"); // deseu "AIX IS ÉS UN CHAR" a la variable a de les meves "dades" definides anteriorment myData.b = random (1, 20); // desa un valor aleatori myData.c = 1,2; // desa un float myData.d = "ESP8266"; // desa una cadena myData.e = false; // desa un bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Estableix la velocitat de transmissió per a la comunicació en sèrie amb ESP Serial.begin (115200); // Estableix el dispositiu com a estació Wi-Fi WiFi.mode (WIFI_STA); // Inicia el wifi // Inicia ESP-NOW i retorna el seu estat if (esp_now_init ()! = 0) {Serial.println ("Error inicialitzant ESP-NOW"); tornar; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("No s'ha pogut afegir el parell"); tornar; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Defineix el paper d'aquest esp esp_now_register_recv_cb (OnDataRecv); // trucar a la funció OnDataRecv després de rebre dades ESPNOW} void loop () {}
Pas 8: REFERÈNCIES
ESPNOW_32_Exemple
ESPNOW_8266 Exemple
WIFI.h
ESP8266WiFi.h
esp_now.h per ESP8266
esp_now.h per ESP32
document oficial esp_now (Millor explicació de les funcions)
Guia oficial ESP-NOW
Recomanat:
Elimineu el fons de diverses imatges mitjançant Photoshop 2020: 5 passos
Eliminar el fons de diverses imatges mitjançant Photoshop 2020: ara és molt fàcil eliminar el fons d’una imatge. Així s’utilitza l’Adobe Photoshop 2020 per eliminar el fons de diverses imatges (per lots) mitjançant un simple script
Com programar el descodificador IR per al control de motors de corrent altern a diverses velocitats: 7 passos
Com programar el descodificador IR per al control de motors de corrent altern múltiples: els motors de corrent altern monofàsics es troben normalment en articles per a la llar, com ara els ventiladors, i la seva velocitat es pot controlar fàcilment quan s’utilitzen diversos bobinatges discrets per a velocitats establertes. En aquest instructiu construïm un controlador digital que
Introducció a ESP32 CAM - Reproducció de vídeo mitjançant ESP CAM mitjançant Wifi - Projecte de càmera de seguretat ESP32: 8 passos
Introducció a ESP32 CAM | Reproducció de vídeo mitjançant ESP CAM a través de Wifi | Projecte de càmera de seguretat ESP32: Avui aprendrem a utilitzar aquesta nova placa ESP32 CAM i com podem codificar-la i utilitzar-la com a càmera de seguretat i obtenir un vídeo en streaming per wifi
Àudio de diverses habitacions de bricolatge: 15 passos
Àudio de diverses habitacions de bricolatge: Ei! tothom Em dic Steve.Avui us mostraré com fer un reproductor d'àudio Wifi amb molt menys parts i és millor que l'àudio de fosa cromada, podeu utilitzar-lo com a configuració de diverses habitacions i es pot connectar fins a 10 altaveus Feu clic aquí per veure
Les maneres més senzilles d'imprimir converses de missatges de text o missatges instantanis des d'iPhone: 3 passos
Les maneres més senzilles d'imprimir converses de missatges de text o missatges d'iPhone des de l'iPhone: Hola a tothom, en aquest instructiu us mostraré les maneres més senzilles d'imprimir missatges de text des del vostre iPhone. no ve per carta, ni tan sols per correu electrònic, sinó a través de tex