91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ESP32/ESP8266開(kāi)發(fā)板單向一對(duì)多ESP-NOW無(wú)線通信

jf_88434166 ? 來(lái)源:jf_88434166 ? 作者:jf_88434166 ? 2026-03-13 09:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡(jiǎn)介

本實(shí)驗(yàn)通過(guò)ESP-NOW無(wú)線通信協(xié)議實(shí)現(xiàn)ESP32開(kāi)發(fā)板向多個(gè)ESP32/ESP 8266開(kāi)發(fā)板發(fā)送數(shù)據(jù)。
在這里插入圖片描述
在這里插入圖片描述

讀取ESP32/ESP8266接收方Receiver的MAC地址

讀取ESP32開(kāi)發(fā)板的代碼

#include < WiFi.h >
#include < esp_wifi.h >

void readMacAddress(){
  uint8_t baseMac[6];
  esp_err_t ret = esp_wifi_get_mac(WIFI_IF_STA, baseMac);
  if (ret == ESP_OK) {
    Serial.printf("%02x:%02x:%02x:%02x:%02x:%02xn",
                  baseMac[0], baseMac[1], baseMac[2],
                  baseMac[3], baseMac[4], baseMac[5]);
  } else {
    Serial.println("Failed to read MAC address");
  }
}

void setup(){
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.STA.begin();

  Serial.print("[DEFAULT] ESP32 Board MAC Address: ");
  readMacAddress();
}
 
void loop(){

}

通過(guò)串口讀取到接收方ESP32開(kāi)發(fā)板1的MAC地址為:
在這里插入圖片描述
同樣的方式讀取到接收方ESP32開(kāi)發(fā)板2的MAC地址為:
在這里插入圖片描述
讀取ESP8266開(kāi)發(fā)板的代碼

#include < ESP8266WiFi.h >

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("ESP Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
}
 
void loop(){

}

讀取到接收方ESP8266開(kāi)發(fā)板的MAC地址為:
在這里插入圖片描述

ESP32發(fā)送方Sender程序

把ESP32開(kāi)發(fā)板1,ESP開(kāi)發(fā)板2,ESP8266開(kāi)發(fā)板的MAC地址分別填入到下列代碼的broadcastAddress1[ ],broadcastAddress2[ ],broadcastAddress3[ ]數(shù)組中

#include < esp_now.h >
#include < WiFi.h >

// REPLACE WITH YOUR ESP RECEIVER'S MAC ADDRESS
uint8_t broadcastAddress1[] = {0x54, 0x43, 0xb2, 0x7f, 0x00, 0x60};
uint8_t broadcastAddress2[] = {0x34, 0x5f, 0x45, 0xac, 0x16, 0xc0};
uint8_t broadcastAddress3[] = {0xdc, 0x4f, 0x22, 0x23, 0xca, 0x10};

typedef struct test_struct {
  int x;
  int y;
} test_struct;

esp_now_peer_info_t peerInfo;

void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  char macStr[18];
  Serial.print("Packet to: ");
  // Copies the sender mac address to a string
  snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
           mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
  Serial.print(macStr);
  Serial.print(" send status:t");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}
 
void setup() {
 
  Serial.begin(115200);
 
  WiFi.mode(WIFI_STA);
 
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  esp_now_register_send_cb(OnDataSent);

  // register peer
  peerInfo.channel = 0;  
  peerInfo.encrypt = false;
    
  memcpy(peerInfo.peer_addr, broadcastAddress1, 6);
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
  
  memcpy(peerInfo.peer_addr, broadcastAddress2, 6);
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
  memcpy(peerInfo.peer_addr, broadcastAddress3, 6);
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
}
 
void loop() {
  test_struct test;
  test_struct test2;
  test_struct test3;
  test.x = random(0,20);
  test.y = random(0,20);
  test2.x = random(0,20);
  test2.y = random(0,20);
  test3.x = random(0,20);
  test3.y = random(0,20);
 
  esp_err_t result1 = esp_now_send(
    broadcastAddress1, 
    (uint8_t *) &test,
    sizeof(test_struct));
   
  if (result1 == ESP_OK) {
    Serial.println("Sent with success");
  }
  else {
    Serial.println("Error sending the data");
  }
  delay(500);
  esp_err_t result2 = esp_now_send(
    broadcastAddress2, 
    (uint8_t *) &test2,
    sizeof(test_struct));

  if (result2 == ESP_OK) {
    Serial.println("Sent with success");
  }
  else {
    Serial.println("Error sending the data");
  }
  
  delay(500);  
  esp_err_t result3 = esp_now_send(
    broadcastAddress3, 
    (uint8_t *) &test3,
    sizeof(test_struct));
   
  if (result3 == ESP_OK) {
    Serial.println("Sent with success");
  }
  else {
    Serial.println("Error sending the data");
  }
  delay(2000);
}

ESP32/ESP8266接收方Receiver程序

上傳代碼到ESP32開(kāi)發(fā)板1和ESP3開(kāi)發(fā)板2

#include < esp_now.h >
#include < WiFi.h >

//Structure example to receive data
//Must match the sender structure
typedef struct test_struct {
  int x;
  int y;
} test_struct;

//Create a struct_message called myData
test_struct myData;

//callback function that will be executed when data is received
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("Bytes received: ");
  Serial.println(len);
  Serial.print("x: ");
  Serial.println(myData.x);
  Serial.print("y: ");
  Serial.println(myData.y);
  Serial.println();
}
 
void setup() {
  //Initialize Serial Monitor
  Serial.begin(115200);
  
  //Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  //Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
  
  // Once ESPNow is successfully Init, we will register for recv CB to
  // get recv packer info
  esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));
}
 
void loop() {

}

ESP8266開(kāi)發(fā)板接收代碼

#include < ESP8266WiFi.h >
#include < espnow.h >

//Structure example to receive data
//Must match the sender structure
typedef struct test_struct {
  int x;
  int y;
} test_struct;

//Create a struct_message called myData
test_struct myData;

//callback function that will be executed when data is received
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("Bytes received: ");
  Serial.println(len);
  Serial.print("x: ");
  Serial.println(myData.x);
  Serial.print("y: ");
  Serial.println(myData.y);
  Serial.println();
}
 
void setup() {
  //Initialize Serial Monitor
  Serial.begin(115200);
  
  //Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  //Init ESP-NOW
  if (esp_now_init() != 0) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
  
  // Once ESPNow is successfully Init, we will register for recv CB to
  // get recv packer info
  esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
  esp_now_register_recv_cb(OnDataRecv);
}
 
void loop() {

}

ESP-NOW通信驗(yàn)證

同時(shí)給發(fā)送方ESP32開(kāi)發(fā)板,接收方ESP32開(kāi)發(fā)板1,接收方ESP32開(kāi)發(fā)板2,接收方ESP8266開(kāi)發(fā)板供電,并打開(kāi)四個(gè)串口助手觀察四個(gè)開(kāi)發(fā)板的數(shù)據(jù)收發(fā)情況
若接收方都收到數(shù)據(jù),發(fā)送方ESP32開(kāi)發(fā)板會(huì)收到應(yīng)答信息,串口打印各個(gè)MAC地址的接收方數(shù)據(jù)分發(fā)成功:
在這里插入圖片描述
若有接收方?jīng)]有收到數(shù)據(jù),發(fā)送方ESP32開(kāi)發(fā)板會(huì)收到應(yīng)答信息,串口打印對(duì)應(yīng)的MAC地址的接收方數(shù)據(jù)分發(fā)失敗:
在這里插入圖片描述
接收方ESP32開(kāi)發(fā)板1串口打印接收到發(fā)送方發(fā)過(guò)來(lái)的隨機(jī)數(shù)據(jù)
在這里插入圖片描述
接收方ESP32開(kāi)發(fā)板2串口打印接收到發(fā)送方發(fā)過(guò)來(lái)的隨機(jī)數(shù)據(jù)
在這里插入圖片描述
接收方ESP8266開(kāi)發(fā)板串口打印接收到發(fā)送方發(fā)過(guò)來(lái)的隨機(jī)數(shù)據(jù)
在這里插入圖片描述

總結(jié)

