前言
对于嵌入式开发初学者或非专业开发者来说,编写 C 代码可能是一个不小的门槛。幸运的是,SmartPi 的 CI-03T/CI-33T 系列离线语音模组支持使用米思奇(Mixly)进行图形化积木编程,开发者无需编写一行 C 代码即可实现语音控制、串口通信等复杂功能。 本文将系统介绍如何从零开始搭建 CI-03T 的图形化开发环境,并实现与 Arduino 的串口通信交互。所有技术参数已与官方文档交叉验证。
为什么选择图形化编程?
传统代码开发 vs 图形化编程
| 对比项 | 传统 C 代码开发 | 米思奇图形化编程 |
|---|---|---|
| 学习门槛 | 需要掌握 C 语言语法 | 拖拽积木块,无需代码基础 |
| 开发效率 | 需要手动编写编译配置 | 可视化配置,所见即所得 |
| 调试难度 | 需要熟悉串口调试工具 | 内置调试功能,问题定位直观 |
| 适用人群 | 专业嵌入式开发者 | 创客、学生、快速原型开发者 |
支持的模组型号
- CI-03T:经典离线语音识别模组
- CI-33T:增强版离线语音模组
- CI-03T2:CI-03T 的升级版本
开发环境搭建
第一步:下载安装包
官方提供了一体化安装包,包含:
- 米思奇(Mixly)软件
- CI-03T 板卡支持文件
- 固件生成工具(blockTool.exe)
下载地址:米思奇软件安装和模块导入
第二步:安装 Notepad++ 并配置账号
- 安装 Notepad++(用于编辑配置文件)
- 找到
CI-03T安装包/ci03t/build目录下的blockTool.exe.config文件 - 使用 Notepad++ 打开,填写智能公元平台的账号和密码
<appSettings>
<add key="username" value="your_smartpi_username" />
<add key="password" value="your_smartpi_password" />
</appSettings>
第三步:更新米思奇软件
!!! tip "重要提示" 使用前请务必将米思奇软件更新到 Mixly 2.0 rc4 版本!绝大多数报错都是版本不一致导致的。 打开米思奇安装包,选择 "一键更新"。建议多更新两次,确保更新到位。
第四步:导入 CI-03T 板卡
- 打开米思奇软件
- 点击右上角板卡选择列表
- 选择 "导入库"
- 浏览到安装包中的
rc4_ci03t文件夹 - 选择整个文件夹(无需选择单个文件)
!!! warning "常见错误" 不要试图选择单个 .java 或 .xml 文件,应选择整个 rc4_ci03t 文件夹。
第五步:硬件连接
将 CI-03T 模组与 CH340 USB 转串口模块连接:
| CI-03T 引脚 | CH340 引脚 | 说明 |
|---|---|---|
| TX | RX | 发送 → 接收(交叉连接) |
| RX | TX | 接收 → 发送(交叉连接) |
| GND | GND | 共地 |
| 5V/3.3V | 5V/3.3V | 供电保持一致 |
| 连接完成后,通过 USB 线将 CH340 接入电脑。 |
实战案例:语音控制 Arduino LED
本案例实现:对 CI-03T 说"打开空调",Arduino 点亮 LED;说"关闭空调",LED 熄灭。
硬件准备
- CI-03T 语音模组
- Arduino 开发板(Uno/Nano 均可)
- LED 一个
- 220Ω 电阻一个
- 面包板及杜邦线若干
硬件连接
CI-03T 与 Arduino 连接:
| CI-03T 引脚 | Arduino 引脚 |
|---|---|
| TX | RX (Pin 0) |
| RX | TX (Pin 1) |
| GND | GND |
| 5V | 5V |
| LED 连接到 Arduino Pin 13(板载 LED)或外接 LED。 |
米思奇积木编程
在米思奇中搭建以下逻辑:
┌─────────────────────────────────────┐
│ 当设备启动时 │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 初始化串口:波特率 9600 │
└─────────────────────────────────────┘
│
┌────────┴────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│识别"打开空调"│ │识别"关闭空调"│
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│串口发送"AC_ON"│ │串口发送"AC_OFF"│
└─────────────┘ └─────────────┘
Arduino 代码
void setup() {
// 初始化串口通信,波特率与 CI-03T 保持一致
Serial.begin(9600);
// 设置 Pin 13 为输出模式
pinMode(13, OUTPUT);
}
void loop() {
// 检查串口是否有数据
if (Serial.available() > 0) {
// 读取串口字符串
String cmd = Serial.readString();
// 去除换行符
cmd.trim();
// 根据命令执行操作
if (cmd == "AC_ON") {
digitalWrite(13, HIGH); // 点亮 LED
} else if (cmd == "AC_OFF") {
digitalWrite(13, LOW); // 熄灭 LED
}
}
}
上传与测试
- 点击米思奇左上角 "上传" 按钮
- 等待约 3 分钟固件生成完成
- 根据提示将 CI-03T 重新上电
- 对着 CI-03T 说"打开空调",观察 LED 是否点亮
- 对着 CI-03T 说"关闭空调",观察 LED 是否熄灭
常用积木指令参考
流程控制积木
| 积木块 | 功能说明 |
|---|---|
| 顺序执行 | 按顺序执行连接的积木块 |
| 如果…那么…否则… | 条件判断语句 |
| 重复 N 次 | 循环执行指定次数 |
| 一直重复 | 无限循环 |
变量与运算积木
| 积木块 | 功能说明 |
|---|---|
| 创建变量 | 创建数字/文本/布尔变量 |
| 设置变量为 | 给变量赋值 |
| 变量 + 数字 | 数值运算(加减乘除) |
| 变量 = 数字 | 比较运算(大于/小于/等于) |
串口通信积木
| 积木块 | 功能说明 |
|---|---|
| 初始化串口 | 设置波特率(9600/115200) |
| 串口发送字符串 | 向外部设备发送文本 |
| 串口发送数字 | 向外部设备发送数值 |
| 串口接收字符串 | 从外部设备读取数据 |
硬件控制积木
| 积木块 | 功能说明 |
|---|---|
| 设置数字引脚 | 输出高/低电平 |
| 设置 PWM 输出 | 调节亮度或速度 |
| 读取数字引脚 | 读取按键或传感器 |
| 读取模拟引脚 | 读取电位器或模拟传感器 |
常见问题排查
问题一:上传卡住或报错
可能原因:
blockTool.exe.config账号密码错误- 网络连接不稳定
- 米思奇版本过低
解决方案:
- 检查配置文件中的账号密码是否正确
- 确认网络连接正常
- 更新米思奇到 Mixly 2.0 rc4
- 重启米思奇软件
问题二:串口接收不到数据
可能原因:
- TX/RX 连接错误(需要交叉连接)
- 波特率不一致
- 串口号被占用
解决方案:
- 检查 CI-03T 的 TX 是否连接到 Arduino 的 RX
- 确认两边波特率设置一致(通常为 9600)
- 关闭串口监视器后再测试
问题三:语音指令无法识别
可能原因:
- 技能未发布
- 固件版本过旧
- 麦克风或供电问题
解决方案:
- 在智能公元平台发布技能并同步词库
- 烧录最新版本固件
- 使用 5V 稳定供电
- 麦克风远离噪音源
问题四:提示"不是内部或外部命令"
可能原因:
- blockTool.exe 路径错误
- 中文路径问题
- 文件解压不完整
解决方案:
- 检查
build文件夹中是否存在blockTool.exe - 将安装包解压到纯英文路径(如
C:\Mixly) - 重新下载并解压安装包
问题五:Mixly 固件生成过慢
**问题描述:**在 Mixly 平台生成固件时,等待时间过长,半节课仍未完成。 解决方案:
- 使用快速模式:生成时间约 3 分钟
- 平台直接开发:登录 smartpi.cn 平台直接生成,速度更快
- 错峰使用:避开工作日上午等高峰时段
进阶技巧
使用变量播报
┌─────────────────────────────────────┐
│ 设置变量"温度"为 25 │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 播报变量"温度" │
└─────────────────────────────────────┘
!!! warning "注意事项"
- 变量播报需要使用专门的"播报变量"积木块
- 不能直接将变量放入文本播报中
- 确保变量已正确初始化
- 不能直接将变量放入文本播报中
与 SSD1306 OLED 显示屏配合
在米思奇中使用 U8g2 库驱动 SSD1306 显示中文:
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
void setup() {
u8g2.begin();
u8g2.setFont(u8g2_font_chinese16_1); // 设置中文字体
}
void loop() {
u8g2.clearBuffer();
u8g2.setCursor(0, 10);
u8g2.print("你好"); // 显示中文
u8g2.sendBuffer();
}
学习资源
| 资源类型 | 链接 |
|---|---|
| 官方 Block 文档 | help.aimachip.com/docs/block |
| Mixly 官方手册 | mixly.org/ |
| 智能公元平台 | smartpi.cn/ |
| 新手入门视频 | www.bilibili.com/video/BV1e8… |
| 基础教程视频 | www.bilibili.com/video/BV11Y… |
总结
米思奇图形化编程为 CI-03T 离线语音模组提供了零门槛的开发方式。通过拖拽积木块,开发者可以快速实现:
- 语音识别与控制
- 串口通信与数据交互
- GPIO 控制与传感器读取
- 与 Arduino/STM32 等外部 MCU 协作
上手清单:
- 下载并安装米思奇 Mixly 2.0 rc4
- 配置 blockTool.exe.config 账号密码
- 导入 CI-03T 板卡支持文件
- 完成第一个 LED 控制案例
- 探索更多积木指令组合
图形化编程不仅是学习嵌入式开发的起点,也是快速验证创意想法的有力工具。从简单的 LED 控制开始,逐步探索语音交互的无限可能。
参考资源
| 资源类型 | 链接 |
|---|---|
| 官方 Block 文档 | help.aimachip.com/docs/block |
| Mixly 官方手册 | mixly.org/ |
| 智能公元平台 | smartpi.cn/ |
| 新手入门视频 | www.bilibili.com/video/BV1e8… |
| 基础教程视频 | www.bilibili.com/video/BV11Y… |
| 相关标签:CI-03T、米思奇、图形化编程、Arduino、串口通信、离线语音、积木编程 |