ESP-NOW無線通信協議簡介
ESP-NOW 是由Espressif開發的基于數據鏈路層的無線通信協議,它將五層 OSI 上層協議精簡為一層,數據傳輸時無需依次經過網絡層、傳輸層、會話層、表示層、應用層等復雜的層級,也無需層層增加包頭和解包,大大緩解了網絡擁擠時因為丟包而導致的卡頓和延遲,擁有更高的響應速度。

其特點是短數據包傳輸,該協議類似于低功耗2.4GHz無線連接。設備之間的配對需要在它們通信之前進行。配對完成后,連接是安全的和對等的,不需要握手。這意味著設備相互配對后,連接是持久的。換句話說,如果您的一塊板突然斷電或復位,當它重新啟動時,它會自動連接到它的對等體以繼續通信。能夠在無路由器的情況下直接、快速、低功耗地控制智能設備。它能夠與 Wi-Fi 和 Bluetooth LE 共存。
加密和未加密的單播通信;
混合加密和未加密的對等設備;
最多可攜帶250字節的有效數據;
發送回調函數,可以設置為通知傳輸成功或失敗的應用層;
Station mode最多支持10個加密對等體,SoftAP或SoftAP +Station mode最多支持6個加密對等體;
支持多個未加密的對等體,但是它們的總數應少于20個,包括加密的對等體;
簡而言之,ESP-NOW是一種快速通信協議,可用于在ESP32板之間交換數據(最多250字節)。
ESP-NOW單向通信
一個ESP32板向另一個ESP32板發送數據,如傳感器讀數或控制GPIOs的開和關命令。
一塊ESP32板向不同的ESP32板發送相同或不同的命令。這種配置非常適合構建類似遠程控制系統。
一個“從”ESP32從多個“主”ESP32接收數據,例如可以將其配置為web服務器,以顯示來自所有其它板的數據。
ESP-NOW雙向通信
每個板可以同時成為發送者和接收者。因此,您可以在板之間建立雙向通信。
可以向此配置中添加更多的板,并擁有一個看起來像網絡的東西(所有ESP32板相互通信)。
ESP32的MAC地址
每個ESP32都有一個唯一的MAC地址,這就是我們如何使用ESP-NOW識別每個板并向其發送數據
#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.begin();
Serial.print("[DEFAULT] ESP32 Board MAC Address: ");
readMacAddress();
}
void loop(){
}
上傳代碼后,以115200的波特率打開串行監視器,然后按下ESP32 RST/EN按鈕。MAC地址應該打印如下:
不同的開發板的MAC地址都會不一樣,以實際讀取到的地址為準
總結
以上介紹了ESP-NOW的基本特性,接下來的文章將舉例介紹ESP-NOW的單向和雙向通信方式。
審核編輯 黃宇
-
無線通信
+關注
關注
58文章
5038瀏覽量
146989 -
開發板
+關注
關注
26文章
6366瀏覽量
119957 -
ESP32
+關注
關注
26文章
1215瀏覽量
22216
發布評論請先 登錄
【ESP32-P4系列】WT9932P4-MINI開發板規格書
無需安裝!在瀏覽器里就能玩轉ESP32/ESP8266,這個神器絕了!
樂鑫科技ESP-AMP框架詳解!兩款已支持的ESP32-P4C5開發板推薦!啟明云端樂鑫科技代理
ESP32-P4全功能開發板和ESP32-P4-TINY開發板該怎么選?看這篇就夠了!
晶科鑫 | 國產26MHz晶振匹配Espressif(樂鑫) ESP8285/ESP8266芯片案例
ESP8266和ESP32開發板常見的2種下載方式
ESP8266和ESP32開發板常見的2種下載方式
ESP32的ESP-NOW通訊踩坑記
ESP32-P4-MINI開發板開箱和上手指南來了!速速碼住!
ESP32-P4 C5開發板燒錄小智全流程!速看!
ESP32-S3開發板燒錄小智AI系統全流程指南
ESP32/ESP8266開發板ESP-NOW無線通信
評論