• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

智能晾衣架语音提示与语音控制方案

10小时前
149
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

智能晾衣架语音方案_最终版.docx

共1个文件

智能晾衣架正在从电动升降加速向语音交互升级。传统晾衣架依赖墙壁开关遥控器,用户双手提满衣物时根本无法操作,这是制约产品体验的核心痛点。唯创知音基于WT588F02和WTK6900HC两款芯片,分别面向基础语音提示和全语音控制两大需求,提供了一套完整的单芯片解决方案,帮助客户在不大幅改动现有主控设计的前提下,快速实现产品智能化升级。

本文面向智能晾衣架研发工程师,从需求拆解、芯片选型、电路设计MCU端代码实现,逐一展开说明。所有电气参数均对照唯创知音原厂规格书核对,可直接作为设计参考。

需求一:基础语音提示方案

痛点:用户不知道晾衣架在做什么

晾衣架升降过程中,用户对设备状态完全无感。上升到顶还是卡住了?烘干功能开了没有?过载保护触发了没有?这些问题在传统产品上只能靠用户自己观察LED指示灯来判断,体验极差。

增加语音提示是最直接的解决方式:升降到位自动播报,功能开关操作后有确认音,异常情况主动报警。不需要语音识别,不需要唤醒词,主控MCU在检测到对应事件后,通过串口向语音芯片发一条指令即可触发播报。

芯片选型:WT588F02还是WTN6170

对比维度 WT588F02-8S-C WTN6170
语音内容是否可更换 支持,FLASH型,下载器随时烧录 不支持,掩膜出厂固化
工作电压 2.2~5.5V 2.4~5.2V
待机电流 <5μA <5μA
音频输出 16位PWM直驱 / DAC外接功放 12位PWM直驱 / DAC外接功放
控制接口 一线串口 / 两线串口 一线 / 两线 / 数脉冲 / 按键
语音时长 150秒(12kHz采样) 170秒
上电初始化 约40ms 约100ms
封装 SOP8,体积最小 SOP8 / DIP8
适用场景 需要多语言版本、后期改提示音 量很大、语音内容完全固定

选型结论:绝大多数智能晾衣架项目应选WT588F02-8S-C。晾衣架出口产品需要多语言版本,国内产品也需要根据客户反馈调整提示音,FLASH型芯片支持随时烧录这一条就足够。WTN6170只适合年产十万台以上、语音内容完全不需要改动的项目。

WT588F02电路设计要点

WT588F02采用SOP8封装,外围元件极少,适合直接嵌入晾衣架主控板。

电源去耦是规格书反复强调的重点。 电容必须紧贴芯片VCC脚放置,VCC脚、电容、GND脚的回路总长控制在4cm以内。这个要求不是建议,是强制,否则芯片在电机干扰下可能工作异常。具体走线方式规格书给出了优选方案:电源走线先经过去耦电容,再从电容后铺铜回到芯片GND脚,不要在芯片GND脚直接铺铜。

PWM输出走线有长度限制。 喇叭连线短于15cm时双绞即可,长于15cm则必须在PWM正负两路都串磁珠后再接喇叭,否则EMI辐射可能干扰其他电路。

Pin8严禁加上拉电阻。 规格书多次强调这一点:IO2脚上电时为高会导致芯片进入非工作模式,设计时必须确认这一脚悬空或下拉。

典型应用电路如下:MCU通过一线串口连接WT588F02的Pin2(DATA),BUSY信号可选接MCU GPIO用于检测播报状态。VCC接3.3V或5V,PWM输出直接接8Ω 0.5W喇叭。整个方案外围只需要几个电阻电容,BOM成本极低。

通信协议与MCU代码

WT588F02支持一线串口和两线串口两种控制方式。两线串口抗干扰更强,推荐在电机干扰较大的晾衣架产品上使用。

一线串口的发码流程是:DATA线若之前为低电平,须先拉高至少5ms;然后拉低5ms作为启动信号;随后发送8位数据,先发低位再发高位;位值0和1靠高电平与低电平的比例来区分,推荐用200us比600us,即3:1或1:3的电平比例。

两线串口则通过CLK和DATA两根线通信,在CLK上升沿读取DATA位,推荐每个bit的时钟周期为700us。两线方式的优势是在电机运转产生电气噪声时通信更可靠,唯创官方也建议对干扰敏感的场景优先用两线串口。

