Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Få Board Mac -adressen
- Trinn 2: Slik får du ESP-NU til å fungere
- Trinn 3: ESP-NÅ-FUNKSJONER (ESP32)
- Trinn 4: ESP-NÅ-FUNKSJONER (ESP8266)
- Trinn 5: Enveiskommunikasjon (ESP32 som avsender)
- Trinn 6: Enveiskommunikasjon (ESP8266 som avsender)
- Trinn 7: TO -MÅTES KOMMUNIKASJON
- Trinn 8: REFERANSER
Video: Slik snakker du flere ESP via ESP-NOW ved bruk av ESP32 og ESP8266: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
På mitt pågående prosjekt trenger jeg flere ESP for å snakke med hverandre uten en ruter. For å gjøre dette, bruker jeg ESP-NOW til å få trådløs kommunikasjon med hverandre uten en ruter på ESP.
Rekvisita
Ting jeg brukte:
ESP32 DEV -modul
NODEMCU 1.0 (ESP12E -modul)
Trinn 1: Få Board Mac -adressen
Gjennom ESP-nå snakker ESP-enheter til hverandre ved å sende data til sin unike adresse mens de er koblet til et internt tilgangspunktnettverk som ble opprettet ved intilisering av esp nå.. Bestem således MAC -adressen til hver enhet. Vedlagte er mine ESP32 og ESP8266 Board Settings
FOR ESP32
#include "WiFi.h" // For å få tilgang til ESP32 WIFI -funksjoner
ugyldig oppsett () {Serial.begin (115200); Serial.print ("ESP32 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // skriver ut MAC -adressen} hulromsløyfe () {}
FOR ESP8266
#include // Bibliotek som brukes for å få tilgang til ESP8266 WIFI -funksjoner
ugyldig oppsett () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Board MAC Address:"); Serial.println (WiFi.macAddress ()); // skriver ut MAC -adressen} hulromsløyfe () {}
Min MAC -ADRESSE er:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Trinn 2: Slik får du ESP-NU til å fungere
Her er en oversikt over hvordan du får det til å fungere:
- Inkluder esp nå og wifi -biblioteker
- Lagre mac -adressen til mottakerens ESP
- Definer datastrukturen til meldingen send/mottatt
- På oppsettet, sett wifi til stasjonsmodus
- Initialiser esp_now
- foreta og registrere tilbakeringingsfunksjonen som ringes etter sending og mottak av data
- Definer rollen for Esp8266
- registrer likemannen eller mottakeren, spesielt
- Send data
Trinn 3: ESP-NÅ-FUNKSJONER (ESP32)
esp_now_init (ugyldig)
Komme tilbake:
- ESP_OK: lykkes
- ESP_ERR_ESPNOW_INTERNAL: Intern feil
Beskrivelse:
Initialiser ESPNOW -funksjonen
esp_now_register_send_cb (cb)
Returnerer:
- ESP_OK: lykkes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
- ESP_ERR_ESPNOW_INTERNAL: intern feil
Parametere:
-
cb: tilbakeringingsfunksjonsnavn etter å ha sendt ESPNOW -data med disse parameterne:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mottakerens mac -adresse
-
status:
- 1 = suksess
- 0 = mislykkes
-
Beskrivelse:
Ring funksjonen OnDataSent etter å ha sendt ESPNOW -data
esp_now_add_peerconst esp_now_peer_info_t *peer)
Returnerer:
- ESP_OK: lykkes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
- ESP_ERR_ESPNOW_ARG: ugyldig argument
- ESP_ERR_ESPNOW_FULL: vennelisten er full
- ESP_ERR_ESPNOW_NO_MEM: tom for minne
- ESP_ERR_ESPNOW_EXIST: Peer har eksistert
Parametere:
-
peer: peer -informasjon med følgende data:
-
uint8_t
peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW peer MAC -adresse som også er MAC -adressen til stasjonen eller softap
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW peer lokal hovednøkkel som brukes til å kryptere data
-
uint8_t kanal
Wi-Fi-kanal som peer bruker til å sende/motta ESPNOW-data. Hvis verdien er 0, bruker du gjeldende kanal som stasjonen eller programvaren er på. Ellers må den angis som kanalen som stasjonen eller programvaren er på
-
wifi_interface_t ifidx
Wi-Fi-grensesnitt som peer bruker til å sende/motta ESPNOW-data
-
bool kryptere
ESPNOW -data som denne kameraten sender/mottar, er kryptert eller ikke
-
void *priv
ESPNOW private data
-
Beskrivelse:
Legg til en peer to peer -liste
esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)
Returnerer:
- ESP_OK: lykkes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
- ESP_ERR_ESPNOW_ARG: ugyldig argument
- ESP_ERR_ESPNOW_INTERNAL: intern feil
- ESP_ERR_ESPNOW_NO_MEM: tom for minne
- ESP_ERR_ESPNOW_NOT_FOUND: Peer er ikke funnet
- ESP_ERR_ESPNOW_IF: nåværende WiFi -grensesnitt stemmer ikke overens med peer
Parametere:
- peer_addr: peer MAC -adresse
- data: data som skal sendes
- len: lengde på data
Beskrivelse:
Send ESPNOW -data. I noen tilfeller skjer dette:
- Hvis peer_addr ikke er NULL, sender du data til peer hvis MAC -adresse samsvarer med peer_addr
- Hvis peer_addr er NULL, sender du data til alle jevnaldrende som legges til i peer -listen
- Maksimal datalengde må være mindre enn ESP_NOW_MAX_DATA_LEN
- Bufferen som dataargumentet viser til trenger ikke å være gyldig etter at esp_now_send returnerer
esp_now_register_recv_cb (cb)
Returnerer:
- ESP_OK: lykkes
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW er ikke initialisert
- ESP_ERR_ESPNOW_INTERNAL: intern feil
Parametere:
- cb: tilbakeringingsfunksjon for mottak av ESPNOW -data
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
mac -adresse til mottaker
-
*data:
data mottar
-
data_len
databyte lengde
-
-
Beskrivelse:
Ring funksjonen cb etter å ha mottatt ESPNOW -data
Trinn 4: ESP-NÅ-FUNKSJONER (ESP8266)
FUNKSJONER BESKRIVELSE ESP32 ESP8266
int esp_now_init (ugyldig)
Returnerer:
- 1 = suksess
- 0 = mislykkes
Beskrivelse
Initialiser ESPNOW -funksjonen
int esp_now_set_self_role (u8 rolle)
Parametere:
- ESP_NOW_ROLE_IDLE: dataoverføring er ikke tillatt.
- ESP_NOW_ROLE_CONTROLLER: Sation -grensesnittet prioriteres
- ESP_NOW_ROLE_SLAVE: SoftAP -grensesnitt prioriteres
- ESP_NOW_ROLE_COMBO: prioritet gis til SoftAP -grensesnitt
Beskrivelse
Angir enhetens rolle
int esp_now_register_send_cb (cb)
Returnerer:
- 1 = suksess
- 0 = mislykkes
Parametere:
-
cb: tilbakeringingsfunksjonsnavn etter å ha sendt ESPNOW -data med disse parameterne:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mottakerens mac -adresse
-
status:
- 1 = suksess
- 0 = mislykkes
-
Beskrivelse
Ring funksjonen OnDataSent etter å ha sendt ESPNOW -data
int esp_now_add_peer (u8 *mac_addr, u8 rolle, u8 kanal, u8 *nøkkel, u8 key_len)
Returnerer:
- 1 = suksess
- 0 = mislykkes
Parametere:
-
mac_addr
mac -adressen til jevnaldrende
- rolle
-
kanal
Hvis verdien er 0, bruker du gjeldende kanal som stasjonen eller programvaren er på. Ellers må den angis som kanalen som stasjonen eller programvaren er på
-
*nøkkel
nøkkel for kryptering
-
key_len
nøkkellengde
Beskrivelse:
Legg til en peer to peer -liste
int esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)
Returnerer:
- 1 = Suksess
- 0 = mislykkes
Parametere:
- peer_addr: peer MAC -adresse
- data: data som skal sendes
- len: lengde på data
Beskrivelse:
Send ESPNOW -data. I noen tilfeller skjer dette:
- Hvis peer_addr ikke er NULL, sender du data til peer hvis MAC -adresse samsvarer med peer_addr
- Hvis peer_addr er NULL, må du sende data til alle jevnaldrende som legges til i peer -listen
- Maksimal datalengde må være mindre enn ESP_NOW_MAX_DATA_LEN
- Bufferen som dataargumentet viser til trenger ikke å være gyldig etter at esp_now_send returnerer
int esp_now_register_recv_cb (cb)
Returnerer:
- 1 = Suksess
- 0 = mislykkes
Parametere:
- cb: tilbakeringingsfunksjon for mottak av ESPNOW -data
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
mac -adresse til mottaker
-
*data:
data mottar
-
data_len
databyte lengde
-
-
Beskrivelse:
Ring funksjonen cb etter å ha mottatt ESPNOW -data
Trinn 5: Enveiskommunikasjon (ESP32 som avsender)
ESP32 sender data til en ESP8266. med denne koden. Endre broadcastAddress til den korresponderende mottakerens mac -adresse. Min var A4: CF: 12: C7: 9C: 77
// Legg til nødvendige biblioteker
#include // For å få tilgang til esp nå -funksjonene #include // For å legge til Wifi -funksjoner på ESP32 // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adressen til mottakeren min/*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en struct_message kalt myData struct_message myData; // funksjon kalles når data sendes for å skrive ut statusens tomrom OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast pakke sendestatus: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Delivery Fail"); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Feil ved initialisering av ESP -NÅ"); komme tilbake; } // kall funksjonen OnDataSent etter å ha sendt ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informasjonen som en peker til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier verdien av broadcastAddress med 6 byte til peerInfo.peer_addr peerInfo.channel = 0; // kanal der esp snakker. 0 betyr udefinert og data vil bli sendt på den nåværende kanalen. 1-14 er gyldige kanaler som er det samme med den lokale enheten peerInfo.encrypt = false; // ikke kryptert // Legg til enheten i listen over sammenkoblede enheter hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke legge til peer"); komme tilbake; }} void loop () {// Angi verdier for å sende strcpy (myData.a, "THIS IS A CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "Hei"; // lagre en streng myData.e = false; // lagre en bool // Send data mindre enn eller lik 250 byte via ESP-NOW og returnerer statusen esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Sendt med suksess"); } else {Serial.println ("Feil ved sending av dataene"); } forsinkelse (2000); }
ESP8266 mottar data fra ESP32 ved hjelp av denne koden.
// Legg til nødvendige biblioteker
#include // For å legge til Wifi -funksjoner på ESP32 #include // For å få tilgang til esp now -funksjonene /*definer datatypene til de flere variablene som er strukturert og omdøpt det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en variabel struct_message kalt myData struct_message myData; // funksjon kalles når dataene mottas og skriver dem ut ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte mottatt:"); 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 (); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()! = 0) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definerer rollen til denne esp esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW data} void loop () {}
Trinn 6: Enveiskommunikasjon (ESP8266 som avsender)
ESP8266 sender data til en ESP32. med denne koden. Endre broadcastAddress til den korresponderende mottakerens mac -adresse. Min esp32 -adresse er 30: AE: A4: F5: 03: A4. For andre funksjoner for esp8266, gå hit
// Legg til nødvendige biblioteker
#include // For å legge til Wifi -funksjoner på ESP32 #include // For å få tilgang til esp nå -funksjonene // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/ typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en strukturert variabel kalt myData struct_message myData; // funksjon kalles når data sendes, og skriv ut statusens tomrom OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (sendStatus == 1? "Delivery Success": "Delivery Fail"); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } esp_now_register_send_cb (OnDataSent); // ring funksjonen OnDataSent etter å ha sendt ESPNOW -data // Legg til enheten i listen over sammenkoblede enheter hvis (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Kunne ikke legge til peer"); komme tilbake; }} void loop () {// Angi verdier for å sende strcpy (myData.a, "THIS IS A CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "SP8266"; // lagre en streng myData.e = false; // lagre en bool // Send data mindre enn eller lik 250 byte via ESP-NOW og returnerer status int resultat = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println ("Sendt med suksess"); } else {Serial.println ("Feil ved sending av dataene"); } forsinkelse (2000); }
ESP32 mottar data fra en ESP8266. med denne koden. For andre funksjoner referer du her
// Legg til nødvendige biblioteker
#include // For å få tilgang til esp nå -funksjonene #include // For å legge til Wifi -funksjoner på ESP32 /*definer datatypene til de flere variablene som er strukturert og omdøpt det hele til struct_message* /typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en variabel struct_message kalt myData struct_message myData; // funksjon kalles når dataene mottas og skriver dem ut ugyldige OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte mottatt:"); 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 (); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer status hvis (esp_now_init ()! = 0) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW data} void loop () {}
Trinn 7: TO -MÅTES KOMMUNIKASJON
ESP32 sender data ved oppstart til ESP8266. ESP8266 skriver ut den mottatte meldingen og svarer deretter som ESP32 skriver ut på den serielle skjermen.
ESP32 KODE
// Legg til nødvendige biblioteker
#include // For å få tilgang til esp nå -funksjonene #include // For å legge til Wifi -funksjoner på ESP32 // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // MAC -adressen til mottakeren min/*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en struct_message kalt myData struct_message myData; // funksjon kalles når data sendes for å skrive ut statusens tomrom OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast pakke sendestatus: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "Delivery Success": "Delivery Fail"); if (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 ("Byte mottatt:"); 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 (); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer statusen hvis (esp_now_init ()! = ESP_OK) {Serial.println ("Feil ved initialisering av ESP -NÅ"); komme tilbake; } // kall funksjonen OnDataSent etter å ha sendt ESPNOW -data esp_now_register_send_cb (OnDataSent); // Registrer peer esp_now_peer_info_t peerInfo; // initialisere og tildele peer -informasjonen som en peker til en addres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopier verdien av broadcastAddress med 6 byte til peerInfo.peer_addr peerInfo.channel = 0; // kanal der esp snakker. 0 betyr udefinert og data vil bli sendt på den nåværende kanalen.1-14 er gyldige kanaler som er det samme med den lokale enheten peerInfo.encrypt = false; // ikke kryptert // Legg til enheten i listen over sammenkoblede enheter hvis (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Kunne ikke legge til peer"); komme tilbake; } esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW -data send_data (); } void loop () {} void send_data () {Serial.println ("Sender"); // Angi verdier for å sende strcpy (myData.a, "THIS IS A CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "ESP32"; // lagre en streng myData.e = false; // lagre en bool // Send data mindre enn eller lik 250 byte via ESP-NOW og returnerer statusen esp_err_t result = esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); if (result == ESP_OK) {Serial.println ("Sendt med suksess");} else {Serial.println ("Feil ved sending av dataene"); }}
ESP8266 KODE
// Legg til nødvendige biblioteker
#include // For å legge til Wifi -funksjoner på ESP32 #include // For å få tilgang til esp nå -funksjonene // lagre MAC -adressen i en matrise som heter broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definere datatypene til flere variabler som er strukturert og omdøpt alt til det som struct_message*/ typedef struct struct_message {char a [32]; int b; flyte c; Streng d; bool e; } struct_message; // Lag en variabel struct_message kalt myData struct_message myData; // funksjon kalles når dataene mottas og skriver dem ut ugyldige OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Byte mottatt:"); 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? "Delivery Success": "Delivery Fail"); if (sendStatus! = 1) {send_data (); }} void send_data () {// Angi verdier for å sende strcpy (myData.a, "DETTE ER EN CHAR"); // lagre "DETTE ER EN CHAR" til variabel a av mine "data" definert tidligere myData.b = random (1, 20); // lagre en tilfeldig verdi myData.c = 1.2; // lagre en float myData.d = "ESP8266"; // lagre en streng myData.e = false; // lagre en bool esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } ugyldig oppsett () {// Angi overføringshastighet for seriell kommunikasjon med ESP Serial.begin (115200); // Angi enheten som en Wi-Fi-stasjon WiFi.mode (WIFI_STA); // Starter wifi // Init ESP-NOW og returnerer status hvis (esp_now_init ()! = 0) {Serial.println ("Feil ved initialisering av ESP-NOW"); komme tilbake; } if (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Kunne ikke legge til kollega"); komme tilbake; } 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 til denne esp esp_now_register_recv_cb (OnDataRecv); // kall funksjonen OnDataRecv etter å ha mottatt ESPNOW data} void loop () {}
Trinn 8: REFERANSER
ESPNOW_32_Eksempel
ESPNOW_8266 Eksempel
WIFI.h
ESP8266WiFi.h
esp_now.h for ESP8266
esp_now.h for ESP32
esp_now offisielt dokument (Bedre forklaring av funksjoner)
ESP-NÅ Offisiell guide
Anbefalt:
Slik kjører du servomotorer ved bruk av Moto: bit med mikro: bit: 7 trinn (med bilder)
Slik kjører du servomotorer ved bruk av Moto: bit med Micro: bit: En måte å utvide funksjonaliteten til micro: bit er å bruke et brett kalt moto: bit av SparkFun Electronics (omtrent $ 15-20). Det ser komplisert ut og har mange funksjoner, men det er ikke vanskelig å kjøre servomotorer fra det. Moto: bit lar deg
Grensesnitt Flere LCD til Arduino Uno ved bruk av felles datalinje: 5 trinn
Grensesnitt Flere LCD til Arduino Uno ved hjelp av Common Data Line: I dag skal jeg i denne instruksjonsfilen vise deg hvordan du grensesnitter flere 16x2 LCD -moduler med et arduino uno -kort ved hjelp av felles datalinje. Det mest interessante med dette prosjektet er at det bruker felles datalinje og viser forskjellige data i e
Lag en iPhone -app som snakker til partikkelnet: 4 trinn
Lag en iPhone -app som snakker til partikkelnett: I dette prosjektet lærer du hvordan du laster en app på iPhone som snakker direkte til et tredje generasjons partikkelnetkort. Det vil ta mindre enn 20 minutter av tiden din. I tillegg kan du begynne å tukte med en gang !! La oss komme i gang. Ting du trenger
Komme i gang med ESP32 CAM - Streaming av video ved bruk av ESP CAM over Wifi - ESP32 sikkerhetskamera -prosjekt: 8 trinn
Komme i gang med ESP32 CAM | Streaming av video ved bruk av ESP CAM over Wifi | ESP32 Security Camera Project: I dag lærer vi hvordan du bruker dette nye ESP32 CAM -kortet og hvordan vi kan kode det og bruke det som et sikkerhetskamera og få en streaming video over wifi
Raspberry Pi Snakker med ESP8266 ved hjelp av MQTT: 8 trinn
Raspberry Pi Snakker til ESP8266 Bruke MQTT: I dette prosjektet vil jeg forklare hva MQTT -protokollen er og hvordan den brukes til å kommunisere mellom enheter. Så, som en praktisk demonstrasjon, vil jeg demonstrere hvordan du konfigurerer et klient- og meglersystem, hvor en ESP8266 -modul samt RPi tal