Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Pata Anwani ya Mac Mac
- Hatua ya 2: Jinsi ya Kufanya ESP-SASA Kufanya Kazi
- Hatua ya 3: ESP-SASA KAZI (ESP32)
- Hatua ya 4: ESP-SASA KAZI (ESP8266)
- Hatua ya 5: Njia Moja ya Mawasiliano (ESP32 kama Mtumaji)
- Hatua ya 6: Njia Moja ya Mawasiliano (ESP8266 kama Mtumaji)
- Hatua ya 7: MAWASILIANO YA NJIA MBILI
- Hatua ya 8: MAREJELEO
Video: Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266: Hatua 8
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Kwenye mradi wangu unaoendelea, ninahitaji ESP nyingi kuzungumza na kila mmoja bila router. Ili kufanya hivyo, nitatumia ESP-SASA kufanya mawasiliano ya wireless na kila mmoja bila router kwenye ESP.
Vifaa
Vitu nilivyotumia:
Moduli ya ESP32 DEV
NODEMCU 1.0 (Moduli ya ESP12E)
Hatua ya 1: Pata Anwani ya Mac Mac
Kupitia ESP-sasa, vifaa vya ESP huzungumza kwa kila mmoja kwa kutuma data kwa anwani yao ya kipekee wakati imeunganishwa na mtandao wa kiwango cha ufikiaji wa ndani uliofanywa wakati wa kuimarisha esp sasa.. Kwa hivyo, amua anwani ya MAC ya kila kifaa. Imeambatanishwa na Mipangilio yangu ya Bodi ya ESP32 na ESP8266
KWA ESP32
# pamoja na "WiFi.h" // Kupata ESP32 WIFI uwezo
kuanzisha batili () {Serial.begin (115200); Serial.print ("ESP32 Bodi ya MAC Anwani:"); Serial.println (WiFi.macAddress ()); // chapa Anwani yake ya MAC} kitanzi batili () {}
KWA ESP8266
#Ijumuisha // Maktaba inayotumiwa kufikia uwezo wa WIFI wa ESP8266
kuanzisha batili () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 Anwani ya MAC ya Bodi:"); Serial.println (WiFi.macAddress ()); // chapa Anwani yake ya MAC} kitanzi batili () {}
ANWANI yangu ya MAC ni:
- ESP32 - 30: AE: A4: F5: 03: A4
- ESP8266: A4: CF: 12: C7: 9C: 77
Hatua ya 2: Jinsi ya Kufanya ESP-SASA Kufanya Kazi
Hapa kuna muhtasari wa jinsi ya kuifanya ifanye kazi:
- Jumuisha esp sasa na maktaba za wifi
- Hifadhi anwani ya mac ya mpokeaji ESP
- Fafanua muundo wa data ya ujumbe tuma / pokea
- Kwenye usanidi, weka wifi kwenye hali ya kituo
- Anzisha esp_now
- fanya na uandikishe kazi ya kupiga simu inayoitwa baada ya kutuma na kupokea data
- Kwa Esp8266, fafanua jukumu lake
- kujiandikisha rika au mpokeaji esp
- Tuma data
Hatua ya 3: ESP-SASA KAZI (ESP32)
esp_now_init (batili)
Kurudi:
- ESP_OK: kufanikiwa
- ESP_ERR_ESPNOW_INTERNAL: Hitilafu ya ndani
Maelezo:
Anzisha kazi ya ESPNOW
esp_now_register_send_cb (cb)
Anarudi:
- ESP_OK: kufanikiwa
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW haijaanzishwa
- ESP_ERR_ESPNOW_INTERNAL: kosa la ndani
Vigezo:
-
cb: jina la kazi ya kupigia simu baada ya kutuma data ya ESPNOW na vigezo hivi:
-
utupu cb (const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: anwani ya mac ya mpokeaji
-
hali:
- 1 = mafanikio
- 0 = kushindwa
-
Maelezo:
Piga kazi OnDataSent baada ya kutuma data ya ESPNOW
esp_now_add_peerconst esp_now_peer_info_t * rika)
Anarudi:
- ESP_OK: kufanikiwa
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW haijaanzishwa
- ESP_ERR_ESPNOW_ARG: hoja batili
- ESP_ERR_ESPNOW_FULL: orodha ya rika imejaa
- ESP_ERR_ESPNOW_NO_MEM: iko nje ya kumbukumbu
- ESP_ERR_ESPNOW_EXIST: rika limekuwepo
Vigezo:
-
rika: habari za rika na data ifuatayo:
-
uint8_t
rika_addr [ESP_NOW_ETH_ALEN]; Anwani ya rika ya ESPNOW ambayo pia ni anwani ya MAC ya kituo au laini
-
uint8_t lmk [ESP_NOW_KEY_LEN]
ESPNOW rika ufunguo mkuu wa karibu ambao hutumiwa kusimba data
-
kituo cha uint8_t
Kituo cha Wi-Fi ambacho rika hutumia kutuma / kupokea data ya ESPNOW. Ikiwa thamani ni 0, tumia kituo cha sasa ambacho kituo au laini inapatikana. Vinginevyo, lazima iwekwe kama kituo ambacho kituo au laini inapatikana
-
wifi_interface_t ifidx
Muunganisho wa Wi-Fi ambao rika hutumia kutuma / kupokea data ya ESPNOW
-
encrypt ya bool
Takwimu za ESPNOW ambazo rika hili hutuma / kupokea hupigwa kwa njia fiche au la
-
batili * priv
Takwimu za kibinafsi za rika la ESPNOW
-
Maelezo:
Ongeza rika kwenye orodha ya wenzao
esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Anarudi:
- ESP_OK: kufanikiwa
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW haijaanzishwa
- ESP_ERR_ESPNOW_ARG: hoja isiyo sahihi
- ESP_ERR_ESPNOW_INTERNAL: kosa la ndani
- ESP_ERR_ESPNOW_NO_MEM: iko nje ya kumbukumbu
- ESP_ERR_ESPNOW_NOT_FOUND: rika haipatikani
- ESP_ERR_ESPNOW_IF: kiolesura cha sasa cha WiFi hakilingani na kile cha rika
Vigezo:
- rika_addr: anwani ya MAC rika
- data: data ya kutuma
- len: urefu wa data
Maelezo:
Tuma data ya ESPNOW. Kwa visa vingine, hii hufanyika:
- Ikiwa peer_addr sio NULL, tuma data kwa rika ambaye anwani yake ya MAC inalingana na peer_addr
- Ikiwa peer_addr ni NULL, tuma data kwa wenzao wote ambao wameongezwa kwenye orodha ya wenzao
- Urefu wa data lazima uwe chini ya ESP_NOW_MAX_DATA_LEN
- Bafa iliyoonyeshwa na hoja ya data haiitaji kuwa halali baada ya kurudi kwa esp_now_send
esp_now_sajili_recv_cb (cb)
Anarudi:
- ESP_OK: kufanikiwa
- ESP_ERR_ESPNOW_NOT_INIT: ESPNOW haijaanzishwa
- ESP_ERR_ESPNOW_INTERNAL: kosa la ndani
Vigezo:
-
cb: kazi ya kupiga tena simu kwa kupokea data ya ESPNOW
-
batili cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
anwani ya Mac ya mpokeaji
-
* data:
kupokea data
-
data_len
urefu wa data byte
-
-
Maelezo:
Piga kazi cb baada ya kupokea data ya ESPNOW
Hatua ya 4: ESP-SASA KAZI (ESP8266)
KAZI MAELEZO ESP32 ESP8266
int esp_now_init (batili)
Anarudi:
- 1 = mafanikio
- 0 = kushindwa
Maelezo
Anzisha kazi ya ESPNOW
int esp_now_set_self_role (jukumu la u8)
Vigezo:
- ESP_NOW_ROLE_IDLE: usafirishaji wa data hairuhusiwi.
- ESP_NOW_ROLE_CONTROLLER: kipaumbele kinapewa kiunga cha Sation
- ESP_NOW_ROLE_SLAVE: kipaumbele kinapewa kiolesura cha SoftAP
- ESP_NOW_ROLE_COMBO: kipaumbele kinapewa SoftAPinterface
Maelezo
Inaweka kifaa Jukumu
int esp_now_register_send_cb (cb)
Anarudi:
- 1 = mafanikio
- 0 = kushindwa
Vigezo:
-
cb: jina la kazi ya kupigia simu baada ya kutuma data ya ESPNOW na vigezo hivi:
-
utupu cb (const uint8_t * mac_addr, esp_now_send_status_t status)
- mac_addr: anwani ya mac ya mpokeaji
-
hali:
- 1 = mafanikio
- 0 = kushindwa
-
Maelezo
Piga kazi OnDataSent baada ya kutuma data ya ESPNOW
int esp_now_add_peer (u8 * mac_addr, jukumu la u8, kituo cha u8, ufunguo wa u8 *, ufunguo wa u8)
Anarudi:
- 1 = mafanikio
- 0 = kushindwa
Vigezo:
-
mac_addr
anwani ya mac ya rika
- jukumu
-
kituo
Ikiwa thamani ni 0, tumia kituo cha sasa ambacho kituo au laini inapatikana. Vinginevyo, lazima iwekwe kama kituo ambacho kituo au laini inapatikana
-
* ufunguo
ufunguo wa usimbaji fiche
-
key_len
urefu wa ufunguo
Maelezo:
Ongeza rika kwenye orodha ya wenzao
int esp_now_send (const uint8_t * peer_addr, const uint8_t * data, size_t len)
Anarudi:
- 1 = Mafanikio
- 0 = Kushindwa
Vigezo:
- rika_addr: anwani ya MAC rika
- data: data ya kutuma
- len: urefu wa data
Maelezo:
Tuma data ya ESPNOW. Kwa visa vingine, hii hufanyika:
- Ikiwa peer_addr sio NULL, tuma data kwa rika ambaye anwani yake ya MAC inalingana na peer_addr
- Ikiwa peer_addr ni NULL, tuma data kwa wenzao wote ambao wameongezwa kwenye orodha ya wenzao
- Urefu wa data lazima uwe chini ya ESP_NOW_MAX_DATA_LEN
- Bafa iliyoonyeshwa na hoja ya data haiitaji kuwa halali baada ya kurudi kwa esp_now_send
int esp_now_register_recv_cb (cb)
Anarudi:
- 1 = Mafanikio
- 0 = Kushindwa
Vigezo:
-
cb: kazi ya kupiga tena simu kwa kupokea data ya ESPNOW
-
utupu cb (const uint8_t * mac_addr, const uint8_t * data, int data_len)
-
mac_addr:
anwani ya Mac ya mpokeaji
-
* data:
kupokea data
-
data_len
urefu wa data byte
-
-
Maelezo:
Piga kazi cb baada ya kupokea data ya ESPNOW
Hatua ya 5: Njia Moja ya Mawasiliano (ESP32 kama Mtumaji)
ESP32 hutuma data kwa ESP8266. na nambari hii. Badilisha Anwani ya matangazo kwa anwani yako ya kupokea kipokeaji. Yangu ilikuwa A4: CF: 12: C7: 9C: 77
// Ongeza maktaba muhimu
#Ijumuisha pamoja // Kupata esp sasa inafanya kazi # pamoja na // Kuongeza Uwezo wa Wifi kwenye ESP32 // kuokoa Anwani ya MAC katika safu iliyoitwa BroadcastAddress; uint8_t matangazoAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // Anwani ya MAC ya mpokeaji wangu / * fafanua aina za data za anuwai anuwai na zilizopewa jina lote kama muundo_message * / typedef struct muundo_message {char a [32]; int b; kuelea c; Kamba d; bool e; } ujumbe_maumbile; // Unda ujumbe_maundo unaoitwa myData struct_message myData; // kazi inayoitwa wakati data inatumwa kuchapisha hali yake batili OnDataSent (const uint8_t * mac_addr, esp_now_send_status_t hadhi) {Serial.print ("\ r / nHali ya Kutuma Pakiti ya Mwisho: / t"); Serial. } usanidi batili () {// Weka kiwango cha baud cha mawasiliano ya serial na ESP Serial.begin (115200); // Weka kifaa kama Kituo cha Wi-Fi WiFi.mode (WIFI_STA); -SASA "); kurudi; } // piga kazi OnDataSent baada ya kutuma data ya ESPNOW esp_now_register_send_cb (OnDataSent); // Sajili rika esp_now_peer_info_t peerInfo; // anzisha na upe habari ya rika kama kielekezi kwa memcpy ya addres (peerInfo.peer_addr, matangazoAddress, 6); // nakala nakala ya matangazoAddress na ka 6 kwa peerInfo.peer_addr peerInfo.channel = 0; // kituo ambacho esp inazungumza. 0 inamaanisha haijafafanuliwa na data itatumwa kwenye kituo cha sasa. 1-14 ni njia halali ambazo ni sawa na kifaa cha ndani peerInfo.encrypt = uwongo; // haijasimbwa fiche // Ongeza kifaa kwenye orodha ya vifaa vilivyooanishwa ikiwa (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Imeshindwa kuongeza rika"); kurudi; }} kitanzi batili () {// Weka maadili ya kutuma strcpy (myData.a, "HII NDIO CHAR"); // kuokoa "HII NDIO CHAR" kutofautisha "data" yangu iliyoainishwa mapema myData.b = nasibu (1, 20); // kuokoa thamani ya nasibu myData.c = 1.2; // kuokoa kuelea myData.d = "Hello"; // kuokoa kamba myData.e = uwongo; // kuokoa bool // Tuma data chini ya au sawa 250 ka kupitia ESP-SASA na kurudisha hali yake esp_err_t matokeo = esp_now_send (BroadcastAddress, (uint8_t *) & myData, sizeof (myData)); ikiwa (matokeo == ESP_OK) {Serial.println ("Imetumwa na mafanikio"); } mwingine {Serial.println ("Kosa la kutuma data"); } kuchelewa (2000); }
ESP8266 inapokea data kutoka kwa ESP32 ikitumia nambari hii.
// Ongeza maktaba muhimu
#jumuisha // Kuongeza Uwezo wa Wifi kwenye ESP32 # pamoja na // Kupata esp sasa inafanya kazi / * fafanua aina za data za anuwai nyingi zilizopangwa na kupewa jina lote kama struct_message * / typedef struct struct_message {char a [32]; int b; kuelea c; Kamba d; bool e; } ujumbe_maumbile; // Tengeneza ujumbe_maumbile unaoitwa myData struct_message myData; // kazi inayoitwa data inapopokelewa na kuichapisha batili OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Baiti imepokea:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Kuelea:"); Serial.println (myData.c); Serial.print ("Kamba:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } usanidi batili () {// Weka kiwango cha baud cha mawasiliano ya serial na ESP Serial.begin (115200); // Weka kifaa kama Kituo cha Wi-Fi WiFi.mode (WIFI_STA); // Huanzisha wifi // Init ESP-SASA na kurudisha hali yake ikiwa (esp_now_init ()! = 0) {Serial.println ("Kosa la kuanzisha ESP-SASA"); kurudi; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Inafafanua jukumu la esp esp_now_register_recv_cb (OnDataRecv); // piga kazi OnDataRecv baada ya kupokea data ya ESPNOW} kitanzi batili () {}
Hatua ya 6: Njia Moja ya Mawasiliano (ESP8266 kama Mtumaji)
ESP8266 hutuma data kwa ESP32. na nambari hii. Badilisha Anwani ya matangazo kwa anwani yako ya kupokea kipokeaji. Anwani yangu ya esp32 ni 30: AE: A4: F5: 03: A4. Kwa kazi zingine za esp8266 nenda hapa
// Ongeza maktaba muhimu
#jumuisha // Kuongeza Uwezo wa Wifi kwenye ESP32 # pamoja na // Kupata esp sasa inafanya kazi // kuokoa Anwani ya MAC katika safu iliyoitwa BroadcastAddress; uint8_t matangazoAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * fafanua aina za data za anuwai anuwai na zilizopewa jina lote kama muundo_message * / typedef struct struct_message {char a [32]; int b; kuelea c; Kamba d; bool e; } muundo_message; // Unda muundo uliopangwa ulioitwa myData struct_message myData; // kazi inayoitwa wakati data inatumwa na chapisha hali yake batili OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nHali ya Kutuma Pakiti ya mwisho: / t"); Serial.println (sendStatus == 1? "Mafanikio ya Uwasilishaji": "Kushindwa kwa Uwasilishaji"); } usanidi batili () {// Weka kiwango cha baud cha mawasiliano ya serial na ESP Serial.begin (115200); // Weka kifaa kama Kituo cha Wi-Fi WiFi.mode (WIFI_STA);); kurudi; } esp_now_register_send_cb (OnDataSent); // piga kazi OnDataSent baada ya kutuma data ya ESPNOW // Ongeza kifaa kwenye orodha ya vifaa vilivyooanishwa ikiwa (esp_now_add_peer (BroadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("Imeshindwa kuongeza rika"); kurudi; }} kitanzi batili () {// Weka maadili ya kutuma strcpy (myData.a, "HII NDIO CHAR"); // kuokoa "HII NI CHAR" kutofautisha "data" yangu iliyoainishwa mapema myData.b = nasibu (1, 20); // kuokoa thamani ya nasibu myData.c = 1.2; // kuokoa kuelea myData.d = "SP8266"; // kuokoa kamba myData.e = uwongo; // kuokoa bool // Tuma data chini ya au baiti 250 sawa kupitia ESP-SASA na irudishe hali yake int matokeo = esp_now_send (BroadcastAddress, (uint8_t *) & myData, sizeof (myData)); ikiwa (esp_now_init ()! = 0) {Serial.println ("Imetumwa kwa mafanikio"); } mwingine {Serial.println ("Kosa la kutuma data"); } kuchelewa (2000); }
ESP32 inapokea data kutoka kwa ESP8266. na nambari hii. Kwa kazi zingine rejea hapa
// Ongeza maktaba muhimu
#Ijumuisha pamoja // Kupata esp sasa inafanya kazi # pamoja na // Kuongeza Uwezo wa Wifi kwenye ESP32 / * fafanua aina za data za anuwai nyingi zilizopangwa na kubadilishwa jina zote kama muundo_message * / typedef struct struct_message {char a [32]; int b; kuelea c; Kamba d; bool e; } muundo_message; // Tengeneza ujumbe_maumbile unaoitwa myData struct_message myData; // kazi inayoitwa data inapopokelewa na kuichapisha batili OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Baiti imepokea:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Kuelea:"); Serial.println (myData.c); Serial.print ("Kamba:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } usanidi batili () {// Weka kiwango cha baud cha mawasiliano ya serial na ESP Serial.begin (115200); // Weka kifaa kama Kituo cha Wi-Fi WiFi.mode (WIFI_STA); // Huanzisha wifi // Init ESP-SASA na kurudisha hali yake ikiwa (esp_now_init ()! = 0) {Serial.println ("Kosa la kuanzisha ESP-SASA"); kurudi; } esp_now_register_recv_cb (OnDataRecv); // piga kazi OnDataRecv baada ya kupokea data ya ESPNOW} kitanzi batili () {}
Hatua ya 7: MAWASILIANO YA NJIA MBILI
ESP32 hutuma data juu ya kuanza kwa ESP8266. ESP8266 inachapisha ujumbe uliopokea na kisha majibu ambayo ESP32 inachapisha kwenye mfuatiliaji wake wa serial.
Nambari ya ESP32
// Ongeza maktaba muhimu
# pamoja na // Kupata esp sasa inafanya kazi # pamoja na // Kuongeza Uwezo wa Wifi kwenye ESP32 // kuokoa Anwani ya MAC katika safu iliyoitwa BroadcastAddress; uint8_t matangazoAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // Anwani ya MAC ya mpokeaji wangu / * fafanua aina za data za anuwai anuwai na zilizopewa jina lote kama muundo_message * / typedef struct muundo_message {char a [32]; int b; kuelea c; Kamba d; bool e; } muundo_message; // Unda ujumbe_maundo unaoitwa myData struct_message myData; // kazi inayoitwa wakati data inatumwa kuchapisha hali yake batili OnDataSent (const uint8_t * mac_addr, esp_now_send_status_t hadhi) {Serial.print ("\ r / nHali ya Kutuma Pakiti ya Mwisho: / t"); Serial. ikiwa (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} batili OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Baiti imepokea:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Kuelea:"); Serial.println (myData.c); Serial.print ("Kamba:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); } usanidi batili () {// Weka kiwango cha baud cha mawasiliano ya serial na ESP Serial.begin (115200); // Weka kifaa kama Kituo cha Wi-Fi WiFi.mode (WIFI_STA); -SASA "); kurudi; } // piga kazi OnDataSent baada ya kutuma data ya ESPNOW esp_now_register_send_cb (OnDataSent); // Sajili rika esp_now_peer_info_t peerInfo; // anzisha na upe habari ya rika kama kielekezi kwa memcpy ya addres (peerInfo.peer_addr, matangazoAddress, 6); // nakala nakala ya matangazoAddress na ka 6 kwa peerInfo.peer_addr peerInfo.channel = 0; // kituo ambacho esp inazungumza. 0 inamaanisha haijafafanuliwa na data itatumwa kwenye kituo cha sasa.1-14 ni njia halali ambazo ni sawa na kifaa cha ndani peerInfo.encrypt = uwongo; // haijasimbwa fiche // Ongeza kifaa kwenye orodha ya vifaa vilivyooanishwa ikiwa (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("Imeshindwa kuongeza rika"); kurudi; } esp_now_register_recv_cb (OnDataRecv); // piga kazi OnDataRecv baada ya kupokea data ya ESPNOW send_data (); } kitanzi batili () {} batili send_data () {Serial.println ("Kutuma"); // Weka maadili ya kutuma strcpy (myData.a, "HII NDIO CHAR"); // kuokoa "HII NI CHAR" kutofautisha "data" yangu iliyoainishwa mapema myData.b = nasibu (1, 20); // kuokoa thamani ya nasibu myData.c = 1.2; // kuokoa kuelea myData.d = "ESP32"; // kuokoa kamba myData.e = uwongo; // kuokoa bool // Tuma data chini ya au sawa 250 ka kupitia ESP-SASA na kurudisha hali yake esp_err_t matokeo = esp_now_send (BroadcastAddress, (uint8_t *) & myData, sizeof (myData)); ikiwa (matokeo == ESP_OK) {Serial.println ("Imetumwa na mafanikio");} mwingine {Serial.println ("Kosa la kutuma data"); }}
Nambari ya ESP8266
// Ongeza maktaba muhimu
#jumuisha // Kuongeza Uwezo wa Wifi kwenye ESP32 # pamoja na // Kupata esp sasa inafanya kazi // kuokoa Anwani ya MAC katika safu iliyoitwa BroadcastAddress; uint8_t matangazoAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; / * fafanua aina za data za anuwai anuwai na zilizopewa jina lote kama muundo_message * / typedef struct struct_message {char a [32]; int b; kuelea c; Kamba d; bool e; } muundo_message; // Tengeneza ujumbe_maumbile unaoitwa myData struct_message myData; // kazi inayoitwa data inapopokelewa na kuichapisha batili OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print ("Baiti imepokea:"); Serial.println (len); Serial.print ("Char:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); Serial.print ("Kuelea:"); Serial.println (myData.c); Serial.print ("Kamba:"); Serial.println (myData.d); Serial.print ("Bool:"); Serial.println (myData.e); Serial.println (); tuma_data (); } batili OnDataSent (uint8_t * mac_addr, uint8_t sendStatus) {Serial.print ("\ r / nHali ya Kutuma Pakiti ya Mwisho: / t"); Serial.println (sendStatus == 1? "Mafanikio ya Uwasilishaji": "Kushindwa kwa Uwasilishaji"); ikiwa (sendStatus! = 1) {send_data (); }} batili send_data () {// Weka maadili ya kutuma strcpy (myData.a, "HII NI CHAR"); // kuokoa "HII NI CHAR" kutofautisha "data" yangu iliyoainishwa mapema myData.b = nasibu (1, 20); // kuokoa thamani ya nasibu myData.c = 1.2; // kuokoa kuelea myData.d = "ESP8266"; // kuokoa kamba myData.e = uwongo; // kuokoa bool esp_now_send (BroadcastAddress, (uint8_t *) & myData, sizeof (myData)); } usanidi batili () {// Weka kiwango cha baud cha mawasiliano ya serial na ESP Serial.begin (115200); // Weka kifaa kama Kituo cha Wi-Fi WiFi.mode (WIFI_STA); // Huanzisha wifi // Init ESP-SASA na kurudisha hali yake ikiwa (esp_now_init ()! = 0) {Serial.println ("Kosa la kuanzisha ESP-SASA"); kurudi; } ikiwa (esp_now_add_peer (BroadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println ("Imeshindwa kuongeza rika"); kurudi; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Inafafanua jukumu la esp esp_now_register_recv_cb (OnDataRecv); // piga kazi OnDataRecv baada ya kupokea data ya ESPNOW} kitanzi batili () {}
Hatua ya 8: MAREJELEO
Mfano wa ESPNOW_32_
Mfano wa ESPNOW_8266
WIFI.h
ESP8266WiFi.h
esp_now.h kwa ESP8266
esp_now.h kwa ESP32
esp_now hati rasmi (Ufafanuzi Bora wa kazi)
Mwongozo rasmi wa ESP-SASA
Ilipendekeza:
Jinsi ya Kutengeneza Mazungumzo ya Siri Kutumia Kidogo Kidogo: Hatua 9
Jinsi ya Kutengeneza Mawasiliano ya Siri Kutumia Kidogo Kidogo: Nilivutiwa na 'mashine zingine' wewe bomba chanal. Hapa nilichopata kutoka -https: //youtu.be/mqlMo4LbfKQHaya hapa niliongeza kwenye onyesho langu la kibinafsi - LCD kwa benki zingine ndogo ndogo za nguvu- Nambari ya ziada kwake
Nilitengeneza CD ya Zamani ya Kuingia ndani ya Wifi Robot Kutumia Nodemcu, L298N Motor Drive na mengi Zaidi: Hatua 5
Niliunda Dereva wa CD ya Zamani ndani ya Wifi Robot Kutumia Nodemcu, L298N Motor Drive na mengi Zaidi: VX Robotic & Elektroniki Sasa
Jinsi ya kutengeneza gari inayodhibitiwa kwa mbali kupitia Bluetooth: Hatua 4
Jinsi ya kutengeneza gari inayodhibitiwa kwa njia ya rununu kupitia Bluetooth: Jinsi ya Kutengeneza Gari ya Kidhibiti cha Kijijini kupitia Bluetooth | Maisha ya HindiHacker
Jinsi ya kutumia ESP32 Kudhibiti LED na Blynk Kupitia WiFi: Hatua 7 (na Picha)
Jinsi ya kutumia ESP32 Kudhibiti LED na Blynk Via WiFi: Mafunzo haya yatatumia bodi ya maendeleo ya ESP32 kudhibiti LED na Blynk kupitia WiFi. Blynk ni Jukwaa na programu za iOS na Android kudhibiti Arduino, Raspberry Pi na vipendwa kwenye mtandao. Ni dashibodi ya dijiti ambapo unaweza kujenga
Jinsi ya kutengeneza Chaja yako ya gari ya USB kwa IPod yoyote au Vifaa Vingine ambavyo Vinavyotoza Kupitia USB: Hatua 10 (na Picha)
Jinsi ya Kutengeneza Chaja ya Gari yako ya USB kwa IPod yoyote au Vifaa Vingine ambavyo Vinachaji kupitia USB: Unda chaja ya gari la USB kwa iPod yoyote au Kifaa kingine kinachotoza Via USB kwa kuchanganisha pamoja adapta ya gari ambayo hutoa 5v na USB Female plug. Sehemu muhimu zaidi ya mradi huu ni kuhakikisha kuwa pato adapta ya gari uliyochagua ni bet