通過(guò)以上例程驗(yàn)證了ESP32/ESP開(kāi)發(fā)板之間單向一對(duì)多的ESP-NOW無(wú)線通信,接下來(lái)的篇章將繼續(xù)驗(yàn)證多個(gè)的ESP32開(kāi)發(fā)板之間實(shí)現(xiàn)多對(duì)一的ESP-NOW無(wú)線通信。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6306

    瀏覽量

    118480
  • ESP8266
    +關(guān)注

    關(guān)注

    51

    文章

    971

    瀏覽量

    49542
  • ESP32
    +關(guān)注

    關(guān)注

    26

    文章

    1201

    瀏覽量

    21874
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32/ESP8266開(kāi)發(fā)板ESP-NOW無(wú)線通信

    ESP-NOW 是由Espressif開(kāi)發(fā)的基于數(shù)據(jù)鏈路層的無(wú)線通信協(xié)議,它將五層 OSI 上層協(xié)議精簡(jiǎn)為層,數(shù)據(jù)傳輸時(shí)無(wú)需依次經(jīng)過(guò)網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層等復(fù)雜的層級(jí)
    的頭像 發(fā)表于 02-27 20:03 ?126次閱讀
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP8266</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>ESP-NOW</b><b class='flag-5'>無(wú)線通信</b>

    ESP32-C5系列】WT9932C5-TINY開(kāi)發(fā)板上手指南

    實(shí)現(xiàn)了強(qiáng)勁性能與豐富功能的平衡。開(kāi)發(fā)板主頻高達(dá)240MHz,依托ESP32-C5升級(jí)的無(wú)線能力,支持Wi-Fi6(802.11ax)與藍(lán)牙5.3雙模通信,相比前代
    的頭像 發(fā)表于 02-26 18:05 ?312次閱讀
    【<b class='flag-5'>ESP32</b>-C5系列】WT9932C5-TINY<b class='flag-5'>開(kāi)發(fā)板</b>上手指南

    ESP32-P4系列】WT9932P4-MINI開(kāi)發(fā)板上手指南

    開(kāi)發(fā)板介紹ESP32-P4-MINI開(kāi)發(fā)板是深圳市啟明云端有限公司推出的,基于WT0132P4-A1核心設(shè)計(jì)的多媒體開(kāi)發(fā)板。WT0132P
    的頭像 發(fā)表于 02-12 18:16 ?160次閱讀
    【<b class='flag-5'>ESP32</b>-P4系列】WT9932P4-MINI<b class='flag-5'>開(kāi)發(fā)板</b>上手指南

    ESP32-P4系列】WT9932P4-MINI開(kāi)發(fā)板規(guī)格書(shū)

    開(kāi)發(fā)板介紹ESP32-P4-MINI開(kāi)發(fā)板是深圳市啟明云端有限公司推出的,基于WT0132P4-A1核心設(shè)計(jì)的多媒體開(kāi)發(fā)板。WT0132P
    的頭像 發(fā)表于 02-03 18:14 ?270次閱讀
    【<b class='flag-5'>ESP32</b>-P4系列】WT9932P4-MINI<b class='flag-5'>開(kāi)發(fā)板</b>規(guī)格書(shū)

    無(wú)需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個(gè)神器絕了!

    無(wú)需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個(gè)神器絕了!【往期精選】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生態(tài)設(shè)備接入(含
    的頭像 發(fā)表于 01-10 10:01 ?918次閱讀
    無(wú)需安裝!在瀏覽器里就能玩轉(zhuǎn)<b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP8266</b>,這個(gè)神器絕了!

    樂(lè)鑫科技ESP-AMP框架詳解!兩款已支持的ESP32-P4C5開(kāi)發(fā)板推薦!啟明云端樂(lè)鑫科技代理

    操作系統(tǒng),并提供完整的核間通信機(jī)制。啟明云端旗兩款高性能開(kāi)發(fā)板——WT99P4C5-S1與WTDKP4C5-S1,搭載樂(lè)鑫科技ESP32-P4芯片和ESP32-C5芯
    的頭像 發(fā)表于 12-18 18:02 ?1297次閱讀
    樂(lè)鑫科技<b class='flag-5'>ESP</b>-AMP框架詳解!兩款已支持的<b class='flag-5'>ESP32</b>-P4C5<b class='flag-5'>開(kāi)發(fā)板</b>推薦!啟明云端樂(lè)鑫科技代理

    ESP32-P4全功能開(kāi)發(fā)板ESP32-P4-TINY開(kāi)發(fā)板該怎么選?看這篇就夠了!

    啟明云端基于樂(lè)鑫科技ESP32-P4芯片設(shè)計(jì)了多款開(kāi)發(fā)板,這些開(kāi)發(fā)板有什么區(qū)別?基于應(yīng)用場(chǎng)景如何選擇?本期,我們聚焦兩款代表性產(chǎn)品:WT99P4C5-S1開(kāi)發(fā)板與WT9932P4-TI
    的頭像 發(fā)表于 12-09 18:02 ?942次閱讀
    <b class='flag-5'>ESP32</b>-P4全功能<b class='flag-5'>開(kāi)發(fā)板</b>和<b class='flag-5'>ESP32</b>-P4-TINY<b class='flag-5'>開(kāi)發(fā)板</b>該怎么選?看這篇就夠了!

    晶科鑫 | 國(guó)產(chǎn)26MHz晶振匹配Espressif(樂(lè)鑫) ESP8285/ESP8266芯片案例

    本,兩者可以共用同套SDK,只是ESP8285內(nèi)部集成了1MBFlash,SPIMode設(shè)置為DOUT,而ESP8266則需要外接Flash,并且是Din模式。除此之外,ESP828
    的頭像 發(fā)表于 11-21 15:37 ?4677次閱讀
    晶科鑫 | 國(guó)產(chǎn)26MHz晶振匹配Espressif(樂(lè)鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32開(kāi)發(fā)板常見(jiàn)的2種下載方式

    ESP32ESP8266是性價(jià)比很高而且使用較為廣泛的的Wi-Fi模塊,在物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項(xiàng)目中可以首先考慮這2款產(chǎn)品。 兩款芯片都屬于32位處理器。ESP32是低功耗雙核80MHz
    的頭像 發(fā)表于 11-10 20:30 ?1015次閱讀
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP32</b><b class='flag-5'>開(kāi)發(fā)板</b>常見(jiàn)的2種下載方式

    ESP8266ESP32開(kāi)發(fā)板常見(jiàn)的2種下載方式

    ESP8266全I(xiàn)O口引出,直接下載無(wú)需復(fù)位! ESP32功能框圖 基于arduino的ESP32/ESP8266開(kāi)發(fā)環(huán)境搭建 1.在a
    發(fā)表于 10-24 18:04

    ESP32ESP-NOW通訊踩坑記

    1、背景前段時(shí)間看到樂(lè)鑫推出了種很有意思的Wi-Fi通訊協(xié)議,它允許設(shè)備在無(wú)連接的時(shí)候進(jìn)行直接通訊。樂(lè)鑫對(duì)它的概述如下:“ESP-NOW種由樂(lè)鑫公司定義的無(wú)連接Wi-Fi通信協(xié)議
    的頭像 發(fā)表于 09-13 10:03 ?2587次閱讀
    <b class='flag-5'>ESP32</b>的<b class='flag-5'>ESP-NOW</b>通訊踩坑記

    ESP32-P4-MINI開(kāi)發(fā)板開(kāi)箱和上手指南來(lái)了!速速碼??!

    上期“夢(mèng)中情ESP32-P4-MINI開(kāi)發(fā)板出就備受青睞這期我們立馬就端著開(kāi)箱和上手指南來(lái)了!不用驚嘆,我們就是這么迅速,請(qǐng)把“啟明云端權(quán)威”打在公屏上好嘛!開(kāi)箱展示拿到
    的頭像 發(fā)表于 07-25 18:02 ?2185次閱讀
    <b class='flag-5'>ESP32</b>-P4-MINI<b class='flag-5'>開(kāi)發(fā)板</b>開(kāi)箱和上手指南來(lái)了!速速碼??!

    ESP32開(kāi)發(fā)板元件資料

    ESP32開(kāi)發(fā)板元件
    發(fā)表于 07-21 14:47 ?15次下載

    ESP32-P4 C5開(kāi)發(fā)板燒錄小智全流程!速看!

    沒(méi)錯(cuò),你沒(méi)有看錯(cuò)!我們帶著WT99P4C5-S1開(kāi)發(fā)板燒錄小智全流程走來(lái)了!開(kāi)發(fā)板搭載樂(lè)鑫科技ESP32-P4和ESP32-C5芯片,代碼完全開(kāi)源,支持靈活二次
    的頭像 發(fā)表于 07-04 18:03 ?2383次閱讀
    <b class='flag-5'>ESP32</b>-P4 C5<b class='flag-5'>開(kāi)發(fā)板</b>燒錄小智全流程!速看!

    ESP32-S3開(kāi)發(fā)板燒錄小智AI系統(tǒng)全流程指南

    在AI語(yǔ)音交互領(lǐng)域不斷發(fā)展的今天,開(kāi)發(fā)者們對(duì)于功能強(qiáng)大、開(kāi)源靈活的開(kāi)發(fā)板需求日益增長(zhǎng)。今天,我們就來(lái)詳細(xì)了解ESP32AgentDevKit燒錄小智的全流程,這款搭載樂(lè)鑫科技
    的頭像 發(fā)表于 06-16 18:01 ?8301次閱讀
    <b class='flag-5'>ESP32</b>-S3<b class='flag-5'>開(kāi)發(fā)板</b>燒錄小智AI系統(tǒng)全流程指南