關於 ESP8266 的網路功能,我們主要會使用 Arduino 環境內建的 ESP8266WiFi.h 函式庫。它把底層的 TCP/IP 與 WiFi 協定封裝成直觀的指令,讓你不用從零處理封包或射頻調變,就能讓 NodeMCU 連網或發射熱點。
為了快速建立脈絡,這裡先用「流程思維」拆解這套函式庫的核心架構:
🔑 WiFi 函式庫的兩種基本模式
| 模式 | 核心角色 | 適用情境 | 關鍵指令 |
|---|---|---|---|
| STA (Station) | 客戶端 (Client) 像「手機連 WiFi」 | • 連接家中路由器 • 上傳數據至雲端 • 需要互聯網環境 | WiFi.begin(ssid, pwd); |
| AP (Access Point) | 基地台 (Server) 像「手機開熱點」 | • 本專案採用 • 離線直連控制 • 無路由器環境 | WiFi.softAP(ssid, pwd); |
💡 小提醒:第三種模式為 STA+AP 混用。目前我們專注於 AP 模式,讓智慧車成為獨立的控制中心。
📖 深度解析:如何理解這兩種模式?
1. STA 模式:主動加入者 (The Joiner)
- 生活類比:就像你的手機連接家裡的 WiFi。
- 運作邏輯:
- NodeMCU 是「客人」,必須知道路由器的名稱 (SSID) 和密碼。
- 它會主動去敲門請求連線。如果沒有路由器,它就無法運作。
- 優勢:連上後可通往互聯網(例如接收來自世界各地的指令)。
- 電影院比喻:NodeMCU 拿著票根(密碼)主動走到櫃台,驗票員(路由器)確認後才放行進入電影院(外部網路)。
2. AP 模式:被動等待者 (The Host)
- 生活類比:就像你的手機開啟個人熱點。
- 運作邏輯:
- NodeMCU 是「主人」,自己發射 WiFi 訊號。
- 它被動等待你的手機來搜尋並連接它。
- 優勢:獨立運作,不依賴外部網路,適合近距離直接控制(如遙控車)。
- 開店比喻:NodeMCU 開了一家店,掛上招牌 “CarWiFi”,坐在店裡等客人(手機)上門輸入密碼才能進來對話。
🧩 常見開發流程(無論 STA/AP 都適用)
- 引入與序列埠初始化:
#include <ESP8266WiFi.h>+Serial.begin(115200); - 嘗試連線/建立熱點:呼叫
begin()或softAP() - 等待連線就緒:通常用
while(WiFi.status() != WL_CONNECTED)或檢查softAP狀態 - 取得 IP 門牌:
WiFi.localIP()(STA)或WiFi.softAPIP()(AP) - 建立通訊端:例如
WiFiServer server(80);用來監聽手機網頁發來的控制指令