學習筆記07|用到的函式庫

ESP8266WiFi、ESP8266WebServer、WebSocketsServer 三大函式庫介紹與範例

專案的主要架構。我們會先以介紹用到的函式庫為先,具體的筆記請看學習筆記08_專案程式碼(待撰寫)。

  1. 馬達模組 (Motor.h):專門寫 digitalWrite 那些控制接腳的程式。
  2. 網頁模組 (WebPages.h):專門放那一長串的 HTML 字串。
  3. 主程式 (Main.ino):只負責 WiFi.begin 和呼叫別人的功能。

<ESP8266WiFi.h> 的主要作用

這是 ESP8266 官方提供的 WiFi 函式庫,讓 NodeMCU 可以:

  • 連上家裡的 WiFi(Station 模式)
  • 開啟自己的熱點(AP 模式)
  • 查詢 MAC 位址、訊號強度、IP 位址等
  • 處理 WiFi 連線狀態
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# include <ESP8266WiFi.h>

void setup() {
  WiFi.softAP(ssid, password);  // 開啟熱點
  WiFi.begin(ssid, password);   // 連線到路由器
  WiFi.status();  // 檢查 WiFi 狀態
  WiFi.localIP(); // 取得目前 IP

  if(WiFi.status() == WL_CONNECTED) {
    Serial.println(WiFi.localIP());
  }
}

void loop() {}

<ESP8266WebServer.h> 的主要作用

這是用來在 ESP8266 上建立一個簡單網頁伺服器,讓你可以用手機或電腦的瀏覽器來控制智慧車。

最核心的功能:

  • 建立網頁伺服器(通常 port 80)
  • 定義不同網址(/forward、/stop、/left…)對應的處理函數
  • 回應 HTML 網頁或簡單的文字指令
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "你的WiFi名稱";
const char* password = "你的WiFi密碼";

ESP8266WebServer server(80);

void setup() {
  Serial.begin(115200);

// ============= AP 模式 =============
  WiFi.softAP(ssid, password);

  Serial.println("\n=== AP 模式已開啟 ===");
  Serial.print("熱點名稱: ");
  Serial.println(ssid);
  Serial.print("連線密碼: ");
  Serial.println(password);
  Serial.print("IP 位址: ");
  Serial.println(WiFi.softAPIP());

  server.on("/", handleRoot);
  server.on("/forward", handleForward);
  server.on("/stop", handleStop);

  server.begin();
  Serial.println("WebServer 已啟動");
}

void loop() {
  server.handleClient();
}

void handleRoot() {
  server.send(200, "text/html", "<h1>智慧車控制頁面</h1>");
}

void handleForward() {
  server.send(200, "text/plain", "前進指令已接收");
}

void handleStop() {
  server.send(200, "text/plain", "已停止");
}

<WebSocketsServer.h> 引入優化的核心差異

WebSocket 與傳統 HTTP 最大差別:一次連線就保持不斷線(全雙工),手機和 ESP8266 可以隨時互相推訊息,不需要每次都重新發請求,所以延遲極低(通常 < 30ms),按住按鈕就持續動作,像遊戲搖桿一樣。

原先設計是基於「請求-響應」(Request-Response)模式,單向的發送命令,而 WebSocket 協議則可以讓 NodeMCU 主動推訊息回手機(例如「馬達目前速度:700」或「電池低電警告」)。

comments powered by Disqus