USB Power模块(适用于继电器控制)
本章节介绍如何使用 SparkC3 控制 USB Power 模块。
本教程同样适用于市场上销售的继电器控制模块。
原理图

硬件连接
将 SparkC3 和 USB Power 模块连接起来,确保连接正确。

基础代码示例
Arduino IDE 示例
使用 SparkC3 循环间隔 2S 控制继电器模块开和关。
使用下面的工具可以直接在浏览器中烧录预编译的固件到 SparkC3 开发板,无需安装任何软件:
ESP32 烧录工具 (官方API)
未连接
选择固件
操作日志
使用说明和故障排查
如果出现无法烧录等情况,请参考 ESP Flasher 使用说明
代码如下:
cpp
#include <Arduino.h>
#define POWER_PIN 9 // USB Power 控制引脚
void setup() {
Serial.begin(115200);
pinMode(POWER_PIN, OUTPUT);
digitalWrite(POWER_PIN, HIGH); // 使用高电平来关闭 USB 的电源
Serial.println("USB Power 控制系统启动");
}
void loop() {
// 打开 USB Power
digitalWrite(POWER_PIN, LOW);
Serial.println("USB Power 开启");
delay(2000);
// 关闭 USB Power
digitalWrite(POWER_PIN, HIGH);
Serial.println("USB Power 关闭");
delay(2000);
}MicroPython 示例
即将推出...
Wi-Fi 远程控制
通过 Wi-Fi 连接实现远程 USB Power 控制, 支持以下功能:
- 预配置的 USB Power 控制代码
- Wi-Fi 连接和 Web 服务器
- 远程控制接口
- 状态监控功能
使用步骤
- 将 SparkC3 通过 USB Serial 连接到计算机。
- 在 Arduino IDE 中打开上述代码。
- 替换 Wi-Fi SSID 和密码。
- 在弹出的对话框中选择正确的串口设备
- 上传代码到 SparkC3。
- 等待固件烧录完成
- 将 SparkC3 连接到 USB Power 模块。
代码如下:
cpp
#include <WiFi.h>
#include <WebServer.h>
// !!! 请替换为您的 Wi-Fi SSID 和密码 !!!
const char* ssid = "your_wifi_ssid";
const char* password = "your_wifi_password";
WebServer server(80);
const int relayPin = 9;
bool relayState = false;
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // 初始状态关闭
// 连接 Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("正在连接WiFi...");
}
Serial.println("WiFi连接成功");
Serial.print("IP地址: ");
Serial.println(WiFi.localIP());
// 设置Web服务器路由
server.on("/", handleRoot);
server.on("/relay/on", handleRelayOn);
server.on("/relay/off", handleRelayOff);
server.on("/status", handleStatus);
server.begin();
Serial.println("Web服务器启动");
}
void loop() {
server.handleClient();
}
void handleRoot() {
String html = "<!DOCTYPE html>";
html += "<html><head>";
html += "<meta charset='UTF-8'>";
html += "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
html += "<title>SparkC3 USB Power 控制</title>";
html += "<style>";
html += "body { font-family: Arial, sans-serif; text-align: center; margin: 50px; }";
html += "button { padding: 10px 20px; margin: 10px; font-size: 16px; cursor: pointer; }";
html += ".status { font-size: 18px; margin: 20px 0; }";
html += "</style>";
html += "</head><body>";
html += "<h1>SparkC3 USB Power 控制</h1>";
html += "<div class='status'>USB Power 状态: <span id='status'>" + String(relayState ? "开启" : "关闭") + "</span></div>";
html += "<button onclick='toggleRelay(true)'>开启</button>";
html += "<button onclick='toggleRelay(false)'>关闭</button>";
html += "<script>";
html += "function toggleRelay(state) {";
html += " var xhr = new XMLHttpRequest();";
html += " xhr.onreadystatechange = function() {";
html += " if (xhr.readyState == 4 && xhr.status == 200) {";
html += " document.getElementById('status').innerText = state ? '开启' : '关闭';";
html += " }";
html += " };";
html += " xhr.open('GET', state ? '/relay/on' : '/relay/off', true);";
html += " xhr.send();";
html += "}";
html += "</script>";
html += "</body></html>";
server.send(200, "text/html; charset=utf-8", html);
}
void handleRelayOn() {
digitalWrite(relayPin, LOW);
relayState = true;
server.send(200, "text/plain; charset=utf-8", "USB Power 已开启");
}
void handleRelayOff() {
digitalWrite(relayPin, HIGH);
relayState = false;
server.send(200, "text/plain; charset=utf-8", "USB Power 已关闭");
}
void handleStatus() {
String json = "{\"relay\":" + String(relayState ? "true" : "false") + "}";
server.send(200, "application/json", json);
}注意事项
暂无
故障排除
常见问题及解决方案
1. 无法连接设备
问题症状:点击"连接设备"后没有弹出串口选择对话框,或显示连接失败
解决方案:
- 确认使用的是 Chrome 或 Edge 浏览器
- 检查 USB 线是否支持数据传输(不仅仅是充电线)
- 尝试更换 USB 端口
- 检查设备管理器中是否识别到 ESP32 设备
2. 烧录失败
问题症状:烧录过程中断或显示错误信息
解决方案:
- 降低波特率到 115200 重试
- 检查固件文件是否完整
- 关闭其他可能占用串口的程序(如 Arduino IDE 串口监视器)
3. 设备不工作
问题症状:固件烧录成功但 USB Power 不响应
解决方案:
- 检查硬件连接是否正确
- 确认继电器模块供电正常
- 使用串口监视器查看设备启动日志
- 检查 Wi-Fi 连接状态
4. 无法访问 Web 界面
问题症状:设备连接 Wi-Fi 成功但无法打开控制页面
解决方案:
- 确认设备和电脑在同一网络下
- 检查路由器是否开启了设备隔离
- 尝试使用设备的 IP 地址直接访问
- 检查防火墙设置
获取帮助
如果以上方法都无法解决问题,请:
- 记录详细的错误信息和操作步骤
- 通过以下方式联系技术支持:
- QQ群:[待补充]
- 邮箱:lbuque@163.com
- GitHub Issues:[待补充]