旧物重生:拆解刮胡刀,打造小智AI语音控制的智能警报器

2026-10-052

一、项目缘起

家里有个旧电动刮胡刀,但拆开一看,里面的直流电机和电池还挺好。正好还有个旋转就能发光发声的玩具,结构简单,转起来又闪又响。于是我想:能不能把这些“废品”组合起来,做一个能用语音控制的警报装置?说“有危险”就启动,说“危险解除”就停止。

更进一步,我把它接入 小智AI(xiaozhi.me),通过 MCP(模型上下文协议) 让语音助手直接调用硬件工具。这样不仅好玩,还能作为以后项目的基础——比如加上远距离超声波传感器,放在施工场所提醒路人,尤其是晚上和视障人士。

这个项目成本极低,核心只用了 ESP32-C3 和 DFRobot 继电器模块,其余全是旧物利用。下面分享完整制作过程。
旧物重生:拆解刮胡刀,打造小智AI语音控制的智能警报器_image_1.webp

二、材料清单

名称 数量 备注
ESP32-C3 开发板 1 支持 WiFi,Arduino IDE 可编程
DFRobot 继电器模块 DFR0017 1 控制电机通断,250VAC/10A
旧电动刮胡刀 1 拆出直流电机和电池
旋转发光发声玩具 1 固定在电机轴上
杜邦线 若干 公对母、母对母
5V 电源 1 给 ESP32 和继电器供电
导线、热熔胶、扎带 若干 固定与连接

继电器模块购买链接:DFRobot DFR0017

旧物重生:拆解刮胡刀,打造小智AI语音控制的智能警报器_image_2.webp

三、硬件连接

1. ESP32-C3 与继电器模块

ESP32-C3 继电器模块 说明
GPIO0 信号端(绿线) 高电平吸合
5V VCC(红线) 供电
GND GND(黑线) 共地

2. 继电器与刮胡刀电机电路

继电器输出端使用 COM 和 NO(常开):

继电器 COM  →  电源正极(刮胡刀电池或5V)
继电器 NO   →  电机正极
电源负极    →  电机负极

旧物重生:拆解刮胡刀,打造小智AI语音控制的智能警报器_image_3.webp旧物重生:拆解刮胡刀,打造小智AI语音控制的智能警报器_image_4.webp

⚠️ 注意:ESP32-C3 的 IO 口不能直接驱动电机,必须通过继电器隔离。电机供电建议使用原电池或独立 3~5V 电源,避免干扰主控。

3. 整体接线示意

ESP32-C3                继电器模块              刮胡刀电机电路
─────────              ──────────              ──────────────
GPIO0  ────────────→  信号端(绿)
5V     ────────────→  VCC(红)
GND    ────────────→  GND(黑)

                       COM ──────────────→  电源正极
                       NO  ──────────────→  电机正极
                                              电源负极 ──→ 电机负极

四、软件准备

  1. 安装 Arduino IDE,添加 ESP32 开发板支持(ESP32 by Espressif)。
  2. 安装 xiaozhi-mcp 库(小智官方库,Arduino ide 库管理 获取)。
  3. 打开代码,修改 WiFi 和 MCP 接入点信息。

核心配置:

const char* WIFI_SSID = "****";
const char* WIFI_PASS = "*****";

const char* MCP_ENDPOINT = "wss://api.xiaozhi.me/mcp/?token=你的token";

#define RELAY_PIN 0  // ESP32-C3 GPIO0

五、代码解析

完整代码已上传至附件,这里讲解关键部分。

1. 继电器控制函数

void controlAlarm(bool state) {
  if (state) {
    digitalWrite(RELAY_PIN, HIGH);  // 继电器吸合,电机转动
    alarmActive = true;
    Serial.println("[警报] 已启动");
  } else {
    digitalWrite(RELAY_PIN, LOW);   // 继电器释放,电机停止
    alarmActive = false;
    Serial.println("[警报] 已停止");
  }
}

2. 注册 MCP 工具

这是与小智AI交互的核心。我们注册一个 alarm_control 工具,让 AI 根据用户语音调用。

