সুচিপত্র:

কিভাবে ESP32 এবং ESP8266 ব্যবহার করে ESP-Now এর মাধ্যমে একাধিক ESP টক তৈরি করবেন: 8 টি ধাপ
কিভাবে ESP32 এবং ESP8266 ব্যবহার করে ESP-Now এর মাধ্যমে একাধিক ESP টক তৈরি করবেন: 8 টি ধাপ

ভিডিও: কিভাবে ESP32 এবং ESP8266 ব্যবহার করে ESP-Now এর মাধ্যমে একাধিক ESP টক তৈরি করবেন: 8 টি ধাপ

ভিডিও: কিভাবে ESP32 এবং ESP8266 ব্যবহার করে ESP-Now এর মাধ্যমে একাধিক ESP টক তৈরি করবেন: 8 টি ধাপ
ভিডিও: ESP32 Tutorial 4 - Data types Define Variable Int, bool, char, Serial Monitor-ESP32 IoT Learnig kit 2024, জুলাই
Anonim
কিভাবে ESP32 এবং ESP8266 ব্যবহার করে ESP-NOW এর মাধ্যমে একাধিক ESP টক তৈরি করবেন
কিভাবে ESP32 এবং ESP8266 ব্যবহার করে ESP-NOW এর মাধ্যমে একাধিক ESP টক তৈরি করবেন

আমার চলমান প্রকল্পে, রাউটার ছাড়া একে অপরের সাথে কথা বলার জন্য আমার একাধিক ESP প্রয়োজন। এটি করার জন্য, আমি ইএসপি-তে রাউটার ছাড়াই একে অপরের সাথে ওয়্যারলেস যোগাযোগ করতে ইএসপি-এখন ব্যবহার করব।

সরবরাহ

আমি যে জিনিসগুলি ব্যবহার করেছি:

ESP32 DEV মডিউল

NODEMCU 1.0 (ESP12E মডিউল)

ধাপ 1: বোর্ড ম্যাক ঠিকানা পান

বোর্ড ম্যাক ঠিকানা পান
বোর্ড ম্যাক ঠিকানা পান
বোর্ড ম্যাক ঠিকানা পান
বোর্ড ম্যাক ঠিকানা পান

এখন ইএসপি-র মাধ্যমে, ইএসপি ডিভাইসগুলি তাদের অনন্য ঠিকানায় ডেটা প্রেরণ করে একে অপরের সাথে কথা বলছে, যখন এখনই এসএসপি চালিত করার জন্য তৈরি একটি অভ্যন্তরীণ অ্যাক্সেস পয়েন্ট নেটওয়ার্কের সাথে সংযুক্ত। । সুতরাং, প্রতিটি ডিভাইসের MAC ঠিকানা নির্ধারণ করুন আমার ESP32 এবং ESP8266 বোর্ড সেটিংস সংযুক্ত

ESP32 এর জন্য

#অন্তর্ভুক্ত করুন "WiFi.h" // ESP32 WIFI ক্ষমতাগুলি অ্যাক্সেস করতে