以下代码适用于一线串口,稍作修改即可适配两线串口。

// WT588F02一线串口驱动
// 适用于智能晾衣架语音提示功能
// MCU:任意带GPIO的型号,此处以伪代码形式呈现

#define WT588F_DATA_PIN 0 // MCU连接WT588F Pin2
#define WT588F_BUSY_PIN 1 // 可选,连接WT588F Pin1

void delay_us(uint16_t us) { /* 根据MCU主频实现 */ }
void delay_ms(uint16_t ms) { /* 根据MCU主频实现 */ }
void gpio_set(uint8_t pin, uint8_t val) { /* 设置GPIO电平 */ }

// 发送1位:WT588F规格书推荐时序为200us:600us
// 位0:高电平200us,低电平600us
// 位1:高电平600us,低电平200us
static void send_bit(uint8_t bit_val)
{
if (bit_val) {
gpio_set(WT588F_DATA_PIN, 1);
delay_us(600);
gpio_set(WT588F_DATA_PIN, 0);
delay_us(200);
} else {
gpio_set(WT588F_DATA_PIN, 1);
delay_us(200);
gpio_set(WT588F_DATA_PIN, 0);
delay_us(600);
}
}

// 发送1字节,先发低位再发高位
static void send_byte(uint8_t data)
{
for (uint8_t i = 0; i < 8; i++) {
send_bit((data >> i) & 0x01);
}
}

// 播放指定地址的语音
// addr:语音地址,范围0x00~0xDF
void wt588f_play(uint8_t addr)
{
// 若DATA之前为低,先拉高5ms
gpio_set(WT588F_DATA_PIN, 1);
delay_ms(5);

// 拉低5ms作为启动信号
gpio_set(WT588F_DATA_PIN, 0);
delay_ms(5);

// 发送地址字节
send_byte(addr);

// 发码结束,DATA保持高电平
gpio_set(WT588F_DATA_PIN, 1);
}

// 停止播放
void wt588f_stop(void)
{
wt588f_play(0xFE);
}

// 设置音量,level范围0~15,对应E0H~EFH
void wt588f_set_volume(uint8_t level)
{
if (level > 15) level = 15;
wt588f_play(0xE0 + level);
}

语音提示词条设计建议

以下词条已在多个量产量衣架项目中验证,可直接参考使用。语音文件通过唯创知音在线平台制作,用下载器烧录到WT588F02芯片。

地址 播报内容 触发条件
0x01 已上升到顶 上升限位开关触发
0x02 已下降到底 下降限位开关触发
0x03 照明已打开 照明功能开启
0x04 照明已关闭 照明功能关闭
0x05 烘干已启动 烘干功能开启
0x06 烘干已关闭 烘干功能关闭
0x07 消毒中,请注意 UV消毒开启,安全提示
0x08 过载保护,请减轻衣物 电机电流检测过载
0x09 设备异常,请联系售后 电机堵转或其他故障

需求二:语音控制方案

痛点:双手提满衣物时无法操作

基础语音提示解决了状态感知问题,但用户操作仍然依赖按键或遥控器。真正的痛点是:用户双手提着刚洗好的衣服,站在晾衣架下面,根本没法按墙壁开关,也找不到遥控器。

语音控制彻底解决了这个问题。用户只需要说一句话,晾衣架就能自动执行对应动作。这对老人和儿童尤其友好,也是当前智能晾衣架产品差异化竞争的核心功能。

芯片选型:WTK6900HC是阳台场景的首选

对比维度 WTK6900HC WTK6900HA WTK6900P
主频 240MHz 192MHz 32位CPU(主频未注明)
远场识别距离 5米 3米 2米
内置FLASH 1MB/2MB/4MB可选 512KB/1MB可选 4Mbit(约512KB)
词条容量 数十至数百条 数十至数百条 约15条
DAC通道 2路16位,SNR≥95dB 2路16位,SNR≥95dB 1路16位,SNR≥95dB
内置功放 无,需外接 无,需外接 内置0.5W D类功放
蓝牙 BT 5.1 + BLE
工作电压 2.8~5.2V 2.8~5.2V 2.4~5.0V
工作电流 规格书未列出 规格书未列出 约14mA
休眠电流 5μA 5μA 5μA
封装选项 SOP16/SSOP24/QFN32 SOP16/SSOP24/QFN32 ESOP8/SOP8
适用场景 阳台5米识别+蓝牙App联动 3米识别,成本适中 2米识别,成本极低

阳台场景的识别距离要求来自实际安装环境。晾衣架通常安装在阳台天花板上,用户站在阳台任意位置都应该能控制。5米覆盖绝大多数阳台,3米勉强够用,2米则只能站在正下方才能控制,体验大打折扣。

WTK6900HC还内置蓝牙5.1,可同时支持BLE与手机App联动,为产品后续增加手机控制功能预留了接口,这是HA和P都不具备的。

WTK6900P内置0.5W D类功放,外围元件最少,成本最低,但识别距离只有2米,且词条数量限制在15条左右,只适合作为低成本备份方案使用。

WTK6900HC电路设计要点

电源去耦要求与WT588F02相同。 VCC脚的去耦电容必须紧贴芯片放置,回路控制在4cm以内。这是唯创全系列芯片的共同要求,来自其规格书的硬件设计参考章节。

UART_RX引脚电平匹配。 WTK6900P规格书明确标注第8脚耐压3.3V;WTK6900HC规格书未明确标注此参数,但同为3.3V TTL电平接口,若主控MCU的UART TX输出为5V电平,建议加电平转换电路,以免损坏语音芯片。最简单的做法是使用NMOS或专用电平转换芯片在MCU TX和HC RX之间做3.3V转换。

麦克风输入电路使用单端驻极体麦克风,MIC+脚通过2.2kΩ上拉电阻接麦克风正极,同时串联2.2μF耦合电容到地。规格书对麦克风灵敏度的建议是-32±2dB,选用此参数范围内的驻极体麦克风即可。

音频输出使用WTK6900HC内置的2路16位DAC,可直接外接功放芯片推动喇叭。如果产品对音质要求较高,建议外接AB类功放;如果成本是首要考虑,也可以用PWM直接输出,外围元件更少。

唤醒词与命令词设计

唤醒词设计有两个方向:通用化和品牌化。通用唤醒词如你好晾衣架用户学习成本为零,拿到产品就能用;品牌化唤醒词如小蜂管家有利于建立品牌认知,但需要用户在初次使用时看说明书学习。

以下命令词组合已在唯创知音在线平台上验证可用,识别率在室内环境下优于95%。

类型 词条内容 功能说明
唤醒词 你好晾衣架 唤醒后3~5秒内接受命令
唤醒词(备选) 小蜂管家 品牌定制化唤醒词
命令词 上升 晾衣架开始上升
命令词 下降 晾衣架开始下降
命令词 停止 停止当前运动
命令词 照明打开 / 开灯 打开照明功能
命令词 照明关闭 / 关灯 关闭照明功能
命令词 烘干打开 / 开启烘干 打开PTC烘干
命令词 烘干关闭 / 关闭烘干 关闭PTC烘干
命令词 消毒打开 / 开始消毒 打开UV消毒灯
命令词 消毒关闭 / 关闭消毒 关闭UV消毒灯

WTK6900HC UART通信协议

WTK6900HC与主控MCU通过UART通信,帧格式如下:

帧头(0x7E) [长度] [扩展码0xFF] [命令码] [数据...] [校验和] 帧尾(0xEF)

校验和的计算方法是:将长度字节、扩展码、命令码以及所有数据字节相加,取结果的低8位。

以下是对照规格书核对过的常用帧示例。

唤醒芯片(退出低功耗):

发:7E 06 FF 06 A7 00 B2 EF

进入低功耗(休眠电流5μA):

发:7E 06 FF 06 02 00 0D EF

触发播报(被动播报指令A0,词条ID=0x0001):

发:7E 07 FF 06 A0 00 01 AD EF

校验和计算:0x07 + 0xFF + 0x06 + 0xA0 + 0x00 + 0x01 = 0x1AD,低字节 = 0xAD,与规格书示例一致。

识别结果上报(HC主动上报,词条ID=0x01):

收:7E 06 FF 06 A0 01 AC EF

主控MCU收到此帧后,解析出词条ID=0x01,对应上升命令,随后启动电机上升,并可发A0指令让HC播报好的,开始上升作为语音确认。

MCU端完整驱动代码

以下代码在STM32/ESP32/STC等平台上均可直接移植,只需替换底层UART发送和接收函数。

// WTK6900HC UART驱动
// 适用于智能晾衣架语音控制功能
// 通信方式:UART 3.3V TTL
// 波特率:以唯创在线平台生成工程时设置的为准

#include <stdint.h>
#include <string.h>

// 底层UART接口,根据所用MCU平台实现
extern void uart_send(uint8_t *data, uint16_t len);
extern uint8_t uart_receive_byte(uint8_t *byte, uint32_t timeout_ms);

// 计算校验和:长度+扩展码+命令码+所有数据的累加和低字节
static uint8_t hc_checksum(uint8_t *payload, uint8_t len)
{
uint16_t sum = 0;
for (uint8_t i = 0; i < len; i++) {
sum += payload[i];
}
return (uint8_t)(sum & 0xFF);
}

// 发送一帧数据到WTK6900HC
// cmd:命令码(0xA0播报、0xA7唤醒、0x02低功耗等)
// data:数据负载,可为NULL
// data_len:数据负载长度
static void hc_send_frame(uint8_t cmd, uint8_t *data, uint8_t data_len)
{
uint8_t frame[32];
uint8_t idx = 0;

frame[idx++] = 0x7E; // 帧头
frame[idx++] = data_len + 3; // 长度 = 扩展码+命令码+数据+校验和
frame[idx++] = 0xFF; // 扩展码
frame[idx++] = cmd; // 命令码

for (uint8_t i = 0; i < data_len; i++) {
frame[idx++] = data[i];
}

// 计算校验和:长度+扩展码+命令码+数据
uint8_t chk_data[32];
uint8_t chk_len = 0;
chk_data[chk_len++] = frame[1]; // 长度
for (uint8_t i = 2; i < idx; i++) {
chk_data[chk_len++] = frame[i];
}
frame[idx++] = hc_checksum(chk_data, chk_len);
frame[idx++] = 0xEF; // 帧尾

uart_send(frame, idx);
}

// 唤醒WTK6900HC(退出低功耗模式)
void hc_wakeup(void)
{
uint8_t data[1] = {0x00};
hc_send_frame(0xA7, data, 1);
}

// 进入低功耗(休眠电流5μA,适合电池供电场景)
void hc_enter_sleep(void)
{
uint8_t data[1] = {0x00};
hc_send_frame(0x02, data, 1);
}

// 触发播报指定词条
// track_id:词条ID,由唯创在线平台分配
void hc_play(uint16_t track_id)
{
uint8_t data[2];
data[0] = (track_id >> 8) & 0xFF;
data[1] = track_id & 0xFF;
hc_send_frame(0xA0, data, 2);
}

// 设置音量(1~5级)
void hc_set_volume(uint8_t level)
{
if (level < 1) level = 1;
if (level > 5) level = 5;
uint8_t data[1] = {level};
hc_send_frame(0xA1, data, 1);
}

// 解析HC上报的识别结果
// frame:接收到的帧数据
// len:帧长度
// 返回值:>=0表示识别到的词条ID;-1表示不是有效帧
int16_t hc_parse_response(uint8_t *frame, uint8_t len)
{
if (len < 6) return -1;
if (frame[0] != 0x7E) return -1;
if (frame[len - 1] != 0xEF) return -1;

// 校验和检查
uint8_t checksum = 0;
for (uint8_t i = 1; i < len - 2; i++) {
checksum += frame[i];
}
if (checksum != frame[len - 2]) {
return -1;
}

// 解析命令码和数据
// 帧格式:7E [长度] FF [命令码] [数据...] [校验和] EF
uint8_t cmd = frame[3];

if (cmd == 0xA0) {
// 识别结果上报
if (len >= 8) {
// 双字节ID
return (frame[4] << 8) | frame[5];
} else {
// 单字节ID
return frame[4];
}
}

return -1;
}

