---
# System prepended metadata

title: 智慧家電：ESP32_LED控制介紹

---

### ESP32控制LED

要使用ESP32來控制LED並透過Python發送命令，你需要準備以下幾個部分：

1. **硬體準備**：
   - ESP32開發板
   - LED燈
   - 適當的電阻（例如220歐姆）
   - 接線材料（如杜邦線）

2. **ESP32編程**：
   - 使用Arduino IDE或其他開發環境為ESP32編寫程式，讓它能接收指令並控制LED。
   - 常見的通訊協議有Wi-Fi（使用HTTP或MQTT）或藍牙。這裡以Wi-Fi為例，可以設置ESP32作為一個Web服務器或客戶端。

3. **Python程式**：
   - 使用Python來編寫發送指令到ESP32的腳本。如果ESP32設為Web服務器，可以使用`requests`庫來發送HTTP請求。

以下是一個基本的實現方案：

### ESP32 程式碼範例
使用Arduino IDE編寫ESP32程式，讓它作為一個簡單的Web服務器，當收到特定HTTP請求時控制LED：

```cpp
#include <WiFi.h>

const char* ssid = "yourSSID";
const char* password = "yourPassword";
WiFiServer server(80);

int ledPin = 2; // GPIO2 of ESP32

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();
            client.println("<!DOCTYPE html><html>");
            client.println("<body><h1>ESP32 LED Control</h1>");
            client.println("<p><a href=\"/LED=ON\">Turn On LED</a></p>");
            client.println("<p><a href=\"/LED=OFF\">Turn Off LED</a></p>");
            client.println("</body></html>");
            client.stop();
          } else {
            if (currentLine.indexOf("GET /LED=ON") >= 0) {
              digitalWrite(ledPin, HIGH);
            } else if (currentLine.indexOf("GET /LED=OFF") >= 0) {
              digitalWrite(ledPin, LOW);
            }
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
  }
}
```

### Python 腳本範例
Python腳本使用`requests`庫來控制LED：

```python
import requests

def control_led(command):
    esp_ip = '192.168.1.100'  # ESP32的IP地址
    if command.lower() == 'on':
        requests.get(f'http://{esp_ip}/LED=ON')
    elif command.lower() == 'off':
        requests.get(f'http://{esp_ip}/LED=OFF')

# 範例使用
control_led('on')
```

### 操作步驟
1. 將ESP32連接至你的Wi-Fi網絡。
2. 確認ESP32的IP地址並更新到Python腳本中。
3. 編譯並上傳ESP32程式到開發板。
4. 運行Python腳本以控制LED。

這只是一個基本示範。實際應用中你可能需要考慮安全性、網絡穩定性等因素。