一、ESP-NOW基本觀念介紹
三、使用範例與程式設計:
3、ESP-NOW加上Web伺服器架構(ESP-NOW + WiFi)
一、ESP-NOW基本觀念介紹
ESP_NOW是上海樂鑫公司以其ESPxx無線WiFi晶片為基礎所定義的一種無線通信協定,這種通信協定是一種不需要交握(Handshake)的過程,就可以讓多個設備在不使用 Wi-Fi 的情況下相互通信的協定。該協定類似於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:供應廠商特定內容,其內容如下:
1•Element ID:元素 ID 字段,設定的值為 (221),表示供應商特定的元素碼。
2•Length:長度字段,是組織識別碼、類型、版本和本體總長度的集合。
3•Organization Identifier:組織識別碼,其意義同前,即由上海樂鑫申請的 MAC地址的前三個bytes(即0x18fe34)。
4•Type:類型字段,在此設定為代表 ESP-NOW 的值 (4)。
5•Version:版本字段,即目前 ESP-NOW 的版本。
6•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)。
沒有留言:
張貼留言