Мазмұны:

ESP32 және ESP8266 көмегімен ESP-NOW арқылы бірнеше ESP әңгімесін қалай жасауға болады: 8 қадам
ESP32 және ESP8266 көмегімен ESP-NOW арқылы бірнеше ESP әңгімесін қалай жасауға болады: 8 қадам

Бейне: ESP32 және ESP8266 көмегімен ESP-NOW арқылы бірнеше ESP әңгімесін қалай жасауға болады: 8 қадам

Бейне: ESP32 және ESP8266 көмегімен ESP-NOW арқылы бірнеше ESP әңгімесін қалай жасауға болады: 8 қадам
Бейне: Майнинг XDAG, Xdagger монетасының феноменалды криптосын қалай мину керектігі туралы оқулық 2024, Шілде
Anonim
ESP32 және ESP8266 көмегімен ESP-NOW арқылы бірнеше ESP әңгімесін қалай жасауға болады
ESP32 және ESP8266 көмегімен ESP-NOW арқылы бірнеше ESP әңгімесін қалай жасауға болады

Менің ағымдағы жобада маршрутизаторсыз бір -бірімен сөйлесу үшін маған бірнеше ESP қажет. Мұны істеу үшін мен ESP-NOW көмегімен ESP-те маршрутизаторсыз бір-бірімен сымсыз байланыс орнату үшін қолданатын боламын.

Жабдықтар

Мен қолданған заттар:

ESP32 DEV модулі

NODEMCU 1.0 (ESP12E модулі)

1 -қадам: Board адресін алыңыз

Board Mac мекенжайын алыңыз
Board Mac мекенжайын алыңыз
Board Mac мекенжайын алыңыз
Board Mac мекенжайын алыңыз

ESP-now арқылы ESP құрылғылары бірегей адреске деректерді жіберу арқылы бір-бірімен сөйлеседі, ал қазір esp-ті интуициялау кезінде жасалған ішкі кіру нүктесі желісіне қосылған.. Осылайша, әр құрылғының MAC мекенжайын анықтаңыз. Менің ESP32 және ESP8266 тақталар тақтасы бекітілген

ESP32 үшін

#«WiFi.h» қосу // ESP32 WIFI мүмкіндіктеріне қол жеткізу үшін

void setup () {Serial.begin (115200); Serial.print («ESP32 тақтасының MAC мекенжайы:»); Serial.println (WiFi.macAddress ()); // өзінің MAC мекенжайын басып шығарады} void loop () {}

ESP8266 үшін

#include // ESP8266 WIFI мүмкіндіктеріне қол жеткізу үшін пайдаланылатын кітапхана

void setup () {Serial.begin (115200); Serial.println (); Serial.print («ESP8266 тақтасының MAC мекенжайы:»); Serial.println (WiFi.macAddress ()); // өзінің MAC мекенжайын басып шығарады} void loop () {}

Менің MAC адресім:

  • ESP32 - 30: AE: A4: F5: 03: A4
  • ESP8266: A4: CF: 12: C7: 9C: 77

2-қадам: ESP-NOW қалай жұмыс істейді

Міне, оны қалай жасауға болатыны туралы шолу:

  1. Қазір esp пен wifi кітапханаларын қосыңыз
  2. ESP алушының мак -мекен -жайын сақтаңыз
  3. Жіберілген/алынған хабардың деректер құрылымын анықтаңыз
  4. Орнатуда wifi -ды станция режиміне қойыңыз
  5. Esp_now іске қосыңыз
  6. деректерді жібергеннен және қабылдағаннан кейін қоңырау шалу функциясын жасау және тіркеу
  7. Esp8266 үшін оның рөлін анықтаңыз
  8. құрдасын немесе алушыны тіркеңіз esp
  9. Деректерді жіберу

3-қадам: ESP-NOW ФУНКЦИЯЛАРЫ (ESP32)

esp_now_init (жарамсыз)

Қайту:

  • ESP_OK: табысқа жету
  • ESP_ERR_ESPNOW_INTERNAL: Ішкі қате

Сипаттама:

ESPNOW функциясын іске қосыңыз

esp_now_register_send_cb (cb)

Қайтарулар:

  • ESP_OK: табысқа жету
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW инициализацияланбаған
  • ESP_ERR_ESPNOW_INTERNAL: ішкі қате

Параметрлер:

  • cb: осы параметрлермен ESPNOW деректерін жібергеннен кейін кері шақыру функциясының атауы:

    • жарамсыз cb (const uint8_t *mac_addr, esp_now_send_status_t күйі)

      • mac_addr: қабылдағыштың мекен -жайы
      • күй:

        • 1 = сәттілік
        • 0 = сәтсіздік

Сипаттама:

ESPNOW деректерін жібергеннен кейін OnDataSent функциясына қоңырау шалыңыз

esp_now_add_peerconst esp_now_peer_info_t *құрдасы)

Қайтарулар:

  • ESP_OK: табысқа жету
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW инициализацияланбаған
  • ESP_ERR_ESPNOW_ARG: жарамсыз аргумент
  • ESP_ERR_ESPNOW_FULL: құрдастар тізімі толы
  • ESP_ERR_ESPNOW_NO_MEM: жадта жоқ
  • ESP_ERR_ESPNOW_EXIST: теңдесі бар

Параметрлер:

  • peer: теңдестірілген ақпарат келесі деректермен:

    • uint8_t

      peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW тең MAC мекенжайы - бұл станцияның немесе бағдарламаның MAC мекенжайы

    • uint8_t lmk [ESP_NOW_KEY_LEN]

      ESPNOW деректерді шифрлау үшін пайдаланылатын жергілікті басты кілт

    • uint8_t арнасы

      ESPNOW деректерін жіберу/алу үшін құрдастары қолданатын Wi-Fi арнасы. Егер мән 0 болса, станция немесе бағдарламалық жасақтама қосылған ағымдағы арнаны пайдаланыңыз. Әйтпесе, оны станция немесе бағдарламалық құрал қосылатын арна ретінде орнату керек

    • wifi_interface_t ifidx

      ESPNOW деректерін жіберу/алу үшін құрдасы қолданатын Wi-Fi интерфейсі

    • bool шифры

      Бұл құрбы жіберетін/алатын ESPNOW деректері шифрланған немесе жоқ

    • void *priv

      ESPNOW жеке деректері

Сипаттама:

Құрдастар тізіміне құрдастарды қосыңыз

esp_now_send (const uint8_t *peer_addr, const uint8_t *деректер, size_t len)

Қайтарулар:

  • ESP_OK: табысқа жету
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW инициализацияланбаған
  • ESP_ERR_ESPNOW_ARG: жарамсыз аргумент
  • ESP_ERR_ESPNOW_INTERNAL: ішкі қате
  • ESP_ERR_ESPNOW_NO_MEM: жадта жоқ
  • ESP_ERR_ESPNOW_NOT_FOUND: теңдесі табылмады
  • ESP_ERR_ESPNOW_IF: ағымдағы WiFi интерфейсі құрбыға сәйкес келмейді

Параметрлер:

  • peer_addr: тең MAC мекенжайы
  • деректер: жіберілетін деректер
  • len: деректер ұзындығы

Сипаттама:

ESPNOW деректерін жіберу. Кейбір жағдайларда бұл орын алады:

  • Егер peer_addr NULL болмаса, деректерді MAC мекенжайы peer_addr сәйкес келетін құрбысына жіберіңіз
  • Егер peer_addr NULL болса, деректерді тең тізімге қосылған барлық құрдастарға жіберіңіз
  • Деректердің максималды ұзындығы ESP_NOW_MAX_DATA_LEN -ден аз болуы тиіс
  • Деректер аргументі көрсеткен буфер esp_now_send қайтарғаннан кейін жарамды болуын қажет етпейді

esp_now_register_recv_cb (cb)

Қайтарулар:

  • ESP_OK: табысқа жету
  • ESP_ERR_ESPNOW_NOT_INIT: ESPNOW инициализацияланбаған
  • ESP_ERR_ESPNOW_INTERNAL: ішкі қате

Параметрлер:

  • cb: ESPNOW деректерін алуға арналған кері шақыру функциясы

    • void cb (const uint8_t *mac_addr, const uint8_t *деректер, int data_len)

      • mac_addr:

        алушының Mac мекенжайы

      • *мәліметтер:

        мәліметтерді қабылдау

      • data_len

        деректер байтының ұзындығы

Сипаттама:

ESPNOW деректерін алғаннан кейін cb функциясына қоңырау шалыңыз

4-қадам: ESP-NOW ФУНКЦИЯЛАРЫ (ESP8266)

ФУНКЦИЯЛАРДЫҢ СИПАТТАМАСЫ ESP32 ESP8266

int esp_now_init (жарамсыз)

Қайтарулар:

  • 1 = сәттілік
  • 0 = сәтсіздік

Сипаттама

ESPNOW функциясын іске қосыңыз

int esp_now_set_self_role (u8 рөлі)

Параметрлер:

  • ESP_NOW_ROLE_IDLE: деректерді жіберуге рұқсат жоқ.
  • ESP_NOW_ROLE_CONTROLLER: Sation интерфейсіне басымдық беріледі
  • ESP_NOW_ROLE_SLAVE: SoftAP интерфейсіне басымдық беріледі
  • ESP_NOW_ROLE_COMBO: SoftAPinterface басымдығы беріледі

Сипаттама

Құрылғының рөлін орнатады

int esp_now_register_send_cb (cb)

Қайтарулар:

  • 1 = сәттілік
  • 0 = сәтсіздік

Параметрлер:

  • cb: осы параметрлермен ESPNOW деректерін жібергеннен кейін кері шақыру функциясының атауы:

    • жарамсыз cb (const uint8_t *mac_addr, esp_now_send_status_t күйі)

      • mac_addr: қабылдағыштың мекен -жайы
      • күй:

        • 1 = сәттілік
        • 0 = сәтсіздік

Сипаттама

ESPNOW деректерін жібергеннен кейін OnDataSent функциясына қоңырау шалыңыз

int esp_now_add_peer (u8 *mac_addr, u8 рөлі, u8 арнасы, u8 *пернесі, u8 key_len)

Қайтарулар:

  • 1 = сәттілік
  • 0 = сәтсіздік

Параметрлер:

  • mac_addr

    құрбысының Mac мекенжайы

  • рөлі
  • арна

    Егер мән 0 болса, станция немесе бағдарламалық жасақтама қосылған ағымдағы арнаны пайдаланыңыз. Әйтпесе, оны станция немесе бағдарламалық құрал қосылатын арна ретінде орнату керек

  • *кілт

    шифрлау кілті

  • key_len

    кілт ұзындығы

Сипаттама:

Құрдастар тізіміне құрдастарды қосыңыз

int esp_now_send (const uint8_t *peer_addr, const uint8_t *деректер, size_t len)

Қайтарулар:

  • 1 = сәттілік
  • 0 = сәтсіздік

Параметрлер:

  • peer_addr: тең MAC мекенжайы
  • деректер: жіберілетін деректер
  • len: деректер ұзындығы

Сипаттама:

ESPNOW деректерін жіберу. Кейбір жағдайларда бұл орын алады:

  • Егер peer_addr NULL болмаса, деректерді MAC мекенжайы peer_addr сәйкес келетін құрбысына жіберіңіз
  • Егер peer_addr NULL болса, деректерді тең тізімге қосылған барлық құрдастарға жіберіңіз
  • Деректердің максималды ұзындығы ESP_NOW_MAX_DATA_LEN -ден аз болуы тиіс
  • Деректер аргументі көрсеткен буфер esp_now_send қайтарғаннан кейін жарамды болуын қажет етпейді

int esp_now_register_recv_cb (cb)

Қайтарулар:

  • 1 = сәттілік
  • 0 = сәтсіздік

Параметрлер:

  • cb: ESPNOW деректерін алуға арналған кері шақыру функциясы

    • void cb (const uint8_t *mac_addr, const uint8_t *деректер, int data_len)

      • mac_addr:

        алушының Mac мекенжайы

      • *мәліметтер:

        мәліметтерді қабылдау

      • data_len

        деректер байтының ұзындығы

Сипаттама:

ESPNOW деректерін алғаннан кейін cb функциясына қоңырау шалыңыз

5 -қадам: Бір жақты байланыс (ESP32 жіберуші ретінде)

ESP32 деректерді ESP8266 жібереді. осы кодпен. BroadcastAddress қабылдағышының Mac мекен -жайына өзгертіңіз. Менікі A4: CF: 12: C7: 9C: 77 болды

// Қажетті кітапханаларды қосыңыз

#include // esp енді функцияларына кіру үшін #include // ESP32 -де Wifi мүмкіндіктерін қосу үшін // MAC мекен -жайын yayınдік мекенжай деп аталатын массивте сақтаңыз; uint8_t yayımAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // менің қабылдағыштың MAC мекенжайы/*көптеген айнымалылардың деректер түрлерін анықтайды және олардың барлығын struct_message деп өзгертеді*/typedef struct struct_message {char a [32]; int b; қалқыма c; D жолы; бол; } struct_message; // myData struct_message деп аталатын struct_message жасаңыз; // функция дерексіз күйді басып шығару үшін OnDataSent жіберілген кезде шақырылады (const uint8_t *mac_addr, esp_now_send_status_t күйі) {Serial.print («\ r / nСоңғы пакеттік жіберу күйі: / t»); Serial.println (status == ESP_NOW_SEND_SUCCESS? «Жеткізу сәтті»: «Жеткізілмеді»); } void setup () {// ESP Serial.begin (115200) сериялы байланыс үшін жіберу жылдамдығын орнату; // Құрылғыны Wi-Fi станциясының WiFi режимі ретінде орнату (WIFI_STA); // Wi-Fi қосылады // ESP-NOW қосады және оның күйін қайтарады, егер (esp_now_init ()! = ESP_OK) {Serial.println («ESP инициализациялау қатесі -ҚАЗІР «); қайтару; } // ESPNOW деректерін жібергеннен кейін OnDataSent функциясына қоңырау шалыңыз esp_now_register_send_cb (OnDataSent); // pe_Inow_peer_info_t peerInfo -ға тіркелу; // инициализациялау және теңдестірілген ақпаратты addres memcpy -ге көрсеткіш ретінде тағайындау (peerInfo.peer_addr,roadAddress, 6); // peerInfo.peer_addr peerInfo.channel = 0 -ге 6 байт бар radioAddress мәнін көшіру; // esp сөйлейтін арна. 0 анықталмаған дегенді білдіреді және деректер ағымдағы арнаға жіберіледі. 1-14-бұл жергілікті құрылғы peerInfo.encrypt = false сияқты жарамды арналар; // шифрланбаған // Құрылғыны жұпталған құрылғылар тізіміне қосыңыз, егер (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println («Тең құрама қосылмады»); қайтару; }} void loop () {// strcpy жіберу үшін мәндерді орнатыңыз (myData.a, «Бұл - CHAR»); // «THIS IS CHAR» сақтаңыз «myData.b = random (1, 20) бұрын анықталған менің» деректерімнің «a айнымалысына; // кездейсоқ мәнді сақтау myData.c = 1.2; // float сақтау myData.d = «Сәлеметсіз бе»; // жолды сақтау myData.e = false; // bool сақтау // ESP-NOW арқылы 250 байттан аз немесе тең деректерді жіберу және оның күйін қайтарады esp_err_t result = esp_now_send (roadAddress, (uint8_t *) & myData, sizeof (myData)); if (нәтиже == ESP_OK) {Serial.println («Сәтті жіберілді»); } else {Serial.println («Деректерді жіберу қателігі»); } кешіктіру (2000 ж.); }

ESP8266 осы кодты қолдана отырып ESP32 деректерін алады.

// Қажетті кітапханаларды қосыңыз

#include // Wifi мүмкіндіктерін ESP32 -ге қосу үшін #include // esp -ке енді кіру үшін функциялары /*құрылымдалған және оның барлығын struct_message* /typedef struct struct_message {char a [32] деп өзгертілген көптеген айнымалылардың деректер түрлерін анықтайды; int b; қалқыма c; D жолы; бол; } struct_message; // myData struct_message деп аталатын struct_message айнымалысын жасаңыз myData; // функция қабылданды және оны басып шығарған кезде шақырылады OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print («Байттар алынды:»); 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 («Жол:»); Serial.println (myData.d); Serial.print («Bool:»); Serial.println (myData.e); Serial.println (); } void setup () {// ESP Serial.begin (115200) арқылы сериялық байланыс үшін жіберу жылдамдығын орнатыңыз; // Құрылғыны Wi-Fi Station WiFi.mode (WIFI_STA) ретінде орнату; // Wi-Fi қосылады // ESP-NOW Init және оның күйін қайтарады, егер (esp_now_init ()! = 0) {Serial.println («ESP-NOW инициализациялау қатесі»); қайтару; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // Бұл esp esp_now_register_recv_cb (OnDataRecv) рөлін анықтайды; // ESPNOW деректерін алғаннан кейін OnDataRecv функциясын шақырыңыз} void loop () {}

6 -қадам: Бір жақты байланыс (ESP8266 жіберуші ретінде)

ESP8266 ESP32 деректерді жібереді. осы кодпен. BroadcastAddress қабылдағышының Mac мекен -жайына өзгертіңіз. Менің esp32 мекен -жайым 30: AE: A4: F5: 03: A4. Esp8266 үшін басқа функциялар үшін осында өтіңіз

// Қажетті кітапханаларды қосыңыз

#include // ESP32 -де Wifi мүмкіндіктерін қосу үшін #include // esp -ке енді кіру үшін функциялары // MAC -адресті radioAddress деп аталатын массивте сақтаңыз; uint8_t yayımAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*көптеген айнымалылардың деректер түрлерін құрылымдап, олардың барлығын struct_message деп атады*/ typedef struct struct_message {char a [32]; int b; қалқыма c; D жолы; bool e; } struct_message; // myData struct_message деп аталатын құрылымдық айнымалы жасау myData; // функция жіберілген кезде шақырылады және оның күйін жарамсыз OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print («\ r / nСоңғы пакеттік жіберу күйі: / t»); Serial.println (sendStatus == 1? «Жеткізу табысы»: «Жеткізілмеді»); } void setup () {// ESP Serial.begin (115200) арқылы сериялық байланыс үшін жіберу жылдамдығын орнатыңыз; // Құрылғыны Wi-Fi Station WiFi.mode (WIFI_STA) ретінде орнату; // Wi-Fi қосылады // ESP-NOW қосады және оның күйін қайтарады, егер (esp_now_init ()) {Serial.println («ESP-NOW инициализациялау қатесі»)); қайтару; } esp_now_register_send_cb (OnDataSent); // ESPNOW деректерін жібергеннен кейін OnDataSent функциясына қоңырау шалыңыз // құрылғыны жұптастырылған құрылғылар тізіміне қосыңыз, егер (esp_now_add_peer (yayımAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println («тең құраушы қосылмады»); қайтару; }} void loop () {// strcpy жіберу үшін мәндерді орнатыңыз (myData.a, «Бұл - CHAR»); // «THIS IS CHAR» сақтаңыз «myData.b = random (1, 20) бұрын анықталған менің» деректерімнің «a айнымалысына; // кездейсоқ мәнді сақтау myData.c = 1.2; // float сақтау myData.d = «SP8266»; // жолды сақтау myData.e = false; // bool сақтау // ESP-NOW арқылы 250 байттан аз немесе тең деректерді жіберу және оның күйін қайтарады int result = esp_now_send (roadAddress, (uint8_t *) & myData, sizeof (myData)); if (esp_now_init ()! = 0) {Serial.println («Сәтті жіберілді»); } else {Serial.println («Деректерді жіберу қателігі»); } кешіктіру (2000 ж.); }

ESP32 ESP8266 деректерін алады. осы кодпен. Басқа функциялар үшін осында төрелік етеді

// Қажетті кітапханаларды қосыңыз

#include // esp енді кіру функциялары #include // ESP32 -де Wifi мүмкіндіктерін қосу үшін**құрылымдалған және оның барлығын struct_message* /typedef struct struct_message {char a [32] деп өзгертілген көптеген айнымалылардың деректер түрлерін анықтаңыз; int b; қалқыма c; D жолы; бол; } struct_message; // myData struct_message деп аталатын struct_message айнымалысын жасаңыз myData; // функция қабылданды және оны басып шығарғанда шақырылады OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print («Байттар алынды:»); 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 («Жол:»); Serial.println (myData.d); Serial.print («Bool:»); Serial.println (myData.e); Serial.println (); } void setup () {// ESP Serial.begin (115200) арқылы сериялық байланыс үшін жіберу жылдамдығын орнатыңыз; // Құрылғыны Wi-Fi Station WiFi.mode (WIFI_STA) ретінде орнату; // Wi-Fi қосылады // InSP ESP-NOW және оның күйін қайтарады, егер (esp_now_init ()! = 0) {Serial.println («ESP-NOW инициализациялау қатесі»); қайтару; } esp_now_register_recv_cb (OnDataRecv); // ESPNOW деректерін алғаннан кейін OnDataRecv функциясын шақырыңыз} void loop () {}

7 -қадам: ЕКІ ТАРАҚТЫ БАЙЛАНЫС

ҚОСЫМША ЕКІ ЖОЛ
ҚОСЫМША ЕКІ ЖОЛ
ЕКІ ТАРАҚТЫ БАЙЛАНЫС
ЕКІ ТАРАҚТЫ БАЙЛАНЫС

ESP32 іске қосу туралы деректерді ESP8266 -ға жібереді. ESP8266 алынған хабарды басып шығарады, содан кейін жауаптары ESP32 өзінің сериялық мониторында басып шығарады.

ESP32 КОДЫ

// Қажетті кітапханаларды қосыңыз

#include // esp енді функцияларына кіру үшін #include // ESP32 -де Wifi мүмкіндіктерін қосу үшін // MAC мекенжайын yayınдік мекенжай деп аталатын массивте сақтаңыз; uint8_t yayımAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // менің қабылдағыштың MAC мекенжайы/*көптеген айнымалылардың деректер түрлерін анықтайды және олардың барлығын struct_message деп өзгертеді*/typedef struct struct_message {char a [32]; int b; қалқыма c; D жолы; бол; } struct_message; // myData struct_message деп аталатын struct_message жасаңыз; // функция дерексіз күйді басып шығару үшін OnDataSent жіберілген кезде шақырылады (const uint8_t *mac_addr, esp_now_send_status_t күйі) {Serial.print («\ r / nСоңғы пакеттік жіберу күйі: / t»); Serial.println (status == ESP_NOW_SEND_SUCCESS? «Жеткізу сәтті»: «Жеткізілмеді»); if (status! = ESP_NOW_SEND_SUCCESS) {send_data ();}} OnDataRecv жарамсыз (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print («Байттар алынды:»); 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 («Жол:»); Serial.println (myData.d); Serial.print («Bool:»); Serial.println (myData.e); Serial.println (); } void setup () {// ESP Serial.begin (115200) сериялы байланыс үшін жіберу жылдамдығын орнату; // Құрылғыны Wi-Fi Station WiFi режимі ретінде орнату (WIFI_STA); // Wi-Fi қосылады // ESP-NOW қосады және оның күйін қайтарады, егер (esp_now_init ()! = ESP_OK) {Serial.println («ESP инициализациялау қатесі -ҚАЗІР «); қайтару; } // ESPNOW деректерін жібергеннен кейін OnDataSent функциясына қоңырау шалыңыз esp_now_register_send_cb (OnDataSent); // pe_Inow_peer_info_t peerInfo -ға тіркелу; // инициализациялау және теңдестірілген ақпаратты addres memcpy көрсеткіші ретінде тағайындау (peerInfo.peer_addr,roadAddress, 6); // peerInfo.peer_addr peerInfo.channel = 0 -ге 6 байт бар radioAddress мәнін көшіріңіз; // esp сөйлейтін арна. 0 анықталмаған дегенді білдіреді және деректер ағымдағы арнаға жіберіледі.1-14-бұл жергілікті құрылғы peerInfo.encrypt = false сияқты жарамды арналар; // шифрланбаған // Құрылғыны жұпталған құрылғылар тізіміне қосыңыз, егер (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println («Тең құрама қосылмады»); қайтару; } esp_now_register_recv_cb (OnDataRecv); // ESPNOW деректерін send_data () алғаннан кейін OnDataRecv функциясына қоңырау шалыңыз; } void loop () {} void send_data () {Serial.println («Жіберу»); // strcpy жіберу үшін мәндерді орнатыңыз (myData.a, «Бұл - CHAR»); // «THIS IS CHAR» сақтаңыз «myData.b = random (1, 20) бұрын анықталған менің» деректерімнің «a айнымалысына; // кездейсоқ мәнді сақтау myData.c = 1.2; // float сақтау myData.d = «ESP32»; // жолды сақтау myData.e = false; // bool сақтау // ESP-NOW арқылы 250 байттан аз немесе тең деректерді жіберу және оның күйін қайтарады esp_err_t result = esp_now_send (roadAddress, (uint8_t *) & myData, sizeof (myData)); if (нәтиже == ESP_OK) {Serial.println («Сәтті жіберілді»);} else {Serial.println («Деректерді жіберу қатесі»); }}

ESP8266 коды

// Қажетті кітапханаларды қосыңыз

#include // ESP32 -де Wifi мүмкіндіктерін қосу үшін #include // esp -ке енді кіру үшін функциялары // MAC -адресті radioAddress деп аталатын массивте сақтаңыз; uint8_t yayımAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*көптеген айнымалылардың деректер түрлерін құрылымдап, олардың барлығын struct_message деп атады*/ typedef struct struct_message {char a [32]; int b; қалқыма c; D жолы; бол; } struct_message; // myData struct_message деп аталатын struct_message айнымалысын жасаңыз myData; // функция қабылданды және оны басып шығарған кезде шақырылады OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); Serial.print («Байттар алынды:»); 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 («Жол:»); Serial.println (myData.d); Serial.print («Bool:»); Serial.println (myData.e); Serial.println (); send_data (); } void OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print («\ r / nСоңғы пакеттің жіберу күйі: / t»); Serial.println (sendStatus == 1? «Жеткізу табысы»: «Жеткізілмеді»); if (sendStatus! = 1) {send_data (); }} void send_data () {// strcpy жіберуге мәндерді орнатыңыз (myData.a, «Бұл - CHAR»); // «THIS IS CHAR» сақтаңыз «myData.b = random (1, 20) бұрын анықталған менің» деректерімнің «a айнымалысына; // кездейсоқ мәнді сақтау myData.c = 1.2; // float сақтау myData.d = «ESP8266»; // жолды сақтау myData.e = false; // сақтауды сақтаңыз esp_now_send (roadAddress, (uint8_t *) & myData, sizeof (myData)); } void setup () {// ESP Serial.begin (115200) сериялы байланыс үшін жіберу жылдамдығын орнату; // Құрылғыны Wi-Fi Station WiFi.mode (WIFI_STA) ретінде орнату; // Wi-Fi қосылады // InSP ESP-NOW және оның күйін қайтарады, егер (esp_now_init ()! = 0) {Serial.println («ESP-NOW инициализациялау қатесі»); қайтару; } if (esp_now_add_peer (roadAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0)) {Serial.println («Тең құрама қосылмады»); қайтару; } esp_now_set_self_role (ESP_NOW_ROLE_COMBO); esp_now_register_send_cb (OnDataSent); esp_now_set_self_role (ESP_NOW_ROLE_COMBO); // Бұл esp esp_now_register_recv_cb (OnDataRecv) рөлін анықтайды; // ESPNOW деректерін алғаннан кейін OnDataRecv функциясын шақырыңыз} void loop () {}

8 -қадам: ӘДЕБИЕТТЕР

ESPNOW_32_Мысалы

ESPNOW_8266 Мысал

WIFI.h

ESP8266WiFi.h

esp_now.h ESP8266 үшін

esp_now.h ESP32 үшін

esp_now ресми құжаты (функцияларды жақсырақ түсіндіру)

ESP-NOW ресми нұсқаулығы

Ұсынылған: