ESP32 進階應用:無線通訊 × Web 控制 RGB(ESP-NOW × Web Server)

本章目標:透過兩個典型 IoT 任務,讓你理解「無 Wi-Fi 點對點通訊」與「前端控制實體裝置」的核心模式。

主題 A:ESP-NOW 無線短訊 × 加密解密 主題 B:ESP32 作為 Web Server 控制 RGB LED(Color Picker)

1|ESP-NOW 是什麼?(IoT 必學技術)

ESP32 除了可以用 Wi-Fi 上網,其實仲有另一套 不靠路由器(AP)都可通訊 的 protocol:

ESP-NOW = 超低延遲 × 不用 Wi-Fi × 點對點或廣播 × 只靠 MAC 地址通訊

你可以把佢理解為:

常見用途:


2|實作:建立老師端(Sender) × 學生端(Receiver)

兩塊 ESP32 就可以做到本地通訊。

先用「明碼」發送 message。 下一部才加密。

在這個練習中,老師會用ESP32 NOW發送一段文字給你,你需要用ESP32接收老師給你訊息,然後在老師核對時,告訴老師你收到甚麼。


2.1 Sender(老師端)

功能:每 5 秒廣播一段字串 message。你不需要上傳這段,這段老師已經做了,你負責接收訊息


2.2 Receiver(學生端)

功能:顯示收到的 message

3|🔥ESP-NOW 進階:使用內建 AES-128 加密通訊

本章目標:在上一章的基礎上,讓 ESP32 之間的通訊提升至真正的「安全 IoT」級別。 ESP-NOW 原生支援 AES-128 加密,你只需要在「Peer 配對」階段加入 16 bytes Key, Sender 傳送時會自動加密,Receiver 收到後自動解密,程式不需要自己寫 encryption / decryption。


3.1|什麼是 ESP-NOW AES 加密?

ESP32 的 ESP-NOW 通訊可以分為:

模式是否安全是否需要 Key適合用途
無加密(Open)❌ 不安全(可被嗅探)❌ 不需要教學示範、簡單測試
加密(AES-128)✔ 安全需要 16 字節 Key正式 IoT 通訊、同學互傳訊息、設備連線

ESP-NOW 使用的加密方式:

AES-128(ECB)硬件加速

Sender → AES Encrypt → RF 傳輸 → Receiver Firmware 自動解密 → onReceive() 取得明文

👉 完全感覺唔到加密存在,但安全性明顯更高。

3.2|AES-128 Key(16 bytes)點處理?

ESP-NOW 加密需要固定 16 bytes(128 bits)key

你可以:

示例 key:(15字節的String)

或 (16字節的Char array)

3.3|加密限制

AES 加密模式不支援 broadcast / multicast MAC 地址。 即: FF:FF:FF:FF:FF:FF → ❌ 不能加密 任何 group address(最低 bit = 1)→ ❌ 不能加密

➡ ESP-NOW 加密 只能用「單對單」MAC 對 MAC ➡ 不能「一部加密後廣播俾全班」

3.4|整體流程

每隊 2 個學生、2 部 ESP32:

  1. 各自讀取本機 MAC

  2. Sender 把 Receiver 的 MAC 填入程式

  3. Receiver 把 Sender 的 MAC 填入程式

  4. 雙方使用 同一條 AES128 Key(16 bytes)

  5. 一端 send() → 另一端 onReceive() 自動解密

3.5|第一步:讀取每部 ESP32 的 MAC Address

請每位學生先燒錄以下程式:

學生記錄輸出的 MAC,例如:

3.6|Receiver(接收端)程式完整版本

(把 Sender 的 MAC 貼進 senderMAC[]

接收端只需要接,唔需要 send 穩定度:極高 安全:已自動解密

3.7|Sender(發送端)程式完整版本

(把 Receiver 的 MAC 貼入 receiverMAC[]

加密後 send() 的資料會自動加密 → Receiver 自動解密 唔需要你寫 encryption/decryption。

3.8|兩位學生必須同步做的設定

步驟ReceiverSender
啟動 WiFi STA mode
填入對方 MACsenderMAC[]receiverMAC[]
設定相同 AES Key
add_peer()
使用 encrypt=true
使用 peerInfo.lmk

只要其中一個設定錯誤 → 完全收不到訊息。

3.9|進階挑戰

都是你之後常會遇到的問題

螢幕截圖 2025-11-26 19.21.50

4|ESP32 Web Server:用瀏覽器控制 RGB LED

核心概念: ESP32 = Server(提供網頁) Browser = Client(按色板 → POST JSON → ESP32 控制 LED)

上一章,我們學習了前端、後端的概念。我們將前端放在 自己的電腦 上,用 VS Code 的 Live Server 去 host。這種方式只是本地測試,網頁只存在於電腦本身,其他裝置無法使用。

但如果介面不太複雜,我們可以 直接把網站架在 ESP32 裡面,將ESP32作為AP(Access Point)。

這樣做有不少明顯好處:

  1. 完全獨立運作,不依賴學校 Wi-Fi 或家用路由器 ESP32 自己開熱點, 學生手機直接連入即可。 避免校網密碼限制、網路隔離、AP Client 數量限制等問題。

  2. 部署成本極低、裝置即插即用 只需要一條 USB 線即可運行整套系統; 不需要額外伺服器、路由器或雲端。

  3. 無網絡延遲與干擾,控制反應極快 AP 模式只有 ESP32 與你的裝置兩者通訊, 避免校園 Wi-Fi 擁塞導致的 delay、packet loss。

  4. 方便課堂示範與分組實驗 每一組學生的 ESP32 都可以獨立開 AP, 各自的網頁和硬件互不干擾。

  5. 網站與硬件封裝在同一裝置內,學習概念更清晰

    • ESP32 = Server(提供 HTML + JS)

    • Browser = Client(透過 HTTP 控制硬件)

    • 完整理解前端→後端→硬件的資料流。

  6. 非常適合控制界面(Control Panel/UI) 色板、按鈕、Slider、LED 控制、馬達開關等操作, 都適合直接放在 ESP32 內,實作成本低、反應快。

4.1|完整流程(HTML Color Picker × fetch × ESP32)

4.1.1|ESP32 程式:建立 Web Server + 控制 RGB PWM

在AP 模式:

4.1.2|操作方式(AP 模式)

  1. ESP32 通電後 → 自己開 Wi-Fi 熱點 SSID:ESP32-RGB Password:12345678

  2. 學生手機 / Notebook 連接這個熱點

  3. 在瀏覽器輸入:

即可彈出你的 Color Picker 頁面。

4.2|進階挑戰

螢幕截圖 2025-11-26 19.22.40

5|📘 本章總結(精簡版)

本章透過兩個核心實作,讓你掌握 IoT 系統中最常見的兩種模式:

1|ESP-NOW 加密通訊(點對點)

2|ESP32 作為 AP + Web Server(控制 RGB LED)

你已掌握:

本章建立了 IoT 教學中兩個最重要的模型: 裝置間通訊用瀏覽器控制硬件,為後續更多互動式 IoT 專題打好基礎。