### 系統簡章:ESP32 基於 Web 的遙控與互動系統 這份簡章旨在詳細介紹一個利用 ESP32 微控制器和 Python 腳本建立的基於 Web 的互動系統,這個系統使得用戶能夠通過 HTTP GET 請求來遠程控制和與 ESP32 通訊。 #### ESP32 微控制器設定 ##### 功能描述 此系統設定 ESP32 作為一個 HTTP 伺服器,用於接收和回應來自網路的請求。使用 WiFi 模組連接至指定無線網路,並在成功連接後,通過串列輸出其 IP 地址。 ##### 主要特點 1. **WiFi 連接**:自動連接至預設的無線網路。 2. **HTTP 伺服器**:在端口 80 上啟動,接收關於特定端點的 GET 請求。 3. **消息處理**:接收含有消息的請求,並將消息內容透過串列輸出,同時回應確認消息。 ##### 程式碼示例 ```cpp void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } server.on("/", HTTP_GET, []() { String message = server.arg("message"); Serial.println(message); server.send(200, "text/plain", "Received: " + message); }); server.begin(); Serial.println("HTTP server started"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); } ``` Arduino 程式碼 ```python #include <WiFi.h> #include <WebServer.h> const char* ssid = "nga"; const char* password = "0958188700"; WebServer server(80); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } server.on("/", HTTP_GET, []() { String message = server.arg("message"); Serial.println(message); server.send(200, "text/plain", "Received: " + message); }); server.begin(); Serial.println("HTTP server started"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); } void loop() { server.handleClient(); } ``` #### Python 腳本 ##### 功能描述 Python 腳本作為客戶端,向 ESP32 發送包含特定消息的 HTTP GET 請求,並接收來自 ESP32 的回應。 ##### 主要特點 1. **HTTP 請求**:使用 Python 的 `requests` 庫發送 GET 請求。 2. **靈活的參數傳遞**:可以通過 URL 參數傳遞消息給 ESP32。 3. **回應處理**:打印來自 ESP32 的回應。 ##### 程式碼示例 ```python def send_message(ip, message): url = f"http://{ip}/" params = {'message': message} response = requests.get(url, params=params) print(f"Server responded: {response.text}") ``` #### 使用指南 1. **設定 ESP32**:編譯並上傳上述 Arduino 程式碼到 ESP32。確保設定的 WiFi 名稱和密碼正確,以便 ESP32 可以連接。 2. **運行 Python 腳本**:在電腦上執行 Python 腳本,確保與 ESP32 在同一 WiFi 網絡下,並將 `send_message` 函數中的 IP 地址替換為 ESP32 的實際 IP 地址。 這個系統能夠實現基本的遠程通訊和控制功能,適用於家庭自動化、基礎 IoT 學習和開發測試。 Python 程式碼 ```python import requests def send_message(ip, message): url = f"http://{ip}/" params = {'message': message} response = requests.get(url, params=params) print(f"Server responded: {response.text}") # 替换以下IP地址为ESP32的实际IP地址 send_message('192.168.0.42', 'Hello ESP32!') ```