No Code AI(肉寇)AI自動化兩日精通|實體6小時+線上6小時
|

認識ESP-NOW協定 Part 1:基本觀念介紹

   

作者:黃東正

ESP_NOW是上海樂鑫公司以其ESPxx無線WiFi晶片為基礎所定義的一種無線通信協定,這種通信協定是一種不需要交握(Handshake)的過程,就可以讓多個設備在不使用 WiFi 的情況下相互通信的協定。

該協定類似於2.4GHz低功耗的無線連接,這些設備之間在它們通信之前需要先經過配對的過程,配對完成後,是屬於點對點且安全的連接。這意味著在將設備相互配對後,它們之間的連接是連續且持久的,換句話說如果其中一個ESPxx模組板突然斷電或重置,當它重新啟動時,它會自動連接到它之前配對的對等實體以繼續通信。

在ESP-NOW中,應用程式的資料被封裝成供應廠商指定(Vendor – Specific)式的動作框架(action frame),它可以在沒有連接的狀態下從一個WiFi裝置傳送到另一個WiFi裝置上去。為了保護這個動作框架的安全性,在其中使用了CCMP (CTR with CBC-MAC) 這種安全通信協定 。

ESP-NOW框架格式

ESP-NOW使用所謂的供應廠商指定(Vendor – Specific)式動作框架(action frame),這個動作框架的格式內容如下,其預設的傳輸速度為 1 Mpbs。

供應廠商指定(Vendor – Specific)動作框架(action frame)格式內容

1.MAC Header:MAC表頭,由於 ESP-NOW 是無連接的,因此 MAC 標頭與標準WiFi框架的標頭略有不同,其中FrameControl 字段的 FromDS 和 ToDS的位元值均為0;接著第一個字段設定為目標地址,第二地址字段設定為來源地址,第三個地址字段設定為廣播地址(即0xff:0xff:0xff:0xff:0xff:0xff)。

2.Category Code:類別代碼,在此設定為表示供應商特定類別的值 (即127)。

3.Organization Identifier:組織識別碼,組織識別碼包含一個唯一代碼,即上海樂鑫申請的 MAC 地址的前三個bytes(0x18fe34)。

4.Random Values:隨機值,主要是用於防止網路的中繼攻擊(Realy Attack)之用。

5.Vendor Specific Content:供應廠商特定內容,其內容如下:

  • Element ID:元素 ID 字段,設定的值為 (221),表示供應商特定的元素碼。
  • Length:長度字段,是組織識別碼、類型、版本和本體總長度的集合。
  • Organization Identifier:組織識別碼,其意義同前,即由上海樂鑫申請的 MAC地址的前三個bytes(即0x18fe34)。
  • Type:類型字段,在此設定為代表 ESP-NOW 的值 (4)。
  • Version:版本字段,即目前 ESP-NOW 的版本。
  • Body:本體字段,即ESP-NOW真正傳送的數據,最大值為250個位元組。

ESP-NOW安全性

ESP-NOW 使用了 CCMP加密方法,該方法在 IEEE 802.11-2012標準中有詳細的描述,保護供應商特定的操作框架。在Wi-Fi 設備中會維持一個主要主密鑰 (PMK) 和幾個本地主密鑰 (LMK),PMK 和 LMK 的長度都是 16 bytes。

  • PMK 用於使用 AES-128 算法加密 LMK。使用esp_now_set_pmk()指令可以設定採用 PMK加密方式。如果未設置 PMK,則默認使用PMK。

  • 配對設備的 LMK 用於使用 CCMP 方法加密供應商特定的操作框架,不同 LMK 的最大數量為六個,如果未設置配對設備的 LMK,則不會加密供應商特定的操作框架。

在ESP-NOW中不支持加密廣播特定供應商的操作框架。

ESP-NOW整體綜合特性

經由前面的說明與樂鑫公司所提供的技術資料我們可歸納出以下ESP-NOW這種通信協定的特性:

  • 可做加密和未加密的單播通信

  • 混合加密和未加密的對等設備

  • 最多可承載250 bytes的有效資料荷載

  • 發送回應函數,可用來設置通知應用層程式傳輸成功或失敗的訊息

ESP-NOW 技術也有以下限制:

  • 有限的加密對等點,Station模式最多支持10個加密對等裝置, SoftAP+Station模式下最多6個。

  • 支持多個未加密對等裝置,但其總數應少於 20 個,包括加密對等裝置。

  • 有效荷載資料長度限制為 250 bytes。

簡單來說,ESP-NOW 是一種快速及非交握式的通信協議,可用於在 ESPxx 板之間交換簡短的訊息(最多 250 bytes)。

認識ESP-NOW協定 Part 2:拓樸架構介紹

認識ESP-NOW協定 Part 3:雙向多對多架構

(作者為本刊專欄作家,本文同步表於作者部落格,原文連結;責任編輯:謝嘉洵)

黃東正

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: 黃東正

任職於明新科技大學電子系,專長於單晶片微電腦如Arduino、ESP8288/ESP32等,此外對於感測器、RFID、物聯網(IOT)等技術亦多所涉獵。

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *