Orodha ya maudhui:

Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266: Hatua 8
Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266: Hatua 8

Video: Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266: Hatua 8

Video: Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266: Hatua 8
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, Novemba
Anonim
Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266
Jinsi ya kutengeneza Mazungumzo mengi ya ESP Kupitia ESP-SASA Kutumia ESP32 na ESP8266

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

Pata Anwani ya Mac Mac
Pata Anwani ya Mac Mac
Pata Anwani ya Mac Mac
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:

  1. Jumuisha esp sasa na maktaba za wifi
  2. Hifadhi anwani ya mac ya mpokeaji ESP
  3. Fafanua muundo wa data ya ujumbe tuma / pokea
  4. Kwenye usanidi, weka wifi kwenye hali ya kituo
  5. Anzisha esp_now
  6. fanya na uandikishe kazi ya kupiga simu inayoitwa baada ya kutuma na kupokea data
  7. Kwa Esp8266, fafanua jukumu lake
  8. kujiandikisha rika au mpokeaji esp
  9. 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

MAWASILIANO YA NJIA MBILI
MAWASILIANO YA NJIA MBILI
MAWASILIANO YA NJIA MBILI
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: