# remote_switch **Repository Path**: macro/remote_switch ## Basic Information - **Project Name**: remote_switch - **Description**: 硬件:ESP32-C3,Wavgat 3路光耦隔离继电器 软件:Zephyr RTOS IDE:VSCode 使用RESTful控制继电器开关 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-02 - **Last Updated**: 2026-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP32-C3 WiFi 继电器控制器 基于 Zephyr RTOS 的 3 路光耦继电器 WiFi + HTTP REST 控制器,运行在 ESP32-C3。 ## 功能 - **网络控制(主)**:WiFi STA 连路由器,HTTP REST 接口 - `GET /status` → `{"relays":[false,false,false]}` - `POST /relay` body `{"index":1,"state":true}` → 控制第 N 路(index 1-3,state true/false) - **串口控制(备用)**:USB Serial/JTAG 文本命令 - `1`/`2`/`3` 切换对应路;`o` 全开;`f` 全关;`s` 状态;`h` 帮助 ## 硬件 - 板子:ESP32-C3 DevKitC(单 USB 口 = 原生 USB Serial/JTAG,无 USB-UART 桥) - 继电器:Wavgat 3 路光耦隔离模块(低电平触发) | 继电器模块 | ESP32-C3 | |---|---| | VCC | 5V | | GND | GND | | IN1 / IN2 / IN3 | GPIO4 / GPIO5 / GPIO6 | ## 前提 1. Zephyr 4.4 west workspace(含 `zephyr` + `modules/hal/espressif`) 2. 下载 WiFi HAL 二进制 blobs(默认未下载): ```bash west blobs fetch hal_espressif ``` ## 配置 WiFi 编辑 `prj.conf`,填你的路由器 SSID 和密码: ``` CONFIG_RELAY_WIFI_SSID="你的SSID" CONFIG_RELAY_WIFI_PSK="你的密码" ``` > 路由器必须是 **2.4GHz**(ESP32-C3 不支持 5GHz)。 ## 构建 & 烧录 ```bash west build -b esp32c3_devkitc/esp32c3 . -d build west flash -d build ``` 烧录后用串口工具连板载 USB 口(**115200 8N1**),看到启动日志和分配到的 IP。 ## 使用 ```bash # 查状态 curl http:///status # 开第 1 路(Windows cmd) curl -X POST http:///relay -d "{\"index\":1,\"state\":true}" # 关第 1 路 curl -X POST http:///relay -d "{\"index\":1,\"state\":false}" ``` ## 源码结构 | 文件 | 作用 | |---|---| | `src/relay.c` `.h` | 3 路继电器 GPIO 控制(串口 + HTTP 共用) | | `src/wifi.c` `.h` | WiFi STA 连接(net_mgmt + 等 DHCP IP) | | `src/http_relay.c` `.h` | 手写 HTTP REST(裸 TCP socket) | | `src/main.c` | 主程序:自检 → 连 WiFi → 起 HTTP → 串口循环 | | `app.overlay` | 设备树:console=usb_serial、继电器 GPIO4/5/6、WiFi | | `Kconfig` / `prj.conf` | WiFi 凭据与网络/HTTP 配置 | ## 安全提示 HTTP 无认证,局域网内任何设备都能控制继电器。家用环境一般够;如需加固,可加 token 鉴权或改 HTTPS/MQTT。