Skip to content

USB Power模块(适用于继电器控制)

本章节介绍如何使用 SparkC3 控制 USB Power 模块。

本教程同样适用于市场上销售的继电器控制模块。

原理图

原理图

硬件连接

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

SparkC3套件连接

基础代码示例

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 服务器
  • 远程控制接口
  • 状态监控功能

使用步骤

  1. 将 SparkC3 通过 USB Serial 连接到计算机。
  2. 在 Arduino IDE 中打开上述代码。
  3. 替换 Wi-Fi SSID 和密码。
  4. 在弹出的对话框中选择正确的串口设备
  5. 上传代码到 SparkC3。
  6. 等待固件烧录完成
  7. 将 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 地址直接访问
  • 检查防火墙设置

获取帮助

如果以上方法都无法解决问题,请:

  1. 记录详细的错误信息和操作步骤
  2. 通过以下方式联系技术支持:
    • QQ群:[待补充]
    • 邮箱:lbuque@163.com
    • GitHub Issues:[待补充]