Inhoudsopgave:
- Benodigdheden
- Stap 1: Verkrijg het Mac-adres van het bord
- Stap 2: Hoe ESP-NOW te laten werken?
- Stap 3: ESP-NOW-FUNCTIES (ESP32)
- Stap 4: ESP-NOW-FUNCTIES (ESP8266)
- Stap 5: Eenrichtingscommunicatie (ESP32 als afzender)
- Stap 6: Eenrichtingscommunicatie (ESP8266 als afzender)
- Stap 7: TWEE-WEG COMMUNICATIE
- Stap 8: REFERENTIES
Video: Meerdere ESP-gesprekken voeren via ESP-NOW met ESP32 en ESP8266: 8 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Op mijn lopende project heb ik meerdere ESP nodig om met elkaar te praten zonder een router. Om dit te doen, zal ik de ESP-NOW gebruiken om draadloos met elkaar te communiceren zonder een router op de ESP.
Benodigdheden
Dingen die ik heb gebruikt:
ESP32 DEV-module
NODEMCU 1.0 (ESP12E-module)
Stap 1: Verkrijg het Mac-adres van het bord
Via ESP-now praten ESP-apparaten met elkaar door gegevens naar hun unieke adres te sturen terwijl ze zijn verbonden met een intern toegangspuntnetwerk dat is gemaakt bij het installeren van de esp now.. Bepaal dus het MAC-adres van elk apparaat. Bijgevoegd zijn mijn ESP32- en ESP8266-kaartinstellingen:
VOOR ESP32
#include "WiFi.h" // Om toegang te krijgen tot ESP32 WIFI-mogelijkheden
void setup(){ Serial.begin(115200); Serial.print ("ESP32-kaart MAC-adres: "); Serial.println(WiFi.macAddress()); // drukt zijn MAC-adres af } void loop () {}
VOOR ESP8266:
#include //Bibliotheek gebruikt om toegang te krijgen tot ESP8266 WIFI-mogelijkheden
void setup(){ Serial.begin(115200); Serieel.println(); Serial.print ("ESP8266 Board MAC-adres: "); Serial.println(WiFi.macAddress()); // drukt zijn MAC-adres af } void loop () {}
Mijn MAC-ADRES is:
- ESP32 - 30:AE:A4:F5:03:A4
- ESP8266: A4:CF:12:C7:9C:77
Stap 2: Hoe ESP-NOW te laten werken?
Hier is een overzicht van hoe je het kunt laten werken:
- Voeg nu esp en wifi-bibliotheken toe
- Bewaar het mac-adres van de ontvanger ESP
- Definieer de gegevensstructuur van het verzonden/ontvangen bericht
- Stel bij de installatie de wifi in op stationmodus
- Initialiseer esp_now
- maak en registreer de terugbelfunctie die wordt aangeroepen na het verzenden en ontvangen van gegevens
- Definieer voor Esp8266 zijn rol
- registreer de peer of ontvanger in het bijzonder
- Verstuur data
Stap 3: ESP-NOW-FUNCTIES (ESP32)
esp_now_init(void)
Opbrengst:
- ESP_OK: slagen
- ESP_ERR_ESPNOW_INTERNAL: Interne fout
Beschrijving:
ESPNOW-functie initialiseren
esp_now_register_send_cb(cb)
Geeft terug:
- ESP_OK: slagen
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW is niet geïnitialiseerd
- ESP_ERR_ESPNOW_INTERNAL: interne fout
Parameters:
-
cb: naam van de callback-functie na het verzenden van ESPNOW-gegevens met deze parameters:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mac-adres van ontvanger
-
toestand:
- 1 = succes
- 0 = mislukt
-
Beschrijving:
Roep de functie OnDataSent aan na het verzenden van ESPNOW-gegevens
esp_now_add_peerconst esp_now_peer_info_t *peer)
Geeft terug:
- ESP_OK: slagen
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW is niet geïnitialiseerd
- ESP_ERR_ESPNOW_ARG: ongeldig argument
- ESP_ERR_ESPNOW_FULL: lijst met peers is vol
- ESP_ERR_ESPNOW_NO_MEM: onvoldoende geheugen
- ESP_ERR_ESPNOW_EXIST: peer heeft bestaan
Parameters:
-
peer:peer informatie met de volgende gegevens:
-
uint8_t
peer_addr[ESP_NOW_ETH_ALEN]; ESPNOW peer MAC-adres dat ook het MAC-adres is van station of softap
-
uint8_t lmk[ESP_NOW_KEY_LEN]
ESPNOW peer lokale hoofdsleutel die wordt gebruikt om gegevens te versleutelen
-
uint8_t kanaal
Wi-Fi-kanaal dat peer gebruikt om ESPNOW-gegevens te verzenden/ontvangen. Als de waarde 0 is, gebruik dan het huidige kanaal waarop het station of de softap staat. Anders moet het worden ingesteld als het kanaal waarop die zender of softap staat
-
wifi_interface_t ifidx
Wi-Fi-interface die peer gebruikt om ESPNOW-gegevens te verzenden/ontvangen
-
bool versleutelen
ESPNOW-gegevens die deze peer verzendt / ontvangt, zijn gecodeerd of niet
-
leegte *priv
ESPNOW peer-privégegevens
-
Beschrijving:
Een peer-to-peer-lijst toevoegen
esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len)
Geeft terug:
- ESP_OK: slagen
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW is niet geïnitialiseerd
- ESP_ERR_ESPNOW_ARG: ongeldig argument
- ESP_ERR_ESPNOW_INTERNAL: interne fout
- ESP_ERR_ESPNOW_NO_MEM: onvoldoende geheugen
- ESP_ERR_ESPNOW_NOT_FOUND: peer is niet gevonden
- ESP_ERR_ESPNOW_IF: huidige WiFi-interface komt niet overeen met die van peer
Parameters:
- peer_addr: peer MAC-adres
- gegevens: gegevens om te verzenden
- len: lengte van gegevens
Beschrijving:
ESPNOW-gegevens verzenden. In sommige gevallen gebeurt dit:
- Als peer_addr niet NULL is, stuur dan gegevens naar de peer wiens MAC-adres overeenkomt met peer_addr
- Als peer_addr NULL is, stuur dan gegevens naar alle peers die aan de peerlijst zijn toegevoegd
- De maximale lengte van gegevens moet kleiner zijn dan ESP_NOW_MAX_DATA_LEN
- De buffer waarnaar wordt verwezen door het gegevensargument hoeft niet geldig te zijn nadat esp_now_send is geretourneerd
esp_now_register_recv_cb(cb)
Geeft terug:
- ESP_OK: slagen
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW is niet geïnitialiseerd
- ESP_ERR_ESPNOW_INTERNAL: interne fout
Parameters:
-
cb: callback-functie voor het ontvangen van ESPNOW-gegevens
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
mac adres van ontvanger
-
*gegevens:
gegevens ontvangen
-
data_len
gegevensbyte lengte
-
-
Beschrijving:
Roep de functie cb aan na ontvangst van ESPNOW-gegevens
Stap 4: ESP-NOW-FUNCTIES (ESP8266)
FUNCTIES OMSCHRIJVING ESP32 ESP8266
int esp_now_init(void)
Geeft terug:
- 1 = succes
- 0=mislukt
Beschrijving
ESPNOW-functie initialiseren
int esp_now_set_self_role(u8 rol)
Parameters:
- ESP_NOW_ROLE_IDLE: gegevensoverdracht is niet toegestaan.
- ESP_NOW_ROLE_CONTROLLER: prioriteit wordt gegeven aan de Sation-interface
- ESP_NOW_ROLE_SLAVE: prioriteit wordt gegeven aan SoftAP-interface
- ESP_NOW_ROLE_COMBO: prioriteit wordt gegeven aan SoftAPinterface
Beschrijving
Stelt de apparaatrol in
int esp_now_register_send_cb(cb)
Geeft terug:
- 1 = succes
- 0 = mislukt
Parameters:
-
cb: naam van de callback-functie na het verzenden van ESPNOW-gegevens met deze parameters:
-
void cb (const uint8_t *mac_addr, esp_now_send_status_t status)
- mac_addr: mac-adres van ontvanger
-
toestand:
- 1 = succes
- 0 = mislukt
-
Beschrijving
Roep de functie OnDataSent aan na het verzenden van ESPNOW-gegevens
int esp_now_add_peer(u8 *mac_addr, u8 rol, u8 kanaal, u8 *key, u8 key_len)
Geeft terug:
- 1 = succes
- 0 = mislukt
Parameters:
-
mac_addr
mac-adres van peer
- rol
-
kanaal
Als de waarde 0 is, gebruik dan het huidige kanaal waarop het station of de softap staat. Anders moet het worden ingesteld als het kanaal waarop dat station of die softap is ingeschakeld
-
*toets
sleutel voor codering
-
key_len
lengte van de sleutel
Beschrijving:
Een peer-to-peer-lijst toevoegen
int esp_now_send(const uint8_t *peer_addr, const uint8_t *data, size_t len)
Geeft terug:
- 1 = Succes
- 0 = Mislukt
Parameters:
- peer_addr: peer MAC-adres
- gegevens: gegevens om te verzenden
- len: lengte van gegevens
Beschrijving:
ESPNOW-gegevens verzenden. In sommige gevallen gebeurt dit:
- Als peer_addr niet NULL is, stuur dan gegevens naar de peer wiens MAC-adres overeenkomt met peer_addr
- Als peer_addr NULL is, stuur dan gegevens naar alle peers die aan de peerlijst zijn toegevoegd
- De maximale lengte van gegevens moet kleiner zijn dan ESP_NOW_MAX_DATA_LEN
- De buffer waarnaar wordt verwezen door het gegevensargument hoeft niet geldig te zijn nadat esp_now_send is geretourneerd
int esp_now_register_recv_cb(cb)
Geeft terug:
- 1 = Succes
- 0 = Mislukt
Parameters:
-
cb: callback-functie voor het ontvangen van ESPNOW-gegevens
-
void cb (const uint8_t *mac_addr, const uint8_t *data, int data_len)
-
mac_addr:
mac adres van ontvanger
-
*gegevens:
gegevens ontvangen
-
data_len
gegevensbyte lengte
-
-
Beschrijving:
Roep de functie cb aan na ontvangst van ESPNOW-gegevens
Stap 5: Eenrichtingscommunicatie (ESP32 als afzender)
De ESP32 stuurt gegevens naar een ESP8266. met deze code. Wijzig het broadcastAddress in uw corresponderende mac-adres van de ontvanger. De mijne was A4:CF:12:C7:9C:77
//Voeg benodigde bibliotheken toe
#include //To toegang tot de esp now-functies #include //To Add Wifi Capabilities on ESP32 //Save het MAC-adres in een array met de naam broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; //MAC-adres van mijn ontvanger /*definieer de datatypes van de meerdere gestructureerde variabelen en hernoem ze allemaal als struct_message*/ typedef struct struct_message { char a[32]; int b; zweven c; Tekenreeks d; bool e; } struct_bericht; // Maak een struct_message genaamd myData struct_message myData; // functie aangeroepen wanneer gegevens worden verzonden om de status ervan af te drukken ongeldig OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) { Serial.print("\r\nLaatste pakketverzendstatus:\t"); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Bezorging geslaagd": "Bezorging mislukt"); } void setup () { // Stel de baudrate in voor seriële communicatie met ESP Serial.begin (115200); // Stel het apparaat in als een Wi-Fi Station WiFi.mode (WIFI_STA);// Start de wifi // Init ESP-NOW en retourneert de status if (esp_now_init() != ESP_OK) { Serial.println ("Fout bij initialiseren van ESP -NU"); opbrengst; } // bel de functie OnDataSent na het verzenden van ESPNOW-gegevens esp_now_register_send_cb (OnDataSent); // Registreer peer esp_now_peer_info_t peerInfo; // initialiseer en wijs de peer-informatie toe als een aanwijzer naar een adres memcpy (peerInfo.peer_addr, broadcastAddress, 6); // kopieer de waarde van broadcastAddress met 6 bytes naar peerInfo.peer_addr peerInfo.channel = 0; // kanaal waarop de esp praten. 0 betekent ongedefinieerd en gegevens worden verzonden op het huidige kanaal. 1-14 zijn geldige kanalen, wat hetzelfde is als het lokale apparaat peerInfo.encrypt = false; //niet versleuteld //Voeg het apparaat toe aan de lijst met gekoppelde apparaten if (esp_now_add_peer(&peerInfo) != ESP_OK){ Serial.println("Failed to add peer"); opbrengst; } } void loop () {// Stel waarden in om strcpy te verzenden (myData.a, "THIS IS A CHAR"); //save "THIS IS A CHAR" naar variabele a van mijn "data" eerder gedefinieerd myData.b = random (1, 20); // sla een willekeurige waarde op myData.c = 1.2; //save a float myData.d = "Hallo"; // sla een string op myData.e = false; //save a bool //Stuur data kleiner dan of gelijk aan 250 bytes via ESP-NOW en retourneert de status esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); if (resultaat == ESP_OK) { Serial.println ("Verzonden met succes"); } else { Serial.println("Fout bij het verzenden van de gegevens"); } vertraging (2000); }
De ESP8266 ontvangt met deze code gegevens van de ESP32.
//Voeg benodigde bibliotheken toe
#include //To Add Wifi Capabilities on ESP32 #include //To toegang tot de esp now-functies /*definieer de datatypes van de meerdere variabelen gestructureerd en hernoem ze allemaal als struct_message*/ typedef struct struct_message { char a[32]; int b; zweven c; Tekenreeks d; bool e; } struct_bericht; // Maak een variabele struct_message genaamd myData struct_message myData; // functie wordt aangeroepen wanneer de gegevens worden ontvangen en drukt deze af. Serial.print("Bytes ontvangen: "); Serial.println(len); Serial.print("Char: "); Serial.println(myData.a); Serial.print("Int: "); Serial.println(mijnData.b); Serial.print("Float: "); Serial.println(myData.c); Serial.print("String: "); Serial.println(myData.d); Serial.print("Bool: "); Serial.println(myData.e); Serieel.println(); } void setup () { // Stel de baudrate in voor seriële communicatie met ESP Serial.begin (115200); // Stel het apparaat in als een Wi-Fi Station WiFi.mode (WIFI_STA); // Start de wifi // Init ESP-NOW en retourneert de status if (esp_now_init() != 0) { Serial.println ("Fout bij initialiseren van ESP-NOW"); opbrengst; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Definieert de rol van deze esp_now_register_recv_cb (OnDataRecv); // roep de functie OnDataRecv aan na ontvangst van ESPNOW-gegevens} void loop () {}
Stap 6: Eenrichtingscommunicatie (ESP8266 als afzender)
De ESP8266 stuurt gegevens naar een ESP32. met deze code. Wijzig het broadcastAddress in uw corresponderende mac-adres van de ontvanger. Mijn esp32-adres is 30:AE:A4:F5:03:A4. Voor andere functies voor esp8266 ga hier
//Voeg benodigde bibliotheken toe
#include //To Add Wifi Capabilities on ESP32 #include //To toegang tot de esp now-functies // sla het MAC-adres op in een array met de naam broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definieer de datatypes van de meerdere gestructureerde variabelen en hernoem ze allemaal als struct_message*/ typedef struct struct_message { char a[32]; int b; zweven c; Tekenreeks d; bool e; } struct_bericht; // Maak een gestructureerde variabele met de naam myData struct_message myData; // functie aangeroepen wanneer gegevens worden verzonden en de status ervan afdrukken ongeldig OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) { Serial.print("\r\nLaatste pakketverzendstatus:\t"); Serial.println (sendStatus == 1 ? "Bezorging geslaagd": "Bezorging mislukt"); } void setup () { // Stel de baudrate in voor seriële communicatie met ESP Serial.begin (115200); // Stel het apparaat in als een Wi-Fi Station WiFi.mode (WIFI_STA);// Start de wifi // Init ESP-NOW en retourneert de status if (esp_now_init()) { Serial.println ("Fout bij initialiseren van ESP-NOW"); opbrengst; } esp_now_register_send_cb(OnDataSent); // Roep de functie OnDataSent aan na het verzenden van ESPNOW-gegevens // Voeg het apparaat toe aan de lijst met gekoppelde apparaten als (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Failed to add peer"); opbrengst; } } void loop () {// Stel waarden in om strcpy te verzenden (myData.a, "THIS IS A CHAR"); //save "THIS IS A CHAR" naar variabele a van mijn "data" eerder gedefinieerd myData.b = random (1, 20); // sla een willekeurige waarde op myData.c = 1.2; // sla een float myData.d = "SP8266" op; // sla een string op myData.e = false; //save a bool //Stuur data kleiner dan of gelijk aan 250 bytes via ESP-NOW en retourneert de status int result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); if (esp_now_init() != 0) { Serial.println("Verzonden met succes"); } else { Serial.println("Fout bij het verzenden van de gegevens"); } vertraging (2000); }
De ESP32 ontvangt gegevens van een ESP8266. met deze code. Zie hier voor andere functies:
//Voeg benodigde bibliotheken toe
#include //To toegang tot de esp now-functies #include //To Add Wifi Capabilities on ESP32 /*definieer de datatypes van de meerdere variabelen gestructureerd en hernoem ze allemaal als struct_message*/ typedef struct struct_message { char a[32]; int b; zweven c; Tekenreeks d; bool e; } struct_bericht; // Maak een variabele struct_message genaamd myData struct_message myData; // functie wordt aangeroepen wanneer de gegevens worden ontvangen en drukt deze af. Serial.print("Bytes ontvangen: "); Serial.println(len); Serial.print("Char: "); Serial.println(mijnData.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); Serieel.println(); } void setup () { // Stel de baudrate in voor seriële communicatie met ESP Serial.begin (115200); // Stel het apparaat in als een Wi-Fi Station WiFi.mode (WIFI_STA); // Start de wifi // Init ESP-NOW en retourneert de status if (esp_now_init() != 0) { Serial.println ("Fout bij initialiseren van ESP-NOW"); opbrengst; } esp_now_register_recv_cb(OnDataRecv); // roep de functie OnDataRecv aan na ontvangst van ESPNOW-gegevens} void loop () {}
Stap 7: TWEE-WEG COMMUNICATIE
De ESP32 stuurt gegevens bij het opstarten naar de ESP8266. De ESP8266 print het ontvangen bericht en vervolgens de antwoorden waarvan de ESP32 afdrukt op zijn seriële monitor.
ESP32-CODE
//Voeg benodigde bibliotheken toe
#include //To toegang tot de esp now-functies #include //To Add Wifi Capabilities on ESP32 //Save het MAC-adres in een array met de naam broadcastAddress; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; //MAC-adres van mijn ontvanger /*definieer de datatypes van de meerdere variabelen gestructureerd en hernoem ze allemaal als struct_message*/ typedef struct struct_message { char a[32]; int b; zweven c; Tekenreeks d; bool e; } struct_bericht; // Maak een struct_message genaamd myData struct_message myData; // functie aangeroepen wanneer gegevens worden verzonden om de status ervan af te drukken ongeldig OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) { Serial.print("\r\nLaatste pakketverzendstatus:\t"); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Bezorging geslaagd": "Bezorging mislukt"); if(status!=ESP_NOW_SEND_SUCCESS){send_data();} } void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) { memcpy(&myData, inkomendeData, sizeof(myData)); Serial.print("Bytes ontvangen: "); 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); Serieel.println(); } void setup () { // Stel de baudrate in voor seriële communicatie met ESP Serial.begin (115200); // Stel het apparaat in als een Wi-Fi Station WiFi.mode(WIFI_STA);//Start de wifi // Init ESP-NOW en retourneert de status if (esp_now_init() != ESP_OK) { Serial.println("Fout bij initialiseren ESP -NU"); opbrengst; } // bel de functie OnDataSent na het verzenden van ESPNOW-gegevens esp_now_register_send_cb (OnDataSent); // Registreer peer esp_now_peer_info_t peerInfo; // initialiseer en wijs de peer-informatie toe als een aanwijzer naar een adres memcpy (peerInfo.peer_addr, broadcastAddress, 6); //kopieer de waarde van broadcastAddress met 6 bytes naar peerInfo.peer_addr peerInfo.channel = 0; // kanaal waarop de esp praten. 0 betekent ongedefinieerd en gegevens worden verzonden op het huidige kanaal.1-14 zijn geldige kanalen, wat hetzelfde is als het lokale apparaat peerInfo.encrypt = false; //niet versleuteld //Voeg het apparaat toe aan de lijst met gekoppelde apparaten if (esp_now_add_peer(&peerInfo) != ESP_OK){ Serial.println("Failed to add peer"); opbrengst; } esp_now_register_recv_cb(OnDataRecv); // bel de functie OnDataRecv na ontvangst van ESPNOW-gegevens send_data (); } void loop() {} void send_data(){ Serial.println("Verzenden"); // Stel waarden in om strcpy te verzenden (myData.a, "THIS IS A CHAR"); //save "THIS IS A CHAR" naar variabele a van mijn "data" eerder gedefinieerd myData.b = random (1, 20); // sla een willekeurige waarde op myData.c = 1.2; //save a float myData.d = "ESP32"; // sla een string op myData.e = false; //save a bool //Stuur data kleiner dan of gelijk aan 250 bytes via ESP-NOW en retourneert de status esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); if (resultaat == ESP_OK) { Serial.println ("Verzonden met succes");} else { Serial.println ("Fout bij het verzenden van de gegevens"); } }
ESP8266-CODE
//Voeg benodigde bibliotheken toe
#include //To Add Wifi Capabilities on ESP32 #include //To toegang tot de esp now-functies // sla het MAC-adres op in een array met de naam broadcastAddress; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*definieer de datatypes van de meerdere gestructureerde variabelen en hernoem ze allemaal als struct_message*/ typedef struct struct_message { char a[32]; int b; zweven c; Tekenreeks d; bool e; } struct_bericht; // Maak een variabele struct_message genaamd myData struct_message myData; // functie wordt aangeroepen wanneer de gegevens worden ontvangen en drukt deze af. Serial.print("Bytes ontvangen: "); 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); Serieel.println(); verstuur data(); } void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) { Serial.print("\r\nLaatste pakketverzendstatus:\t"); Serial.println (sendStatus == 1 ? "Bezorging geslaagd": "Bezorging mislukt"); if(sendStatus!=1){ send_data(); } } void send_data () {// Stel waarden in om strcpy te verzenden (myData.a, "THIS IS A CHAR"); //save "THIS IS A CHAR" naar variabele a van mijn "data" eerder gedefinieerd myData.b = random (1, 20); // sla een willekeurige waarde op myData.c = 1.2; // sla een float myData.d = "ESP8266" op; // sla een string op myData.e = false; //save a bool esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData)); } void setup () { // Stel de baudrate in voor seriële communicatie met ESP Serial.begin (115200); // Stel het apparaat in als een Wi-Fi Station WiFi.mode (WIFI_STA); // Start de wifi // Init ESP-NOW en retourneert de status if (esp_now_init() != 0) { Serial.println ("Fout bij initialiseren van ESP-NOW"); opbrengst; } if (esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)){ Serial.println("Kan geen peer toevoegen"); opbrengst; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb(OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Definieert de rol van deze esp_now_register_recv_cb (OnDataRecv); // roep de functie OnDataRecv aan na ontvangst van ESPNOW-gegevens} void loop () {}
Stap 8: REFERENTIES
ESPNOW_32_Voorbeeld
ESPNOW_8266 Voorbeeld
WIFI.h
ESP8266WiFi.h
esp_now.h voor ESP8266
esp_now.h voor ESP32
esp_now officieel document (betere uitleg van functies)
Officiële ESP-NOW-gids
Aanbevolen:
Herinnering voor het voeren van honden: 5 stappen
Herinnering voor het voeren van honden: als u ook een hond in huis heeft, heeft u deze machine misschien nodig om u eraan te herinneren uw hond te voeren of om u eraan te herinneren wanneer u uw hond moet uitlaten. Deze machine is zo klein dat hij voor iedereen gemakkelijk te dragen is, en hij is erg
Herinnering voor het voeren van schildpadden: 7 stappen
Turtle Feeding Reminder: Dit project heet Turtle Feeding Reminder. Het doel van dit project is om me eraan te herinneren dat ik mijn schildpadden elke dag moet voeren als ik thuiskom. Waarom heb ik dit gemaakt: Er zijn twee schildpadden bij mij thuis, die ik ze elke dag moet voeren. Ik heb echter een
Meerdere LED's besturen met Python en de GPIO-pinnen van je Raspberry Pi: 4 stappen (met afbeeldingen)
Meerdere LED's besturen met Python en de GPIO-pinnen van je Raspberry Pi: deze Instructable laat zien hoe je meerdere GPIO-pinnen op je RaspberryPi kunt besturen om 4 LED's van stroom te voorzien. Het zal je ook kennis laten maken met parameters en voorwaardelijke uitspraken in Python.Onze vorige Instructable met behulp van de GPIO-pinnen van je Raspberry Pi om
Aan de slag met ESP32 CAM - Video streamen met ESP CAM via wifi - ESP32-beveiligingscameraproject - Ajarnpa
Aan de slag met ESP32 CAM | Video streamen met ESP CAM via wifi | ESP32 Security Camera Project: vandaag zullen we leren hoe we dit nieuwe ESP32 CAM-bord kunnen gebruiken en hoe we het kunnen coderen en gebruiken als een beveiligingscamera en een streaming video via wifi kunnen krijgen
Vergeet de hond niet te voeren: 3 stappen
Vergeet de hond niet te voeren: het is gewoon te vaak gebeurd! Ik keek naar de voer- of waterbak en deze was leeg. Lange tijd wilde ik Arduino leren gebruiken, dus ik dacht dat dit een goed startproject zou zijn, ik wilde in één oogopslag weten hoe laag de eten en wat