// 命令词处理入口(在UART接收中断中调用)
void hc_handle_command(int16_t cmd_id)
{
switch (cmd_id) {
case 0x01: // 上升
motor_up_start();
hc_play(0x81); // 播报好的,开始上升
break;
case 0x02: // 下降
motor_down_start();
hc_play(0x82);
break;
case 0x03: // 停止
motor_stop();
hc_play(0x83);
break;
case 0x04: // 照明打开
light_on();
hc_play(0x84);
break;
case 0x05: // 照明关闭
light_off();
hc_play(0x85);
break;
default:
break;
}
}

两个需求的方案对比与选型建议

对比维度 需求一:纯语音提示(WT588F02) 需求二:语音控制(WTK6900HC)
芯片数量 1颗 1颗
MCU交互方向 MCU→语音芯片(单向发码) MCU←→HC(双向UART)
是否需要麦克风
识别功能 有,5米远场识别
蓝牙扩展 有,BT 5.1
语音内容更换 支持,下载器烧录 支持,在线平台+下载器
待机功耗 <5μA(休眠后) 5μA(休眠后)
系统复杂度
BOM成本 最低 适中

选型结论:基础款智能晾衣架(按键控制+语音状态提示)选WT588F02-8S-C;中高端款(语音控制+App联动)选WTK6900HC(优先SOP16封装,体积最小)。

开发调试中的关键注意事项

电源去耦电容必须紧贴芯片VCC脚。 这是唯创全系列芯片规格书反复强调的要求,VCC脚、去耦电容、GND脚的回路总长必须控制在4cm以内。布线时优先保证电源回路最短,再考虑音频走线。

WTK6900HC的UART_RX引脚耐压只有3.3V。 如果主控MCU使用5V供电,UART TX输出为5V电平,必须在MCU TX和HC RX之间加电平转换,否则会损坏HC芯片。最简单的方法是使用2N7002等NMOS做电平转换,或使用专用电平转换芯片。

WT588F02一线串口发码前必须确认DATA线状态。 如果DATA线之前为低电平,必须先拉高至少5ms,然后再拉低5ms启动发码。如果省略这一步,在某些条件下芯片会无响应,属于规格书明确标注的硬件行为。

上电初始化等待时间不能省。 WT588F02上电初始化约40ms,WTN6系列约100ms,初始化完成前发送的指令会被直接忽略。建议在主程序启动后延时150ms再向语音芯片发第一条指令,留足余量。

BUSY脚电平变化有延迟。 WT588F02在PWM模式下BUSY脚在发码后500us~35ms内变化,DAC模式下在30ms~65ms内变化。如果MCU通过BUSY脚检测播报状态,超时判断建议设在100ms以上。

低功耗管理策略。 电池供电的晾衣架产品,在不需要语音交互时应发02 00指令让HC进入休眠,休眠电流仅5μA,对电池寿命影响可忽略。需要使用时先发A7 00唤醒,唤醒时间规格书未标注,建议在唤醒指令后延时50ms再发其他指令。

词条ID必须以唯创在线平台实际配置为准。 本文示例代码中的词条ID(0x01、0x81等)仅为示意,实际开发中须用串口调试助手读取HC上报的识别结果,确认实际词条ID后再写入MCU代码。

  • 智能晾衣架语音方案_最终版.docx
    下载
唯创知音

唯创知音

深圳唯创知音电子有限公司位于广东省深圳市宝安区,1999年成立于广州。历经二十多年的发展,公司已成为集研发、生产、销售和服务于一体的,专注于语音技术研究、语音产品方案设计及控制等软、硬件设计的国家高新技术企业。业务范围涵盖家电、医疗器械、安防报警、汽车电子多媒体、通信、电话录音、工业自动化控制、玩具及互动消费类产品等领域,公司的集成芯片和模块主要有:播放类、录音类、MP3类、蓝牙WiFi类、语音识别类。

深圳唯创知音电子有限公司位于广东省深圳市宝安区,1999年成立于广州。历经二十多年的发展,公司已成为集研发、生产、销售和服务于一体的,专注于语音技术研究、语音产品方案设计及控制等软、硬件设计的国家高新技术企业。业务范围涵盖家电、医疗器械、安防报警、汽车电子多媒体、通信、电话录音、工业自动化控制、玩具及互动消费类产品等领域,公司的集成芯片和模块主要有:播放类、录音类、MP3类、蓝牙WiFi类、语音识别类。收起

查看更多

相关推荐