অকার্যকর সেটআপ () {Serial.begin (115200); Serial.print ("ESP32 বোর্ড MAC ঠিকানা:"); Serial.println (WiFi.macAddress ()); // তার MAC Address} void loop () {} প্রিন্ট করে

ESP8266 এর জন্য

#অন্তর্ভুক্ত // লাইব্রেরি ESP8266 WIFI ক্ষমতা অ্যাক্সেস করতে ব্যবহৃত হয়

অকার্যকর সেটআপ () {Serial.begin (115200); Serial.println (); Serial.print ("ESP8266 বোর্ড MAC ঠিকানা:"); Serial.println (WiFi.macAddress ()); // তার MAC Address} void loop () {} প্রিন্ট করে

আমার ম্যাক ঠিকানা হল:

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

ধাপ 2: কিভাবে ESP- এখন কাজ করতে হয়

এটি কিভাবে কাজ করতে হয় তার একটি সংক্ষিপ্ত বিবরণ:

  1. এখন esp এবং ওয়াইফাই লাইব্রেরি অন্তর্ভুক্ত করুন
  2. প্রাপকের ইএসপি ম্যাক ঠিকানা সংরক্ষণ করুন
  3. পাঠানো/প্রাপ্ত বার্তার তথ্য কাঠামো নির্ধারণ করুন
  4. সেটআপে, ওয়াইফাইকে স্টেশন মোডে সেট করুন
  5. Esp_now শুরু করুন
  6. ডেটা প্রেরণ এবং গ্রহণের পরে কল ব্যাক ব্যাক ফাংশনটি তৈরি করুন এবং নিবন্ধন করুন
  7. Esp8266 এর জন্য, এর ভূমিকা নির্ধারণ করুন
  8. পিয়ার বা প্রাপক esp নিবন্ধন করুন
  9. তথ্য পাঠান

ধাপ 3: ESP- এখন ফাংশন (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 ডেটা পাঠানোর পরে কলব্যাক ফাংশনের নাম:

    • void cb (const uint8_t *mac_addr, esp_now_send_status_t status)

      • mac_addr: রিসিভারের ম্যাক ঠিকানা
      • অবস্থা:

        • 1 = সাফল্য
        • 0 = ব্যর্থ

বর্ণনা:

ESPNOW ডেটা পাঠানোর পর OnDataSent ফাংশনে কল করুন

esp_now_add_peerconst esp_now_peer_info_t *peer)

রিটার্ন:

  • 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: পিয়ারের অস্তিত্ব আছে

পরামিতি:

  • পিয়ার: নিম্নলিখিত ডেটা সহ পিয়ার তথ্য:

    • uint8_t

      peer_addr [ESP_NOW_ETH_ALEN]; ESPNOW পিয়ার ম্যাক অ্যাড্রেস যা স্টেশন বা সফটপের ম্যাক অ্যাড্রেসও

    • uint8_t lmk [ESP_NOW_KEY_LEN]

      ESPNOW পিয়ার স্থানীয় মাস্টার কী যা ডেটা এনক্রিপ্ট করতে ব্যবহৃত হয়

    • uint8_t চ্যানেল

      ওয়াই-ফাই চ্যানেল যা পিয়ার ESPNOW ডেটা পাঠাতে/গ্রহণ করতে ব্যবহার করে। যদি মান 0 হয়, বর্তমান চ্যানেলটি ব্যবহার করুন কোন স্টেশন বা সফটপ চালু আছে। অন্যথায়, এটি অবশ্যই চ্যানেল হিসাবে সেট করতে হবে যে স্টেশন বা সফটপ চালু আছে।

    • wifi_interface_t ifidx

      ওয়াই-ফাই ইন্টারফেস যা পিয়ার ESPNOW ডেটা পাঠাতে/গ্রহণ করতে ব্যবহার করে

    • বুল এনক্রিপ্ট

      ESPNOW ডেটা যা এই সহকর্মী পাঠায়/গ্রহণ করে তা এনক্রিপ্ট করা হয় না

    • অকার্যকর *ব্যক্তিগত

      ESPNOW পিয়ার ব্যক্তিগত ডেটা

বর্ণনা:

পিয়ার লিস্টে পিয়ার যোগ করুন

esp_now_send (const uint8_t *peer_addr, const uint8_t *data, 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: বর্তমান ওয়াইফাই ইন্টারফেস পিয়ারের সাথে মেলে না

পরামিতি:

  • peer_addr: পিয়ার ম্যাক ঠিকানা
  • ডেটা: পাঠানোর জন্য ডেটা
  • len: ডেটার দৈর্ঘ্য

বর্ণনা:

ESPNOW ডেটা পাঠান। কিছু ক্ষেত্রে, এটি ঘটে:

  • যদি peer_addr শূন্য না হয়, সেই পিয়ারকে ডেটা পাঠান যার MAC ঠিকানা peer_addr এর সাথে মেলে
  • যদি peer_addr শূন্য হয়, পিয়ার তালিকায় যোগ করা সমস্ত সহকর্মীদের কাছে ডেটা পাঠান
  • ডেটার সর্বোচ্চ দৈর্ঘ্য 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 *data, int data_len)

      • mac_addr:

        রিসিভারের ম্যাক ঠিকানা

      • *তথ্য:

        তথ্য গ্রহণ

      • data_len

        ডেটা বাইট দৈর্ঘ্য

বর্ণনা:

ESPNOW ডেটা পাওয়ার পর ফাংশন cb এ কল করুন

ধাপ 4: ESP- এখন ফাংশন (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: অগ্রাধিকার দেওয়া হয় সেশন ইন্টারফেসকে
  • ESP_NOW_ROLE_SLAVE: SoftAP ইন্টারফেসকে অগ্রাধিকার দেওয়া হয়
  • ESP_NOW_ROLE_COMBO: SoftAPinterface কে অগ্রাধিকার দেওয়া হয়

বর্ণনা

ডিভাইসের ভূমিকা সেট করে

int esp_now_register_send_cb (cb)

রিটার্ন:

  • 1 = সাফল্য
  • 0 = ব্যর্থ

পরামিতি:

  • cb: এই পরামিতিগুলির সাথে ESPNOW ডেটা পাঠানোর পরে কলব্যাক ফাংশনের নাম:

    • void cb (const uint8_t *mac_addr, esp_now_send_status_t status)

      • mac_addr: রিসিভারের ম্যাক ঠিকানা
      • অবস্থা:

        • 1 = সাফল্য
        • 0 = ব্যর্থ

বর্ণনা

ESPNOW ডেটা পাঠানোর পর OnDataSent ফাংশনে কল করুন

int esp_now_add_peer (u8 *mac_addr, u8 role, u8 channel, u8 *key, u8 key_len)

রিটার্ন:

  • 1 = সাফল্য
  • 0 = ব্যর্থ

পরামিতি:

  • mac_addr

    সহকর্মীর ম্যাক ঠিকানা

  • ভূমিকা
  • চ্যানেল

    যদি মান 0 হয়, বর্তমান চ্যানেলটি ব্যবহার করুন কোন স্টেশন বা সফটপ চালু আছে। অন্যথায়, এটি অবশ্যই চ্যানেল হিসাবে সেট করতে হবে যে স্টেশন বা সফটপ চালু আছে

  • *চাবি

    এনক্রিপশনের জন্য কী

  • কী_লেন

    চাবির দৈর্ঘ্য

বর্ণনা:

পিয়ার লিস্টে পিয়ার যোগ করুন

int esp_now_send (const uint8_t *peer_addr, const uint8_t *data, size_t len)

রিটার্ন:

  • 1 = সাফল্য
  • 0 = ব্যর্থ

পরামিতি:

  • peer_addr: পিয়ার ম্যাক ঠিকানা
  • ডেটা: পাঠানোর জন্য ডেটা
  • len: ডেটার দৈর্ঘ্য

বর্ণনা:

ESPNOW ডেটা পাঠান। কিছু ক্ষেত্রে, এটি ঘটে:

  • যদি peer_addr শূন্য না হয়, সেই পিয়ারকে ডেটা পাঠান যার MAC ঠিকানা peer_addr এর সাথে মেলে
  • যদি peer_addr শূন্য হয়, পিয়ার তালিকায় যোগ করা সমস্ত সহকর্মীদের কাছে ডেটা পাঠান
  • ডেটার সর্বাধিক দৈর্ঘ্য 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 *data, int data_len)

      • mac_addr:

        রিসিভারের ম্যাক ঠিকানা

      • *তথ্য:

        তথ্য গ্রহণ

      • data_len

        ডেটা বাইট দৈর্ঘ্য

বর্ণনা:

ESPNOW ডেটা পাওয়ার পর ফাংশন cb এ কল করুন

ধাপ 5: ওয়ান ওয়ে কমিউনিকেশন (ইএসপি 32 প্রেরক হিসাবে)

ESP32 একটি ESP8266 এ ডেটা পাঠায়। এই কোড দিয়ে। BroadcastAddress কে আপনার কর্স্পন্ডিং রিসিভার ম্যাক ঠিকানায় পরিবর্তন করুন। আমার ছিল A4: CF: 12: C7: 9C: 77

// প্রয়োজনীয় লাইব্রেরি যোগ করুন

#অন্তর্ভুক্ত // এসপি অ্যাক্সেস করতে এখন ফাংশন #অন্তর্ভুক্ত করুন // ইএসপি 32 এ ওয়াইফাই সক্ষমতা যুক্ত করতে // ব্রডকাস্ট অ্যাড্রেস নামক একটি অ্যারেতে ম্যাক ঠিকানা সংরক্ষণ করুন; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // আমার রিসিভারের ম্যাক ঠিকানা/*একাধিক ভেরিয়েবলের স্ট্রাকচারের ডেটা টাইপ সংজ্ঞায়িত করে এবং এর সবকটি নাম পরিবর্তন করে struct_message*/typedef struct struct_message {char a [32]; int খ; ভাসা গ; স্ট্রিং ডি; বুল ই; } struct_message; // myData struct_message myData নামে একটি struct_message তৈরি করুন; // ফাংশন বলা হয় যখন ডেটা পাঠানো হয় তার স্ট্যাটাস অকার্যকর OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "ডেলিভারি সাফল্য": "ডেলিভারি ফেল"); } অকার্যকর সেটআপ () {// ESP Serial.begin (115200) এর সাথে সিরিয়াল যোগাযোগের জন্য বড রেট সেট করুন; // একটি Wi-Fi স্টেশন WiFi.mode (WIFI_STA) হিসাবে ডিভাইস সেট করুন; // ওয়াইফাই শুরু করে // Init ESP-NOW এবং তার অবস্থা প্রদান করে যদি (esp_now_init ()! = ESP_OK) {Serial.println ("ESP আরম্ভ করার সময় ত্রুটি -এখন "); প্রত্যাবর্তন; } // ESPNOW ডেটা পাঠানোর পরে OnDataSent ফাংশনটি কল করুন esp_now_register_send_cb (OnDataSent); // পিয়ার esp_now_peer_info_t peerInfo নিবন্ধন করুন; // একটি অ্যাড্রেস memcpy (peerInfo। // peerInfo.peer_addr peerInfo.channel = 0 এ 6 বাইট সহ সম্প্রচার ঠিকানাটির মান কপি করুন // চ্যানেল যেখানে esp কথা বলে। 0 মানে অনির্ধারিত এবং বর্তমান চ্যানেলে ডেটা পাঠানো হবে। 1-14 বৈধ চ্যানেল যা স্থানীয় ডিভাইস peerInfo.encrypt = false; // এনক্রিপ্ট করা হয়নি // ডিভাইসটি জোড়া ডিভাইস তালিকায় যুক্ত করুন যদি (esp_now_add_peer (& peerInfo)! = ESP_OK) {Serial.println ("পিয়ার যোগ করতে ব্যর্থ"); প্রত্যাবর্তন; }} void loop () {// strcpy (myData.a, "THIS IS A CHAR") পাঠানোর জন্য মান সেট করুন; // myData.b = এলোমেলো (1, 20) পূর্বে সংজ্ঞায়িত আমার "ডেটা" এর ভেরিয়েবল a এ "এটি একটি চার" সংরক্ষণ করুন; // একটি এলোমেলো মান সংরক্ষণ myData.c = 1.2; // একটি ভাসা myData.d = "হ্যালো" সংরক্ষণ করুন; // একটি স্ট্রিং সংরক্ষণ myData.e = মিথ্যা; // একটি বুল সংরক্ষণ করুন // ESP-NOW এর মাধ্যমে 250 বাইটের চেয়ে কম বা সমান তথ্য পাঠান এবং তার অবস্থা esp_err_t ফলাফল = esp_now_send (সম্প্রচার ঠিকানা, (uint8_t *) এবং myData, sizeof (myData)); যদি (ফলাফল == ESP_OK) {Serial.println ("সাফল্যের সাথে পাঠানো হয়েছে"); } অন্য {Serial.println ("ডেটা পাঠানোর সময় ত্রুটি"); } বিলম্ব (2000); }

ESP8266 এই কোডটি ব্যবহার করে ESP32 থেকে ডেটা গ্রহণ করে।

// প্রয়োজনীয় লাইব্রেরি যোগ করুন

#অন্তর্ভুক্ত // ইএসপি 32 তে ওয়াইফাই সক্ষমতা যোগ করতে #অন্তর্ভুক্ত করুন // এসপি এখন ফাংশন অ্যাক্সেস করতে int খ; ভাসা গ; স্ট্রিং ডি; বুল ই; } struct_message; // myData struct_message myData নামে একটি পরিবর্তনশীল struct_message তৈরি করুন; // ফাংশন বলা হয় যখন ডেটা প্রাপ্ত হয় এবং এটি প্রিন্ট করে OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); সিরিয়াল.প্রিন্ট ("বাইট প্রাপ্ত:"); Serial.println (len); সিরিয়াল.প্রিন্ট ("চর:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); সিরিয়াল.প্রিন্ট ("ফ্লোট:"); Serial.println (myData.c); সিরিয়াল.প্রিন্ট ("স্ট্রিং:"); Serial.println (myData.d); সিরিয়াল.প্রিন্ট ("বুল:"); Serial.println (myData.e); Serial.println (); } অকার্যকর সেটআপ () {// ESP Serial.begin (115200) এর সাথে সিরিয়াল যোগাযোগের জন্য বড রেট সেট করুন; // একটি Wi-Fi স্টেশন WiFi.mode (WIFI_STA) হিসাবে ডিভাইস সেট করুন; // ওয়াইফাই শুরু করে // এখনই ESP-NOW শুরু করে এবং তার অবস্থা ফিরিয়ে দেয় যদি প্রত্যাবর্তন; } esp_now_set_self_role (ESP_NOW_ROLE_SLAVE); // এই esp_now_register_recv_cb (OnDataRecv) এর ভূমিকা নির্ধারণ করে; // ESPNOW data} void loop () {} পাওয়ার পর OnDataRecv ফাংশনে কল করুন

ধাপ 6: ওয়ান ওয়ে কমিউনিকেশন (প্রেরক হিসাবে ESP8266)

ESP8266 একটি ESP32 তে ডেটা পাঠায়। এই কোড দিয়ে। BroadcastAddress কে আপনার কর্স্পন্ডিং রিসিভার ম্যাক ঠিকানায় পরিবর্তন করুন। আমার esp32 ঠিকানা 30: AE: A4: F5: 03: A4। Esp8266 এর অন্যান্য ফাংশনের জন্য এখানে যান

// প্রয়োজনীয় লাইব্রেরি যোগ করুন

#অন্তর্ভুক্ত // ইএসপি 32 এ ওয়াইফাই সক্ষমতা যুক্ত করতে #অন্তর্ভুক্ত করুন // এসপি এখন ফাংশন অ্যাক্সেস করতে // ব্রডকাস্ট অ্যাড্রেস নামক অ্যারেতে ম্যাক ঠিকানা সংরক্ষণ করুন; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*একাধিক ভেরিয়েবলের স্ট্রাকচারের ডেটা টাইপ সংজ্ঞায়িত করুন এবং এর সবকটি স্ট্রাকচার_মেসেজ*/ টাইপডেফ স্ট্রাক্ট_মেসেজ {চার a [32]; int খ; ভাসা গ; স্ট্রিং ডি; বুল ই; } struct_message; // myData struct_message myData নামে একটি স্ট্রাকচার্ড ভেরিয়েবল তৈরি করুন; // ফাংশন বলা হয় যখন ডেটা পাঠানো হয় এবং তার স্ট্যাটাস অকার্যকর OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / n সর্বশেষ প্যাকেট পাঠানোর অবস্থা: / t"); Serial.println (sendStatus == 1? "ডেলিভারি সাফল্য": "ডেলিভারি ব্যর্থ"); } অকার্যকর সেটআপ () {// ESP Serial.begin (115200) এর সাথে সিরিয়াল যোগাযোগের জন্য বড রেট সেট করুন; // একটি Wi-Fi স্টেশন WiFi.mode (WIFI_STA) হিসাবে ডিভাইস সেট করুন; // ওয়াইফাই শুরু করে // Init ESP-NOW এবং তার অবস্থা প্রদান করে যদি (esp_now_init ()) {Serial.println ("ESP-NOW আরম্ভ করার সময় ত্রুটি"); প্রত্যাবর্তন; } esp_now_register_send_cb (OnDataSent); // ESPNOW ডেটা পাঠানোর পর OnDataSent ফাংশনটি কল করুন // ডিভাইসটি যুক্ত ডিভাইস তালিকায় যুক্ত করুন যদি (esp_now_add_peer (broadcastAddress, ESP_NOW_ROLE_CONTROLLER, 1, NULL, 0)) {Serial.println ("পিয়ার যোগ করতে ব্যর্থ"); প্রত্যাবর্তন; }} void loop () {// strcpy (myData.a, "THIS IS A CHAR") পাঠানোর জন্য মান সেট করুন; // myData.b = এলোমেলো (1, 20) পূর্বে সংজ্ঞায়িত আমার "ডেটা" এর ভেরিয়েবল a এ "এটি একটি চার" সংরক্ষণ করুন; // একটি এলোমেলো মান সংরক্ষণ myData.c = 1.2; // একটি ভাসা myData.d = "SP8266" সংরক্ষণ করুন; // একটি স্ট্রিং সংরক্ষণ myData.e = মিথ্যা; // একটি বুল সংরক্ষণ করুন // ESP-NOW এর মাধ্যমে 250 বাইটের চেয়ে কম বা সমান ডেটা পাঠান এবং তার স্ট্যাটাস int ফলাফল = esp_now_send (সম্প্রচার ঠিকানা, (uint8_t *) এবং myData, sizeof (myData)); যদি (esp_now_init ()! = 0) {Serial.println ("সাফল্যের সাথে পাঠানো হয়েছে"); } অন্য {Serial.println ("ডেটা পাঠানোর সময় ত্রুটি"); } বিলম্ব (2000); }

ESP32 একটি ESP8266 থেকে তথ্য গ্রহণ করে। এই কোড দিয়ে। অন্যান্য ফাংশনের জন্য এখানে পড়ুন

// প্রয়োজনীয় লাইব্রেরি যোগ করুন

#include // esp- এ এখন ফাংশন অ্যাক্সেস করতে int খ; ভাসা গ; স্ট্রিং ডি; বুল ই; } struct_message; // myData struct_message myData নামে একটি পরিবর্তনশীল struct_message তৈরি করুন; // ফাংশন বলা হয় যখন ডেটা প্রাপ্ত হয় এবং এটি প্রিন্ট করে OnDataRecv (const uint8_t * mac, const uint8_t * incomingData, int len) {memcpy (& myData, incomingData, sizeof (myData)); সিরিয়াল.প্রিন্ট ("বাইট প্রাপ্ত:"); Serial.println (len); সিরিয়াল.প্রিন্ট ("চর:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); সিরিয়াল.প্রিন্ট ("ফ্লোট:"); Serial.println (myData.c); সিরিয়াল.প্রিন্ট ("স্ট্রিং:"); Serial.println (myData.d); সিরিয়াল.প্রিন্ট ("বুল:"); Serial.println (myData.e); Serial.println (); } অকার্যকর সেটআপ () {// ESP Serial.begin (115200) এর সাথে সিরিয়াল যোগাযোগের জন্য বড রেট সেট করুন; // একটি Wi-Fi স্টেশন WiFi.mode (WIFI_STA) হিসাবে ডিভাইস সেট করুন; // ওয়াইফাই শুরু করে // Init ESP-NOW এবং তার অবস্থা ফিরিয়ে দেয় যদি (esp_now_init ()! = 0) {Serial.println ("ESP-NOW আরম্ভ করার সময় ত্রুটি"); প্রত্যাবর্তন; } esp_now_register_recv_cb (OnDataRecv); // ESPNOW data} void loop () {} পাওয়ার পর OnDataRecv ফাংশনে কল করুন

ধাপ 7: দুই উপায় যোগাযোগ

দ্বিপাক্ষিক যোগাযোগ
দ্বিপাক্ষিক যোগাযোগ
দ্বিপাক্ষিক যোগাযোগ
দ্বিপাক্ষিক যোগাযোগ

ESP32 প্রারম্ভে ESP8266 এ ডেটা পাঠায়। ESP8266 প্রাপ্ত বার্তাটি মুদ্রণ করে এবং তারপরে ESP32 তার সিরিয়াল মনিটরে প্রিন্ট করে।

ESP32 কোড

// প্রয়োজনীয় লাইব্রেরি যোগ করুন

#ইনক্লুড // এএসপি এখন ফাংশন অ্যাক্সেস করতে #ইনক্লুড // ইএসপি 32 এ ওয়াইফাই সক্ষমতা যোগ করতে // ব্রডকাস্ট অ্যাড্রেস নামক অ্যারেতে ম্যাক অ্যাড্রেস সেভ করুন; uint8_t broadcastAddress = {0xA4, 0xCF, 0x12, 0xC7, 0x9C, 0x77}; // আমার রিসিভারের ম্যাক ঠিকানা/*একাধিক ভেরিয়েবলের স্ট্রাকচারের ডেটা টাইপ সংজ্ঞায়িত করে এবং এর সবকটি নাম পরিবর্তন করে struct_message*/typedef struct struct_message {char a [32]; int খ; ভাসা গ; স্ট্রিং ডি; বুল ই; } struct_message; // myData struct_message myData নামে একটি struct_message তৈরি করুন; // ফাংশন বলা হয় যখন ডেটা পাঠানো হয় তার স্ট্যাটাস অকার্যকর OnDataSent (const uint8_t *mac_addr, esp_now_send_status_t status) {Serial.print ("\ r / nLast Packet Send Status: / t"); Serial.println (status == ESP_NOW_SEND_SUCCESS? "ডেলিভারি সাফল্য": "ডেলিভারি ফেল"); যদি (স্ট্যাটাস! = ESP_NOW_SEND_SUCCESS) {send_data ();}} OnDataRecv বাতিল সিরিয়াল.প্রিন্ট ("বাইট প্রাপ্ত:"); Serial.println (len); সিরিয়াল.প্রিন্ট ("চর:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); সিরিয়াল.প্রিন্ট ("ফ্লোট:"); Serial.println (myData.c); সিরিয়াল.প্রিন্ট ("স্ট্রিং:"); Serial.println (myData.d); সিরিয়াল.প্রিন্ট ("বুল:"); Serial.println (myData.e); Serial.println (); } অকার্যকর সেটআপ () {// ESP Serial.begin (115200) এর সাথে সিরিয়াল যোগাযোগের জন্য বড রেট সেট করুন; // একটি Wi-Fi স্টেশন WiFi.mode (WIFI_STA) হিসাবে ডিভাইস সেট করুন; // ওয়াইফাই শুরু করে // Init ESP-NOW এবং তার অবস্থা প্রদান করে যদি (esp_now_init ()! = ESP_OK) {Serial.println ("ESP আরম্ভ করার সময় ত্রুটি -এখন "); প্রত্যাবর্তন; } // ESPNOW ডেটা পাঠানোর পরে OnDataSent ফাংশনটি কল করুন esp_now_register_send_cb (OnDataSent); // নিবন্ধন peer esp_now_peer_info_t peerInfo; // একটি অ্যাড্রেস memcpy (peerInfo। // peerInfo.peer_addr peerInfo.channel = 0 তে 6 বাইট সহ সম্প্রচার ঠিকানাটির মান কপি করুন // চ্যানেল যেখানে 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, "THIS IS A CHAR"); // myData.b = এলোমেলো (1, 20) পূর্বে সংজ্ঞায়িত আমার "ডেটা" এর ভেরিয়েবল a এ "এটি একটি চার" সংরক্ষণ করুন; // একটি এলোমেলো মান সংরক্ষণ myData.c = 1.2; // একটি ভাসা myData.d = "ESP32" সংরক্ষণ করুন; // একটি স্ট্রিং সংরক্ষণ myData.e = মিথ্যা; // একটি বুল সংরক্ষণ করুন // ESP-NOW এর মাধ্যমে 250 বাইটের চেয়ে কম বা সমান তথ্য পাঠান এবং তার অবস্থা esp_err_t ফলাফল = esp_now_send (সম্প্রচার ঠিকানা, (uint8_t *) এবং myData, sizeof (myData)); যদি (result == ESP_OK) {Serial.println ("সাফল্যের সাথে পাঠানো হয়েছে");} অন্য {Serial.println ("ডেটা পাঠাতে ত্রুটি"); }}

ESP8266 কোড

// প্রয়োজনীয় লাইব্রেরি যোগ করুন

#অন্তর্ভুক্ত // ইএসপি 32 এ ওয়াইফাই সক্ষমতা যুক্ত করতে #অন্তর্ভুক্ত করুন // এসপি এখন ফাংশন অ্যাক্সেস করতে // ব্রডকাস্ট অ্যাড্রেস নামক অ্যারেতে ম্যাক ঠিকানা সংরক্ষণ করুন; uint8_t broadcastAddress = {0x30, 0xAE, 0xA4, 0xF5, 0x03, 0xA4}; /*একাধিক ভেরিয়েবলের স্ট্রাকচারের ডেটা টাইপ সংজ্ঞায়িত করুন এবং এর সবকটি স্ট্রাকচার_মেসেজ*/ টাইপডেফ স্ট্রাক্ট_মেসেজ {চার a [32]; int খ; ভাসা গ; স্ট্রিং ডি; বুল ই; } struct_message; // myData struct_message myData নামে একটি পরিবর্তনশীল struct_message তৈরি করুন; // ফাংশন বলা হয় যখন ডেটা প্রাপ্ত হয় এবং এটি প্রিন্ট করে OnDataRecv (uint8_t * mac, uint8_t * incomingData, uint8_t len) {memcpy (& myData, incomingData, sizeof (myData)); সিরিয়াল.প্রিন্ট ("বাইট প্রাপ্ত:"); Serial.println (len); সিরিয়াল.প্রিন্ট ("চর:"); Serial.println (myData.a); Serial.print ("Int:"); Serial.println (myData.b); সিরিয়াল.প্রিন্ট ("ফ্লোট:"); Serial.println (myData.c); সিরিয়াল.প্রিন্ট ("স্ট্রিং:"); Serial.println (myData.d); সিরিয়াল.প্রিন্ট ("বুল:"); Serial.println (myData.e); Serial.println (); তথ্য পাঠান(); } অকার্যকর OnDataSent (uint8_t *mac_addr, uint8_t sendStatus) {Serial.print ("\ r / n সর্বশেষ প্যাকেট পাঠানোর অবস্থা: / t"); Serial.println (sendStatus == 1? "ডেলিভারি সাফল্য": "ডেলিভারি ব্যর্থ"); যদি (sendStatus! = 1) {send_data (); }} void send_data () {// strcpy (myData.a, "THIS IS A CHAR") পাঠাতে মান সেট করুন; // myData.b = এলোমেলো (1, 20) পূর্বে সংজ্ঞায়িত আমার "ডেটা" এর ভেরিয়েবল a এ "এটি একটি চার" সংরক্ষণ করুন; // একটি এলোমেলো মান সংরক্ষণ myData.c = 1.2; // একটি ভাসা myData.d = "ESP8266" সংরক্ষণ করুন; // একটি স্ট্রিং সংরক্ষণ myData.e = মিথ্যা; // একটি বুল সংরক্ষণ করুন esp_now_send (broadcastAddress, (uint8_t *) & myData, sizeof (myData)); } অকার্যকর সেটআপ () {// ESP Serial.begin (115200) এর সাথে সিরিয়াল যোগাযোগের জন্য বড রেট সেট করুন; // একটি Wi-Fi স্টেশন WiFi.mode (WIFI_STA) হিসাবে ডিভাইস সেট করুন; // ওয়াইফাই শুরু করে // Init ESP-NOW এবং তার অবস্থা ফিরিয়ে দেয় যদি (esp_now_init ()! = 0) {Serial.println ("ESP-NOW আরম্ভ করার সময় ত্রুটি"); প্রত্যাবর্তন; } যদি (esp_now_add_peer (broadcastAddress, 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_now_register_recv_cb (OnDataRecv) এর ভূমিকা নির্ধারণ করে; // ESPNOW data} void loop () {} পাওয়ার পর OnDataRecv ফাংশনে কল করুন

ধাপ 8: রেফারেন্স

ESPNOW_32_ উদাহরণ

ESPNOW_8266 উদাহরণ

WIFI.h

ESP8266WiFi.h

ESP8266 এর জন্য esp_now.h

ESP32 এর জন্য esp_now.h

esp_now অফিসিয়াল ডকুমেন্ট (ফাংশনগুলির ভাল ব্যাখ্যা)

ESP- এখন অফিসিয়াল গাইড

প্রস্তাবিত: