自动售货机语音引导方案:WT2003H TF卡换音+UART控制方案
- 家居装饰
- 2026-09-18
- 2205
站在自动售货机前面的人,注意力基本都在手机上。扫码、付款、等出货,整个过程眼睛很少离开屏幕,机器上那块小屏和几颗指示灯很容易被略过。装一套语音,每个环节说一句话,投币引导、支付成功、出货提示、故障告警都能直接送到耳朵里。做自动售货机语音方案,WT2003H 的 M 系列里有一个带 TF 卡槽的版本值得先看,换音不用拆机也不用烧录器,卡拔出来插电脑上就能改。
售货机这个行当的运营节奏决定了怎么选型。点位上的货品几个月换一轮,促销话术跟着季节走,支付方式从投币到扫码再到刷脸每年都在加。提示音要是改一次就得拆机、接下载器、走完一遍烧录流程,运营方索性就不改了。TF 卡方案把这件事降成拔卡、拷文件、插回去三步,改话术的成本比换一张海报还低。
一、售货机为什么先看 TF 卡方案
WT2003HM02 是 WT2003H 系列里带 TF 卡槽的模块,32 位处理器,最高频率 120MHz,最大支持 32G 的 TF 卡和 32G 的 U 盘,文件系统支持 FAT 和 FAT32。模块可以同时挂载 TF 卡和 U 盘,两种存储各自有对应的播放指令。
用 TF 卡替代内置 Flash,差别集中在换音环节。单模块使用内置容量时,内置语音需要出厂前写入,运营方在现场改不了。TF 卡版本把语音文件放在外挂卡上,换音就是把卡拔出来插读卡器,拷完再插回去。
模块 20 个管脚,尺寸 21.01×18.21MM,引脚间距 2.0MM,装在售货机主控板上占的地方不大。
二、接线与关键管脚
供电走 VBAT,输入范围 2.6 到 5.0V,电源纹波控制在 5% 以内,峰值不能超过 5.5V。售货机内部通常是 12V 或 24V 电源轨,降压到 5V 给模块供电时,说明书建议加一颗 5V 单向 TVS 管,结电容选 10PF 左右,触发电压小于 7V,IPP 电流大于 25A。售货机的压缩机、电机、出货马达启动瞬间都有浪涌,这颗管子别省。
串口接 TX 和 RX 两个脚,3.3V TTL 电平,通讯格式是起始位 1 位、数据位 8 位、无奇偶校验、停止位 1 位,默认波特率 9600。
BUSY 脚是忙信号,播放时为高电平。这一点和 WTN6 系列不一样,WTN6 是空闲高、播放低,之前用过 WTN6 的工程师上手这块,逻辑别接反了。
喇叭接 SPK+ 和 SPK-,模块内置 0.5W D 类功放,直推即可。售货机内部噪杂,0.5W 对多数机型够用,如果喇叭离模块比较远或者要用更大功率的喇叭,发 B6 切到 DAC 输出,DACL 和 DACR 两个脚接外部功放。DAC 这部分的指标是信噪比 95dB、动态范围 92dB、总谐波失真加噪声 -65dB,接功放推大喇叭时底噪听不出来。
TF 卡座接 SD_DAT、SD_CMD、SD_CLK 三个脚。DM 和 DP 是 USB 的两个脚,引到板边的 USB 座上。这个口有两个用途,换音和离线升级程序,画板的时候要预留出来,产线调试和后期维护都得靠它。电源部分建议把烧录口作为测试点全部引出,出现异常或者混料时不用拆芯片就能在线刷。
三、UART 协议格式
帧结构是起始码 7E、长度、命令码、参数、累加和校验、结束码 EF。
长度的定义是长度字节、命令码、参数、校验和这几段加起来的总字节数。校验码是长度、命令码、参数三段的累加和取低字节。
拿 A2 播放指令举例,7E 05 A2 00 01 A8 EF 这条帧里,长度是 05,命令码 A2,参数 00 和 01,校验码由 05 加 A2 加 00 加 01 得到 0xA8。MCU 里写一个通用的组帧函数,所有指令都走它,不用每条命令单独拼一遍。
命令分写操作和读操作两组。写操作执行完返回结果码,读操作返回数据。
四、提示音清单与播放指令
售货机的提示音清单最好在画板之前定稿,索引号对应文案,后面改文案不动索引。一份能直接落地的清单长这样。
| 索引 | 触发时机 | 提示语 | MCU 动作 |
| 001 | 待机轮播 | 欢迎使用,请扫码或投币选购 | A2 播 01 |
| 002 | 支付成功 | 支付成功,请选择商品 | A2 播 02 |
| 003 | 出货中 | 商品正在出货,请稍候 | A2 播 03 |
| 004 | 取货提示 | 商品已到取货口,请及时取走 | A2 播 04 |
| 005 | 找零提示 | 请取走您的找零和购物小票 | A2 播 05 |
| 006 | 缺货提示 | 该货道暂时缺货,请选择其他商品 | 播放态 B1 插播,空闲态 A2 播 06 |
| 007 | 故障告警 | 设备故障,请联系工作人员 | 播放态 B1 插播,空闲态 A2 播 07 |
A2 按索引播放 TF 卡根目录下的文件,帧格式如下。
播放第 1 首
发 → 7E 05 A2 00 01 A8 EF
收 ← 7E 04 A2 00 A6 EF
播放第 5 首
发 → 7E 05 A2 00 05 AC EF
帧结构里的曲目高位和曲目低位分两个字节,第 300 首写成 0x012C,高位 0x01,低位 0x2C。7 条提示音都在 255 以内,高位字节固定是 00。
说明书里有一条要注意,指定的曲目不存在时,不影响当前播放。货道索引写错不会把正在播的提示掐断,调试的时候不至于一点声音都没有。
五、按货道分文件夹
提示音多起来之后,根目录一长串索引不好维护,A4 可以指定文件夹内的文件索引播放。文件夹名固定 5 个字符,采用 ASCII 码值,其他数据是十六进制。
播放 MUSIC 文件夹内第 1 首
发 → 7E 0A A4 4D 55 53 49 43 00 01 30 EF
收 ← 7E 04 A4 00 A8 EF
售货机按品类分文件夹用起来顺手,饮料一个、零食一个、生鲜一个,换季调货只动对应文件夹里的内容,别的文件夹索引不受影响。文件夹内的索引号从 1 重新开始算。
换完文件后做个自检,C6 查文件夹内的音频总数。
查询 MUSIC 文件夹内音频总数
发 → 7E 08 C6 4D 55 53 49 43 4F EF
收 ← 7E 05 C6 00 01 CC EF // 文件夹内有 1 首
C6 返回 00 00 表示文件夹里没有音频文件,或者文件夹名对不上。根目录总数用 C5 查,U 盘对应的是 C7 和 C8。
文件命名规整的话也可以用 A3 按文件名播放。这一节写明文件名必须 4 个字节,比如 T002 对应 7E 07 A3 54 30 30 32 90 EF。发码注意事项那一节又说文件名不超过 8 个字节,两处口径不一样,实际用文件名播放时按 4 个字节准备最稳。文件名可以是英文、数字或中文,任意组合。
六、故障告警插播
B1 和 A2 的差别在于它不动播放队列。收到 B1 时模块暂停当前曲目,插进指定音频,播完接着播原来那句,误差在 1 秒以内或者取整秒。整个过程 MCU 不用记断点。
HM02 的 B1 带一个标示字,01 表示插播 SD 卡内的指定索引,02 表示插播 U 盘内的指定索引。
插播 TF 卡内第 2 首
发 → 7E 06 B1 01 00 02 BA EF
收 ← 7E 04 B1 00 B5 EF
有两点要记住。第一次插播没播完时,发第二次插播命令无效,要等第一次播完才能再插。B1 的动作是暂停当前曲目、插一句、再播回原来那句,空闲状态下没有可恢复的内容,告警直接发 A2 就行。
售货机场景里,缺货和故障这类告警适合走 B1。用户正听着出货提示,告警能插进去,播完自动回到原来的话术,不用 MCU 去判断当时播到哪一句。同一个场地有几台设备的时候,B1 还支持设备之间的插播。
七、音量与播放模式
AE 控制音量,32 级,取值 00 到 1F,00 是静音,1F 是最大音量,这条指令有掉电记忆。
设为 30 级音量
发 → 7E 04 AE 1E D0 EF
售货机装在商场里和装在室外街边,合适的最优音量不一样,产线按机型调一次,现场掉电也不丢。
AF 设置播放模式,四种,00 单曲不循环是默认值,01 单曲循环,02 所有曲目循环,03 随机。这条指令没有掉电记忆,掉电后回到默认模式,MCU 在每次上电初始化时设一遍就行。
有个细节值得记住,播放模式设成所有曲目循环之后,再发 A4 指定文件夹里的一曲播放,播放会在那个文件夹内循环,不会跑到别的文件夹去。做循环促销话术或者背景音乐时用得上。
B6 切换音频输出方式,00 是 SPK 输出,01 是 DAC 输出,上电默认 SPK,有掉电记忆。
八、TF 卡换音实操
模块的文件索引是按文件存进卡里的先后顺序排的,不按文件名。卡里放着 001.mp3 到 007.mp3,看着整齐,复制的时候系统不保证按这个顺序写进去,播出来就是乱的。说明书给了两种复制方法。
一种是右键选中第一个音频文件,Ctrl+A 全选,再复制到目标盘符。过程中鼠标不能点中任何待发送的文件,点中哪个就从哪个开始发,顺序当场就乱。
另一种是先把文件顺序排列好,全部选中,右键点第一个文件,在菜单里选发送到 TF 卡的根目录。系统从右键点的那个文件开始发,所以右键要落在第一个文件上。
USB 线要带数据传输功能,市面上有的线只能充电,插上去不出盘符,容易被当成驱动问题查半天。第一次连接电脑会自动安装驱动,装完才会显示盘符。
拷贝完成必须拔掉 USB 线,再做串口控制。线还插着的时候串口发码没有响应,这个现象在产线调试时容易误判成模块坏了。
TF 卡要用 FAT 或 FAT32 格式。NTFS 的卡插上能识别,发指令却一直返回 02,说明书写明了这种情况大概率就是盘符格式不对。
换完音之后建议做一轮自检。C5 查根目录音频总数,C6 查指定文件夹内总数,C9 查当前播放曲目地址,CA 查外设挂载状态。CA 的返回值低 4 位里,BIT3 是 PC 连接、BIT2 是 U 盘、BIT1 是 TF 卡,1 表示存在。
查询外设连接状态
发 → 7E 03 CA CD EF
收 ← 7E 04 CA 06 D4 EF // TF 卡和 U 盘都在
CA 还有一个用法。TF 卡和 U 盘插入或拔出时,模块会主动返回数据做提示。售货机的 TF 卡被人拔走,MCU 收得到这个上报。把这路数据接进告警逻辑,卡没了能第一时间知道,不至于用户按了半天没反应还没人发现。
九、返码排错
指令发出去,模块会带结果码回帧,四组码覆盖了大部分问题。
00 表示执行成功。
01 表示命令出错。校验和算错、指令不在说明书描述的范围内、串口电平异常导致芯片误识别,这三种都会回 01。前两种查代码,串口电平这一项用标准串口工具单独发一条码就能确认。
02 表示无此文件。一种是索引超了,卡里只有 10 个文件却发了索引 11;另一种是盘符格式不对,NTFS 卡会一直回 02。
05 表示设备不在线。只挂了 Flash 却发索引 TF 卡里的文件,或者卡没读到、电路有问题,都会回 05。
发码间隔控制在 200 到 300ms。两条指令发得太密,模块来不及处理。每条控制命令发完读一下返回码,确认执行情况再走下一步。
十、边界与选型
TF 卡方案解决的是固定话术的换音便利性,两处边界要提前确认。
一是外挂 Flash 的型号约束。有些机型除了外挂 TF 卡还要内置一段语音,这种情况选的是支持 SPI-Flash 的 WT2003HM03,它的说明书里写明,要挂 Flash 就必须用唯创的 Flash,确有特殊原因不用,也要先和原厂业务交接备注,私自换其他家的会无法工作。这条在选型阶段就要和供应商对接清楚。
二是变量播报。售货机的消费金额、账户余额、会员积分每个用户都不同,TF 卡里存不下所有数字组合。这类内容要换 TTS 方案,把文本实时合成成语音。
| 需求层级 | 适合产品 | 能力边界 |
| TF 卡换音,固定话术 | WT2003HM02 | 支持 TF 卡和 U 盘,最大 32G,UART 控制 |
| 内置语音加 TF 卡 | WT2003HM03 | 支持 SPI-Flash、TF 卡、U 盘,可内置 100 秒或 350 秒语音 |
| 金额、余额等变量播报 | WT3000 系列 TTS 芯片 | 文本实时合成,不受音频文件限制 |
| 语音问答交互 | WT3000A M 系列模块 | 联网大模型理解用户提问后直接作答 |
售货机的运营方如果预算有限,先用 WT2003HM02 把固定引导做扎实,后续按需要升到 TTS 或者带交互能力的方案,MCU 侧的串口控制框架不用重写。






