### 系統簡章: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!')
```