ESP32-S3 固件项目,用于通过 USB Host 连接 DP100 电源,并提供网页监控、Wi-Fi 配网、HTTP 控制 API 和轻量级 WebSocket 遥测通道。英文说明见 README.EN.md。
【改装】基于ESP32-S3的DP100无线控制器 独立使用! 不干扰按键!
在 USB Device 模式下 DP100的USB-A口不支持输出5V电压 因此,需要将功率电子开关的输入,直接短接到其输出上
- 通过 ESP32-S3 USB Host 与 DP100 通讯。
- 开机自动尝试已保存 Wi-Fi,失败后进入 SoftAP 配网页面。
- 内嵌网页仪表盘:
http://<esp32-ip>/。 web/下提供本地网页调试环境,无需反复烧录固件。/ws提供高频 CSV 文本格式遥测数据,适合浏览器图表或 AI 观察程序。- HTTP API 支持状态读取、Wi-Fi 配置、DP100 输出控制、时间同步和定时开关。
main/ ESP-IDF 应用组件
main.c 应用入口
dp100_usb.* DP100 USB Host 轮询与控制
wifi_portal.* Web 服务、Wi-Fi 配网、API、WebSocket
scheduler.* 时间同步与 crontab 风格定时开关
json_utils.* JSON 响应辅助函数
portal.html 固件内嵌网页
web/ 本地网页与开发服务器
docs/ API、WebSocket 与产品文档
tools/ 构建、烧录、WebSocket 调试脚本
ref/ 参考实现
build/ ESP-IDF 生成的构建输出
优先使用项目脚本,不要直接调用 idf.py。脚本会设置 ESP-IDF 6.0.1、工具链路径和目标芯片。
./tools/build.sh
./tools/flash.sh -p /dev/ttyUSB0默认烧录使用已有构建产物。如需烧录时重新构建:
./tools/flash.sh -p /dev/ttyUSB0 --build当前项目仅面向 ESP32-S3。
修改前端时建议先运行本地页面:
node web/server.mjs然后打开:
http://127.0.0.1:8080
默认设备 IP 为 192.168.1.20。本地开发服务器会代理 HTTP API 请求以避免浏览器 CORS 问题,WebSocket 则直接连接 ws://<device-ip>/ws。前端稳定后,需要同步 web/index.html 与 main/portal.html。
ESP32 开机后会按保存顺序尝试连接 Wi-Fi。连接成功后进入 STA 模式,并在获取到的 IP 上提供网页服务。若无法连接已保存 Wi-Fi,则启动开放 SoftAP 配网页面。
DP100 高频遥测通过 WebSocket 发送 CSV 文本。连接后第一条消息是表头:
dt/ms,v/mV,i/mA,s/status后续数据行包含发送间隔、电压、电流和输出状态。状态值含义:
0: OFF1: CV2: CC
功率不由固件上传,浏览器或客户端使用 电压 * 电流 自行计算。
- HTTP API:
docs/api.md - WebSocket 协议:
docs/WEBSOCKET_PROTOCOL.md - 本地网页开发:
web/README.md
本项目使用 GNU General Public License v3.0 or later,简称 GPL-3.0-or-later。你可以使用、研究、修改和分发本项目;分发修改版或衍生作品时,需要遵守 GPL 的源码公开和相同许可证要求。详见 LICENSE。
- 不要提交 Wi-Fi 密码、私钥或设备专属配置。
sdkconfig与sdkconfig.defaults是项目配置文件,修改时需要明确记录原因。build/是生成目录,不应手动编辑。
