Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Hent Board Mac -adressen
- Trin 2: Sådan får du ESP-NU til at fungere
- Trin 3: ESP-NU-FUNKTIONER (ESP32)
- Trin 4: ESP-NU-FUNKTIONER (ESP8266)
- Trin 5: Envejskommunikation (ESP32 som afsender)
- Trin 6: Envejskommunikation (ESP8266 som afsender)
- Trin 7: COMMUNICATION på to måder
- Trin 8: REFERENCER
![Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin](https://i.howwhatproduce.com/images/007/image-19714-j.webp)
Video: Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin
![Video: Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin Video: Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin](https://i.ytimg.com/vi/y8X9X10Tn1k/hqdefault.jpg)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
![Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266 Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266](https://i.howwhatproduce.com/images/007/image-19714-1-j.webp)
På mit igangværende projekt har jeg brug for flere ESP for at tale med hinanden uden en router. For at gøre dette vil jeg bruge ESP-NU til at få trådløs kommunikation med hinanden uden en router på ESP.
Forbrugsvarer
Ting jeg brugte:
ESP32 DEV -modul
NODEMCU 1.0 (ESP12E -modul)
Trin 1: Hent Board Mac -adressen
![Få Board Mac -adressen Få Board Mac -adressen](https://i.howwhatproduce.com/images/007/image-19714-2-j.webp)
![Hent Board Mac -adressen Hent Board Mac -adressen](https://i.howwhatproduce.com/images/007/image-19714-3-j.webp)
Gennem ESP-nu taler ESP-enheder til hinanden ved at sende data til deres unikke adresse, mens de er forbundet til et internt adgangspunktnetværk, der er oprettet ved intilaisering af esp nu.. Bestem således MAC -adressen for hver enhed. Vedhæftet er mine ESP32- og ESP8266 -kortindstillinger
TIL ESP32
#include "WiFi.h" // For at få adgang til ESP32 WIFI -funktioner
ugyldig opsætning () {Serial.begin (115200); Serial.print ("ESP32 Board MAC -adresse:"); Serial.println (WiFi.macAddress ()); // udskriver sin MAC -adresse} hulrum () {}
TIL ESP8266
#include // Bibliotek bruges til at få adgang til ESP8266 WIFI -funktioner
ugyldig opsætning () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Board MAC -adresse:"); Serial.println (WiFi.macAddress ()); // udskriver sin MAC -adresse} hulrum () {}
Min MAC ADRESSE er:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Trin 2: Sådan får du ESP-NU til at fungere
Her er en oversigt over, hvordan du får det til at fungere:
- Inkluder esp nu og wifi -biblioteker
- Gem mac -adressen til modtagerens ESP
- Definer datastrukturen for beskeden send/modtaget
- På opsætningen skal du indstille wifi til stationstilstand
- Initialiser esp_now
- foretage og registrere tilbagekaldsfunktionen, der kaldes efter afsendelse og modtagelse af data
- Definer dens rolle for Esp8266
- registrer kammeraten eller modtageren, f.eks
- Send data
Trin 3: ESP-NU-FUNKTIONER (ESP32)
esp_now_init (ugyldig)
Vend tilbage:
- ESP_OK: lykkedes
- ESP_ERR_ESPNOW_INTERNAL: Intern fejl
Beskrivelse:
Initialiser ESPNOW -funktionen
esp_now_register_send_cb (cb)
Vender tilbage:
- ESP_OK: lykkedes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
- ESP_ERR_ESPNOW_INTERNAL: intern fejl
Parametre:
-
cb: opkaldsfunktionsnavn efter afsendelse af ESPNOW -data med disse parametre:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: modtagerens mac -adresse
-
status:
- 1 = succes
- 0 = mislykkes
-
Beskrivelse:
Kald funktionen OnDataSent efter afsendelse af ESPNOW -data
esp_now_add_peerconst esp_now_peer_info_t *peer)
Vender tilbage:
- ESP_OK: lykkedes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
- ESP_ERR_ESPNOW_ARG: ugyldigt argument
- ESP_ERR_ESPNOW_FULL: Peer -listen er fuld
- ESP_ERR_ESPNOW_NO_MEM: tom for hukommelse
- ESP_ERR_ESPNOW_EXIST: peer har eksisteret
Parametre:
-
peer: peer information med følgende data:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW peer MAC -adresse, der også er MAC -adressen på stationen eller softap
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW peer lokal hovednøgle, der bruges til at kryptere data
-
uint8_t kanal
Wi-Fi-kanal, som peer bruger til at sende/modtage ESPNOW-data. Hvis værdien er 0, skal du bruge den aktuelle kanal, som stationen eller softap'en er på. Ellers skal den indstilles som den kanal, stationen eller softap er på
-
wifi_interface_t ifidx
Wi-Fi-interface, som peer bruger til at sende/modtage ESPNOW-data
-
bool kryptere
ESPNOW -data, som denne peer sender/modtager, er krypteret eller ej
-
void *priv
ESPNOW peer private data
-
Beskrivelse:
Tilføj en peer to peer -liste
esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)
Vender tilbage:
- ESP_OK: lykkedes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
- ESP_ERR_ESPNOW_ARG: ugyldigt argument
- ESP_ERR_ESPNOW_INTERNAL: intern fejl
- ESP_ERR_ESPNOW_NO_MEM: tom for hukommelse
- ESP_ERR_ESPNOW_NOT_FOUND: peer findes ikke
- ESP_ERR_ESPNOW_IF: nuværende WiFi -grænseflade matcher ikke peer
Parametre:
- peer_addr: peer MAC -adresse
- data: data, der skal sendes
- len: længde af data
Beskrivelse:
Send ESPNOW -data. I nogle tilfælde sker dette:
- Hvis peer_addr ikke er NULL, skal du sende data til den peer, hvis MAC -adresse matcher peer_addr
- Hvis peer_addr er NULL, skal du sende data til alle de jævnaldrende, der føjes til peerlisten
- Den maksimale datalængde skal være mindre end ESP_NOW_MAX_DATA_LEN
- Bufferen, som dataargumentet peger på, behøver ikke at være gyldig efter esp_now_send returnerer
esp_now_register_recv_cb (cb)
Vender tilbage:
- ESP_OK: lykkedes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW initialiseres ikke
- ESP_ERR_ESPNOW_INTERNAL: intern fejl
Parametre:
- cb: tilbagekaldsfunktion til modtagelse af ESPNOW -data
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
modtagerens mac -adresse
-
*data:
data modtager
-
data_len
databyte længde
-
-
Beskrivelse:
Ring til funktionen cb efter modtagelse af ESPNOW -data
Trin 4: ESP-NU-FUNKTIONER (ESP8266)
FUNKTIONER BESKRIVELSE ESP32 ESP8266
int esp_now_init (ugyldig)
Vender tilbage:
- 1 = succes
- 0 = mislykkes
Beskrivelse
Initialiser ESPNOW -funktionen
int esp_now_set_self_role (u8 rolle)
Parametre:
- ESP_NOW_ROLE_IDLE: dataoverførsel er ikke tilladt.
- ESP_NOW_ROLE_CONTROLLER: Sation -grænsefladen prioriteres
- ESP_NOW_ROLE_SLAVE: SoftAP -interface får prioritet
- ESP_NOW_ROLE_COMBO: SoftAPinterface prioriteres
Beskrivelse
Indstiller enhedens rolle
int esp_now_register_send_cb (cb)
Vender tilbage:
- 1 = succes
- 0 = mislykkes
Parametre:
-
cb: opkaldsfunktionsnavn efter afsendelse af ESPNOW -data med disse parametre:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: modtagerens mac -adresse
-
status:
- 1 = succes
- 0 = mislykkes
-
Beskrivelse
Kald funktionen OnDataSent efter afsendelse af ESPNOW -data
int esp_now_add_peer (u8 *mac_addr, u8 rolle, u8 kanal, u8 *nøgle, u8 key_len)
Vender tilbage:
- 1 = succes
- 0 = mislykkes
Parametre:
-
mac_addr
mac -adresse til peer
- rolle
-
kanal
Hvis værdien er 0, skal du bruge den aktuelle kanal, som stationen eller softap'en er på. Ellers skal den indstilles som den kanal, stationen eller softap er på
-
*nøgle
nøgle til kryptering
-
key_len
nøglens længde
Beskrivelse:
Tilføj en peer to peer -liste
int esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)
Vender tilbage:
- 1 = Succes
- 0 = Fejl
Parametre:
- peer_addr: peer MAC -adresse
- data: data, der skal sendes
- len: længde af data
Beskrivelse:
Send ESPNOW -data. I nogle tilfælde sker dette:
- Hvis peer_addr ikke er NULL, skal du sende data til den peer, hvis MAC -adresse matcher peer_addr
- Hvis peer_addr er NULL, skal du sende data til alle de jævnaldrende, der føjes til peerlisten
- Den maksimale datalængde skal være mindre end ESP_NOW_MAX_DATA_LEN
- Bufferen, som dataargumentet peger på, behøver ikke at være gyldig efter esp_now_send returnerer
int esp_now_register_recv_cb (cb)
Vender tilbage:
- 1 = Succes
- 0 = Fejl
Parametre:
- cb: tilbagekaldsfunktion til modtagelse af ESPNOW -data
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
modtagerens mac -adresse
-
*data:
data modtager
-
data_len
databyte længde
-
-
Beskrivelse:
Ring til funktionen cb efter modtagelse af ESPNOW -data
Trin 5: Envejskommunikation (ESP32 som afsender)
ESP32 sender data til en ESP8266. med denne kode. Skift broadcastAddress til din korresponderende modtager -mac -adresse. Min var A4: CF: 12: C7: 9C: 77
// Tilføj nødvendige biblioteker
#include // For at få adgang til esp nu -funktionerne #include // For at tilføje Wifi -muligheder på ESP32 // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adresse på min modtager/*definer datatyperne for de flere variabler, der er struktureret og omdøbt det hele til struct_message*/typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en struct_message kaldet myData struct_message myData; // funktion kaldes, når data sendes for at udskrive dens status tomrum OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Levering succes": "Levering mislykkedes"); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Fejl ved initialisering af ESP -NU"); Vend tilbage; } // kalde funktionen OnDataSent efter afsendelse af ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informationen som en markør til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier værdien af broadcastAddress med 6 bytes til peerInfo.peer_addr peerInfo.channel = 0; // kanal, hvor esp taler. 0 betyder udefineret, og data vil blive sendt på den aktuelle kanal. 1-14 er gyldige kanaler, hvilket er det samme med den lokale enhed peerInfo.encrypt = false; // ikke krypteret // Føj enheden til listen over parrede enheder, hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; }} void loop () {// Indstil værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "Hej"; // gem en streng myData.e = false; // gem en bool // Send data mindre end eller lig med 250 bytes via ESP-NOW og returnerer dens status esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); hvis (resultat == ESP_OK) {Serial.println ("Sendt med succes"); } else {Serial.println ("Fejl ved afsendelse af dataene"); } forsinkelse (2000); }
ESP8266 modtager data fra ESP32 ved hjælp af denne kode.
// Tilføj nødvendige biblioteker
#include // For at tilføje Wifi -muligheder på ESP32 #include // For at få adgang til esp nu -funktionerne /*definer datatyperne for de strukturerede multiple variabler og omdøb det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en variabel struct_message kaldet myData struct_message myData; // funktion kaldes når dataene modtages og udskriver den ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = 0) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definerer rollen for denne esp esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data} void loop () {}
Trin 6: Envejskommunikation (ESP8266 som afsender)
ESP8266 sender data til en ESP32. med denne kode. Skift broadcastAddress til din korresponderende modtager -mac -adresse. Min esp32 -adresse er 30: AE: A4: F5: 03: A4. For andre funktioner til esp8266, gå her
// Tilføj nødvendige biblioteker
#include // For at tilføje Wifi -muligheder på ESP32 #include // For at få adgang til esp nu -funktionerne // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatyperne for de strukturerede multiple variabler og omdøbe det hele til struct_message*/ typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en struktureret variabel kaldet myData struct_message myData; // funktion kaldes, når data sendes, og udskriver dens status tomrum OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Leveringssucces": "Levering mislykkedes"); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } esp_now_register_send_cb (OnDataSent); // kalde funktionen OnDataSent efter afsendelse af ESPNOW -data // Føj enheden til listen over parrede enheder, hvis (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; }} void loop () {// Indstil værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "SP8266"; // gem en streng myData.e = false; // gem en bool // Send data mindre end eller lig med 250 bytes via ESP-NOW og returnerer dets status int resultat = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); hvis (esp_now_init ()! = 0) {Serial.println ("Sendt med succes"); } else {Serial.println ("Fejl ved afsendelse af data"); } forsinkelse (2000); }
ESP32 modtager data fra en ESP8266. med denne kode. For andre funktioner refere her
// Tilføj nødvendige biblioteker
#include // For at få adgang til esp nu -funktionerne #include // For at tilføje Wifi -muligheder på ESP32 /*definer datatyperne for de strukturerede flere variabler og omdøb det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en variabel struct_message kaldet myData struct_message myData; // funktion kaldes, når dataene modtages og udskriver den ugyldige OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = 0) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data} void loop () {}
Trin 7: COMMUNICATION på to måder
![TO MÅDE KOMMUNIKATION TO MÅDE KOMMUNIKATION](https://i.howwhatproduce.com/images/007/image-19714-4-j.webp)
![TO MÅDE KOMMUNIKATION TO MÅDE KOMMUNIKATION](https://i.howwhatproduce.com/images/007/image-19714-5-j.webp)
ESP32 sender data ved opstart til ESP8266. ESP8266 udskriver den modtagne meddelelse og svarer derefter, som ESP32 udskriver på sin serielle skærm.
ESP32 KODE
// Tilføj nødvendige biblioteker
#include // For at få adgang til esp nu -funktionerne #include // For at tilføje Wifi -muligheder på ESP32 // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adresse på min modtager/*definer datatyperne for de flere variabler, der er struktureret og omdøbt det hele til struct_message*/typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en struct_message kaldet myData struct_message myData; // funktion kaldes, når data sendes for at udskrive dens status tomrum OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Levering succes": "Levering mislykkedes"); hvis (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} ugyldig OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Fejl ved initialisering af ESP -NU"); Vend tilbage; } // kalde funktionen OnDataSent efter afsendelse af ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informationen som en markør til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier værdien af broadcastAddress med 6 bytes til peerInfo.peer_addr peerInfo.channel = 0; // kanal, hvor esp taler. 0 betyder udefineret, og data vil blive sendt på den aktuelle kanal.1-14 er gyldige kanaler, hvilket er det samme med den lokale enhed peerInfo.encrypt = false; // ikke krypteret // Føj enheden til listen over parrede enheder, hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; } esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data send_data (); } void loop () {} void send_data () {Serial.println ("Sender"); // Indstil værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "ESP32"; // gem en streng myData.e = false; // gem en bool // Send data mindre end eller lig med 250 bytes via ESP-NOW og returnerer dens status esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Sendt med succes");} else {Serial.println ("Fejl ved afsendelse af dataene"); }}
ESP8266 KODE
// Tilføj nødvendige biblioteker
#include // For at tilføje Wifi -muligheder på ESP32 #include // For at få adgang til esp nu -funktionerne // gem MAC -adressen i et array med navnet broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatyperne for de strukturerede multiple variabler og omdøbe det hele til struct_message*/ typedef struct struct_message {char a [32]; int b; flyde c; String d; bool e; } struct_message; // Opret en variabel struct_message kaldet myData struct_message myData; // funktion kaldes når dataene modtages og udskriver den ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Bytes modtaget:"); 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 (); } ugyldig OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Leveringssucces": "Levering mislykkedes"); hvis (sendStatus! = 1) {send_data (); }} ugyldig send_data () {// Angiv værdier til at sende strcpy (myData.a, "DETTE ER EN CHAR"); // gem "DETTE ER EN CHAR" til variabel a af mine "data" defineret tidligere myData.b = random (1, 20); // gem en tilfældig værdi myData.c = 1.2; // gem en float myData.d = "ESP8266"; // gem en streng myData.e = false; // gem en bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// Indstil baudhastighed for seriel kommunikation med ESP Serial.begin (115200); // Indstil enheden som en Wi-Fi Station WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer sin status hvis (esp_now_init ()! = 0) {Serial.println ("Fejl ved initialisering af ESP-NOW"); Vend tilbage; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Kunne ikke tilføje peer"); Vend tilbage; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Definerer rollen for denne esp esp_now_register_recv_cb (OnDataRecv); // kalde funktionen OnDataRecv efter modtagelse af ESPNOW -data} void loop () {}
Trin 8: REFERENCER
ESPNOW_32_Eksempel
ESPNOW_8266 Eksempel
WIFI.h
ESP8266WiFi.h
esp_now.h til ESP8266
esp_now.h til ESP32
esp_now officielt dokument (Bedre forklaring af funktioner)
ESP-NU Officiel vejledning
Anbefalede:
DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin
![DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin](https://i.howwhatproduce.com/images/001/image-1099-j.webp)
DIY || Sådan laver du en edderkoprobot, der kan styres ved hjælp af smartphone Brug af Arduino Uno: Mens du laver en edderkoprobot, kan man lære så mange ting om robotik. Ligesom at lave robotter er underholdende såvel som udfordrende. I denne video vil vi vise dig, hvordan du laver en Spider -robot, som vi kan betjene ved hjælp af vores smartphone (Androi
Sådan læses flere analoge værdier ved hjælp af en analog pin: 6 trin (med billeder)
![Sådan læses flere analoge værdier ved hjælp af en analog pin: 6 trin (med billeder) Sådan læses flere analoge værdier ved hjælp af en analog pin: 6 trin (med billeder)](https://i.howwhatproduce.com/images/002/image-3465-5-j.webp)
Sådan læses flere analoge værdier ved hjælp af en analog pin: I denne vejledning vil jeg vise dig, hvordan du læser flere analoge værdier ved hjælp af kun en analog input -pin
Tutorial: Sådan styrer Arduino flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: 3 trin
![Tutorial: Sådan styrer Arduino flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: 3 trin Tutorial: Sådan styrer Arduino flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: 3 trin](https://i.howwhatproduce.com/images/009/image-25184-j.webp)
Tutorial: Hvordan Arduino styrer flere samme adresseenheder ved hjælp af TCA9548A I2C Multiplexer: Beskrivelse: TCA9548A I2C Multiplexer -modulet gør det muligt at forbinde enheder med den samme I2C -adresse (op til 8 samme adresse I2C) tilsluttet en mikrokontroller. Multiplexeren fungerer som en portvagt og sender kommandoerne til det valgte sæt
Sådan foretages en voksenhøretest ved hjælp af MATLAB: 6 trin
![Sådan foretages en voksenhøretest ved hjælp af MATLAB: 6 trin Sådan foretages en voksenhøretest ved hjælp af MATLAB: 6 trin](https://i.howwhatproduce.com/images/005/image-14113-9-j.webp)
Sådan foretages en voksen høretest ved hjælp af MATLAB: ANSVARSFRASKRIVELSE: Vores test er IKKE en medicinsk diagnostik og bør ikke bruges som sådan. For at måle hørelsen nøjagtigt skal du kontakte en læge. Ved hjælp af materialer, vi allerede havde, lavede vores gruppe en høretest. Vores test er kun til brug for voksne og teenagere
Sådan foretages gratis telefonopkald ved hjælp af Skype .: 4 trin
![Sådan foretages gratis telefonopkald ved hjælp af Skype .: 4 trin Sådan foretages gratis telefonopkald ved hjælp af Skype .: 4 trin](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10965062-how-to-make-free-phone-calls-using-skype-4-steps-j.webp)
Sådan foretages gratis telefonopkald ved hjælp af Skype .: Jeg ved ikke, hvorfor jeg sender dette, bortset fra det faktum, at jeg husker de gode gamle dage med tastaturet og andre før teknologikraschen i begyndelsen af 2000'erne. Det plejede at være den sejeste ting i verden at foretage gratis langdistanceopkald fra alle