mcpClient.registerTool(
  "alarm_control",
  "控制警报装置。当用户说'有危险''开始警报''启动警报'时调用此工具启动警报;当用户说'危险解除''停止警报''关闭警报'时调用此工具停止警报。",
  "{\"properties\":{\"action\":{\"title\":\"操作\",\"type\":\"string\",\"enum\":[\"start\",\"stop\"]}},\"required\":[\"action\"],\"type\":\"object\"}",
  [](const String& args) {
    DynamicJsonDocument doc(256);
    deserializeJson(doc, args);
    String action = doc["action"].as<String>();
    if (action == "start") {
      controlAlarm(true);
      return WebSocketMCP::ToolResponse("{\"success\":true,\"message\":\"警报已启动\"}");
    } else if (action == "stop") {
      controlAlarm(false);
      return WebSocketMCP::ToolResponse("{\"success\":true,\"message\":\"警报已停止\"}");
    }
    return WebSocketMCP::ToolResponse("{\"success\":false}", true);
  }
);

同时注册 alarm_status 用于查询状态。

3. 小智后台系统提示词

登录 xiaozhi.me,在智能体设置中添加:

你是一个安全警报助手,连接了可发出声光警报的装置。
当用户提到"有危险""开始警报""启动警报"时,调用 alarm_control,action=start。
当用户提到"危险解除""停止警报""关闭警报"时,调用 alarm_control,action=stop。
执行后简短确认。

旧物重生:拆解刮胡刀,打造小智AI语音控制的智能警报器_image_5.webp

六、组装与测试

  1. 拆解刮胡刀:取出直流电机和电池,保留电机轴上的偏心轮或连接结构。
  2. 固定玩具:将旋转发光发声玩具用热熔胶固定在电机轴上,确保旋转平衡。
  3. 连接电路:按上述接线图连接 ESP32-C3、继电器和电机。
  4. 上传程序:Arduino IDE 选择 ESP32-C3 Dev Module,上传代码。
  5. 串口调试:打开串口监视器(115200),确认 WiFi 和 MCP 连接成功,工具注册完成。
  6. 手动测试:串口输入 start 和 stop,观察继电器吸合/释放,电机转动/停止。
  7. 语音测试:唤醒小智设备,说“有危险”,警报启动;说“危险解除”,警报停止。

七、效果展示

  • 语音“有危险” → 继电器“咔嗒”吸合 → 电机带动玩具旋转 → 发出闪烁灯光和警报声。
  • 语音“危险解除” → 继电器释放 → 电机停止 → 声光消失。
  • 电机与玩具需加强固定

演示视频

八、未来拓展:施工场所智能预警

这个项目只是起点。我们可以在此基础上加入 远距离超声波传感器(如 DFRobot URM07-UART 低功耗超声波测距模块,有效测量距离 7.5 米),做成施工场所的智能安全卫士:

  • 自动检测:超声波实时监测前方行人,当距离小于设定阈值(如 3 米)时,自动触发警报。
  • 夜间增强:加光敏电阻,天黑后自动提高警报音量或增加灯光闪烁频率。
  • 视障人士友好:通过语音模块播报“前方施工,请注意安全”,或使用不同频率的蜂鸣声提示距离。
  • 多传感器融合:可再加红外人体感应,减少误报。

升级后的逻辑:

超声波测距 → 距离 < 阈值 → 触发继电器 → 声光警报
           → 距离 > 阈值 → 停止警报

代码框架只需在 loop() 中读取超声波数据,并调用 controlAlarm() 即可。MCP 工具也可以扩展为 set_threshold、get_distance 等,让语音助手随时调整参数。

九、总结

这个项目把旧刮胡刀和玩具变成了语音控制的智能警报器,成本几乎为零,却打通了“语音→AI→硬件”的完整链路。更重要的是,它为我们提供了一个可扩展的平台:加上超声波传感器,就能守护施工路段的安全,尤其在夜间和视障人士出行场景中发挥价值。

创客的乐趣就在于此——用双手让旧物重生,用代码让想法落地。希望这个项目能给你带来灵感,也欢迎在 DF创客社区一起交流改进!


完整代码:见附件 alarm_control.ino
小智AI接入:https://xiaozhi.me
DFRobot继电器模块:https://www.dfrobot.com.cn/goods-1370.html

如果你也做了类似项目,欢迎在评论区晒图交流!

创作许可协议

本项目采用 CC BY(署名) 进行许可。

所需材料/产品

加载全部

    Gravity: 数字继电器模块 - 兼容Arduino和树莓派

    Gravity: 数字继电器模块 - 兼容Arduino和树莓派

    Gravity: 数字继电器模块 - 兼容Arduino和树莓派

相关推荐

评论(0)
- 没有更多了 -

创作许可协议

本项目采用 CC BY(署名) 进行许可。

相关推荐

所需材料/产品

Gravity: 数字继电器模块 - 兼容Arduino和树莓派

Gravity: 数字继电器模块 - 兼容Arduino和树莓派

Gravity: 数字继电器模块 - 兼容Arduino和树莓派