在这里插入图片描述

每日一句正能量

如果你懂得珍惜,你会发现你获得的越来越多;如果你一昧追求,你会发现你失去的越来越快。


目录

  1. 缘起:为什么要把音箱变成 PLC?
  2. 小智 MCP 协议快速扫盲
  3. 硬件选型:继电器模组 + 12V 电源轨
  4. 电路设计:ESP32-C3 作为「语音→GPIO」桥梁
  5. 固件开发:MCP 命令解析 + 低功耗策略
  6. 小智技能创建:3 分钟可视化拖拽
  7. 实战:「打开排风扇」→ 继电器动作全流程抓包
  8. 功耗测试 & 成本复盘
  9. 踩坑与解决方案
  10. 开源地址 & 二次开发指南

1. 缘起:为什么要把音箱变成 PLC?

传统 PLC 痛点:

  • 编程门槛高(梯形图 + 上位机)
  • 无语音交互,需另配 HMI
  • 家用场景「大材小用」,成本高

小智 AI 音箱优势:

  • 6 麦阵列 + 远场降噪,识别率 97%+
  • MCP(Mini Control Protocol)开放串口命令
  • 89 元首发价,比 PLC 便宜一个量级

思路:用 MCP 扩展 GPIO,把「语音」→「继电器」→「220V 设备」,做成「语音 PLC」。


2. 小智 MCP 协议快速扫盲

文档地址:https://doc.xiaozhi.ai/mcp/
一句话:MCP 是基于 UART 的文本协议,波特率 115200,帧格式:

$CMD,PAR1,PAR2,PAR3#
  • $MOTOR,1,100,0# → 打开继电器 1,100ms 脉宽
  • $QUERY,0,0,0# → 查询所有 GPIO 状态
  • 响应:$ACK,ERR_CODE,0,0#

小智 SDK 已封装 sendMcpCommand(),无需手动组包。


3. 硬件选型:继电器模组 + 12V 电源轨

功能 型号 单价
主控 ESP32-C3-Mini-1 12 元
继电器 SRD-12VDC-SL-C ×4 2.5 元×4
电源 12V/2A 适配器 15 元
隔离光耦 PC817 ×4 0.5 元×4
端子台 3.81mm ×8 1 元×8
保险丝 2A 自恢复 1 元
总计 39 元

→ 比最便宜的 PLC(台达 24MR,≈180 元)便宜 78%。


4. 电路设计:ESP32-C3 作为「语音→GPIO」桥梁

原理图亮点:

  • 光耦隔离:ESP32 GPIO → PC817 → 继电器线圈
  • 自恢复保险丝:防止 220V 短路反馈
  • 手动按键:保留传统「按钮」接口,双冗余

KiCad 3D:

打样:JLC 2 层,10 片 50 元,拼板 4×1。


5. 固件开发:MCP 命令解析 + 低功耗策略

工程结构(ESP-IDF 5.1):

mcp-plc/
├── main/
│   ├── mcp_parser.c      // 帧解析
│   ├── relay_ctrl.c      // 继电器驱动
│   └── power_mgr.c       // 休眠管理
└── CMakeLists.txt

核心逻辑:

// mcp_parser.c
void uart_event_task(void *pv) {
    uart_event_t event;
    while (true) {
        if (xQueueReceive(uart_queue, &event, portMAX_DELAY)) {
            if (event.type == UART_DATA) {
                memset(mcp_buf, 0, sizeof(mcp_buf));
                uart_read_bytes(UART_NUM_1, mcp_buf, event.size, pdMS_TO_TICKS(100));
                parse_mcp_frame(mcp_buf);
            }
        }
    }
}

static void parse_mcp_frame(const char *frame) {
    // 正则匹配:\$MOTOR,(\d),(\d+),(\d)#
    int relay_id, pulse_ms, flag;
    if (sscanf(frame, "$MOTOR,%d,%d,%d#", &relay_id, &pulse_ms, &flag) == 3) {
        relay_toggle(relay_id, pulse_ms);
    }
}

低功耗:

  • 深度睡眠 60 μA,唤醒源:UART + 按键
  • 每次动作后 5 s 自动进入休眠

6. 小智技能创建:3 分钟可视化拖拽

  1. 打开 小智 AI 开放平台 → 新建技能
  2. 意图:打开排风扇
  3. 回复:「好的,排风扇已打开」
  4. 后端选择:MCP 硬件控制
  5. 命令填充:$MOTOR,1,500,0#(500 ms 脉宽,防止触点粘连)

保存 → 发布 → OTA 推送,全程 3 分钟。


7. 实战:「打开排风扇」→ 继电器动作全流程抓包

语音输入:「小智,打开排风扇」
↓ 云端 ASR → 意图匹配
↓ 回包 MCP 命令:$MOTOR,1,500,0#
↓ UART 到 ESP32-C3
↓ 继电器 D1 亮灯,220V 排风扇启动

逻辑分析仪抓包:

  • 帧延迟:18 ms(云端→本地)
  • 继电器动作:12 ms
  • 总延迟:30 ms < 50 ms K.O.

8. 功耗测试 & 成本复盘

模式 电流 功率 备注
待机 1.2 mA 4 mW 休眠+Wi-Fi保活
继电器吸合 75 mA 900 mW 4 路全开
深度睡眠 60 μA 0.2 mW 手动按键唤醒

4 路全开 10 s → 关闭 → 休眠:

  • 400 mAh 锂电池 → 理论 2000 次动作
  • 实测 1800 次(含 Wi-Fi 保活)

成本复盘(100 套):

  • PCB + 器件:39 元
  • 外壳(3D 打印):6 元
  • 包装 + 线材:5 元
  • 合计 50 元 / 套,比 PLC 节省 70%。

9. 踩坑与解决方案

问题 现象 根因 解决
继电器吸合抖动 220V 设备闪烁 线圈电流不足 加大光耦限流电阻 → 驱动电流 8 mA
Wi-Fi 掉线重连 MCP 命令无响应 信道拥塞 启用 ESP-NOW 备用通道
220V 电弧干扰 UART 误码 无隔离 加入 104 电容 + 磁珠吸收

10. 开源地址 & 二次开发指南

二次开发玩法

  1. 换成 16A 继电器 → 控制空调、热水器
  2. 加入零火检测 → 实现「单火线」安装
  3. 用 Matter-over-Thread → 接入 HomeKit

11. 结语:让语音成为 PLC 的新操作面板

50 元成本、30 ms 延迟、60 μA 待机,
小智 AI 音箱 + MCP 协议,让「语音即逻辑」走进千家万户。

语音不是噱头,而是最低门槛的「人机界面」。
下一个 IoT 爆款,也许就从你的「Hello,小智」开始。

欢迎在评论区晒你的「语音控制」视频,
一起把 MCP 玩出更多新花样!

转载自:https://blog.csdn.net/u014727709/article/details/155487374
欢迎 👍点赞✍评论⭐收藏,欢迎指正

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