1 概述?
随着人们生活水平的提高,对产品的功能要求也越来越高,追求舒适的体验感,特别是对操控性的要求越来越高。目前风扇产品的控制方式有以下几类:
- 按键控制:传统控制方式,每次要走到风扇边才行,操作麻烦;
- 遥控控制:采用红外遥控或者蓝牙遥控,方便远距离控制,但遥控器容易丢,放置也麻烦。且遥控器上按键较少,当风扇功能多的时候无法用单次按键控制全部的功能,组合按键不符合人们使用习惯;
- 手机APP控制:每次控制需要打开手机APP,需要联网,同时风扇需配网,操作繁琐;
- 智能音箱控制:通过如天猫精灵等智能音箱直接控制,相对方便,但音箱需联网状态下才可使用,识别时有隐私安全问题,网络延时大时控制的实时性不好。
为了解决以上痛点,可以采用纯离线语音识别进行控制,在成本增加不大的情况下,为产品带来更多的亮点和竞争力。启英泰伦针对该产品领域,已开发了整套离线语音风扇方案,下面对该方案进行介绍。
2 方案优势?
启英泰伦离线语音风扇相对传统风扇方案,可让用户通过语音控制风扇设备,替换传统遥控器或按钮控制的方式,该方案有以下优势:
- 可以直接使用语音控制风扇,且无需联网,自然方便,识别率可达95%以上;
- 语音控制响应快,一般在0.2~0.8s内完成;
- 可远场识别,安静情况下可达10米;
- 方案功耗低,工作功耗仅为0.2W左右;
- 可靠性好,芯片方案已通过双85测试,满足格力、美的等家电巨头要求;
- 整套产品技术已成熟,具有完整的软件、硬件、结构设计方案,节省开发周期,降低开发难度;
- 配合我司语音AI平台开发,可灵活定制唤醒词和命令词,不需要再专门收集语料训练。
3 应用描述?
风扇产品按照使用电源类型可分为交流电风扇、直流电风扇和交直流电风扇三类,其类型可以分为台扇、吊扇、落地扇、无叶风扇等。启英泰伦离线语音风扇方案适用于各类风扇,其中尤其在落地扇上面的应用较多。
语音风扇产品的使用场景为普通家居环境,在安静和中低噪音下可以达到良好的识别率。其中安静环境的环境底噪在35dB ~ 45dB之间,属于中低噪音环境;开启风扇后环境噪音可达45dB ~ 65dB之间。该噪音环境下可以直接选用我司单麦克风语音模块,如CI-B0XGS01S或CI-B0XGS01S-H模块,以达到比较好的性价比。
特别注意,不同的风扇运行过程中,因为扇叶大小和叶片数量,风量大小差异,运行产生的风噪大小也有不小的差异,为了达到最好的语音识别效果,在设计风扇整机结构时,因注意控制噪音小于65dB。
4 产品设计流程?
一个基于我司芯片的标准语音产品设计流程如下图所示:
该流程主要针对我司新用户开发产品使用,包含了前期购买样品Demo进行验证,硬件选型,语音对话逻辑、软硬件方案和结构设计,设计完成后的测试,以及生产测试准备和后续批量采购等步骤。如果是已经熟悉我司方案的老用户,可以直接从中间步骤开始,不用再重复进行Demo测试等工作。
下面针对新用户的开发,对上述流程中的各个步骤逐一描述。
4.1 DEMO测试?
针对新用户,可以先从我司授权的经销商或直接从我司官网 ?样品购买?处购买对应的模块或开发板套件,进行识别效果测试,相关的软硬件技术文档可以从本文档中心处获取。用户测试满意后,可以进行硬件选型。
4.2 选型指南?
用户硬件选型可以直接参考 ?硬件选型?,如果用户想快速产品化,推荐直接使用我司已设计好的标准模块;如果现有标准模块无法满足产品的结构需求,也可以选用合适的芯片进行硬件板的设计。
4.3 方案设计?
选择好合适的芯片或模块后,可根据产品的功能进行下述设计:
如用户为首次进行语音方案开发,建议到 ?启英泰伦语音AI平台?上获取基于相关芯片的语音产品方案设计Checklist文档,进行逐一检查以确保设计效果。如有技术支持需求请联系我司技术支持人员。
4.4 测试验收?
产品方案设计完成形成样品后,建议对该样品进行相关的识别测试,相关测试方法和标准可参考 ?识别效果测试。同时,还建议根据产品质量的要求进行各类硬件测试,如双85测试、静电测试等。为了保证最终的识别效果,还建议进行硬件底噪的测试及产品装机后的整机功能测试。
4.5 生产测试?
样机测试完成后,会转入后续产线批量生产阶段。我司为产品的批量生产做了完善的解决方案,用户可以参考 ?生产测试?获取更多信息。用户如需要生产测试的相关技术支持,请联系我司技术人员。
4.6 下单采购?
用户如果要采购我司产品样品,请点击 ?样品购买?,也可以点击 ?样品和批量采购?获取更多信息。
5 风扇设计方案介绍?
5.1 主控方案?
5.1.1 方案特点?
我司的CI110X芯片内置多个IO,可直接取代传统电控风扇中的单片机控制方案,实现单芯片完成语音控制和主控控制,整体成本较低,但需要做语音和主控的开发,前期开发周期长。
为了方便用户使用,我司已提前做了相应的开发,可以提供完整的语音风扇主控方案。
5.1.2 方案框图?
整个方案如上图所示,CI110X芯片作为主控,可以通过麦克风采集外部语音进行识别,通过功放驱动喇叭播音。如为省成本,还可以将功放和喇叭换为蜂鸣器。CI110X芯片还可以接受外部按键及红外信号,兼容传统控制方式。
CI110X芯片可支持数码管显示,以及控制外部的驱动电路,实现电机的控制,可以很好的用一个单芯片实现风扇的全部控制功能。
5.1.3 硬件设计参考?
?风扇电控板的一个硬件参考线路图及IO使用情况见下图,用户可以使用CI110X芯片按照相同的IO使用方式设计硬件电路,可以方便的搭建整套风扇方案。
5.1.4 主控方案SDK包说明?
我司为用户基于上述硬件设计,提供了完整的SDK包,用户可以到 ?启英泰伦语音AI平台?上获取相关SDK开发包。
本SDK包有以下功能点:
- 控制方式:支持蓝牙、红外、按键、语音;
- 风扇模式:支持正常风、自然风、睡眠风、智能风;
- 摇头方式:支持左右摇头、上下摇头、3D摇头;
- 定时功能:支持定时关机功能,可按整数定时1 ~ 15小时。
本SDK包中使用到了硬件timer,使用方式如下:
- 硬件TIMER0:转速电机控制(不归零码NRZ编码,使用一个IO脚);
- 硬件TIMER1:红外接收控制;
- 硬件TIMER2:蓝牙接收控制(注意,蓝牙接收的数据和红外接收模块基本相同);
- 硬件TIMER3:蜂鸣器控制和摇头电机控制。
为了方便代码的移植,每个外设驱动和风扇应用代码都是单独的文件夹,目录说明如下:
目录地址 | 目录说明 | 功能描述 |
---|
..\components\ir..\components\ir_remote_driver\ | 红外驱动目录(有些蓝牙也是单线通讯方式,与红外的驱动基本一致) | 红外接收功能,接收后的数据会队列通知到deal_userdef_msg,红外的长度可以根据宏定义配置。 #宏定义 #define IR_MAX_DATA_COUNT 120最大红外个数 | ..\components\motor_driver\ | 电机驱动目录 | 当前支持5104的不归零码协议,后续如有其它驱动,CI可以支持 | ..\components\ci_key\ | 使用了2个Touch IC芯片(如品腾PT8041),控制7个按键 | 触摸不同的按键,对应不同的adc数值,故使用两个ADIO 做按键驱动,根据客户的实际产品,请自行调整 | ..\components\digital_tube\ | 数码管驱动目录 | IO 与LED 进行复用。目前支持的是两个数码管+8个LED | ..\components\temperature_sensor\ | 温度传感器驱动目录 | 使用AD+热敏电阻实现,产品可以根据温度进行智能调节风量 | ..\components\buzzer\ | 蜂鸣器驱动目录 | 采用定时器默认4Khz进行声音提示,可以更改 #define BUZZER_HZ 进行配置,单位HZ | ..\sample\internal\sample_1102\src\user_msg_deal.c | 风扇应用层代码 | 根据红外,按键,语音识别的消息进行电机的应用控制 |
针对SDK中一些重要的变量和函数进行说明:
风扇状态变量:
typedef struct
{
unsigned short user_code : 4 ;//用户码固定位 b'1010*
unsigned short positive : 2 ;//正转b'00 反转b'11*
unsigned short sync_motor: 2 ;//同步电机1 停止b'00 同步电机停止b'10*
unsigned short speed_bit: 8 ;//电机工作范围25~255 0表示电机停止*
unsigned char mode; //0:正常风 1:自然风 2:睡眠风 3:智能风*
short time; //0~15H*
unsigned char led; //1开,0关*
unsigned char head; //0关闭 1:左右 2:上下 3:3D*
unsigned char gear; //0关闭 1~24*
}motor_status_struct_data;
风扇初始化函数
路径: ..\sample\internal\sample_1102\src\user_msg_deal.c
/*\* @breif 风扇初始化函数**/
void fan_init(void)
{
//风扇状态初始化
motor_status.user_code = 0xa;
motor_status.sync_motor = 0x0;
motor_status.speed_bit = 0x0;
motor_status.positive = 0x00;
motor_status.mode = 0;
motor_status.head = 0;
motor_status.led = 1;
motor_status.gear = 0;
motor_status.time = 0;
/*风扇软件初始化*/
extern void user_fan_soft_init(void);
user_fan_soft_init();
//电机初始化
agreement_5104_app_init();
//红外初始化
extern void ir_test_recive(void);
ir_test_recive();
//蓝牙初始化
extern void bt_test_recive(void);
bt_test_recive();
//按键初始化
extern void ci_key_init(void);
ci_key_init();
//数码管初始化
extern int digital_tube_init(void);
digital_tube_init();
//蜂鸣器初始化
buzzer_init();
//同步电机2初始化
sync_motor2_hw_init();
//温度传感器初始化
temp_sensor_init();
}
风扇应用任务处理
语音入口和标准SDK一致无改动,蓝牙、语音、按键、红外通过队列sys_msg_queue发送消息到UserTaskManageProcess任务。相关控制处理入口入下图所示例:
uint32_t deal_userdef_msg(sys_msg_t *msg)
{
uint32_t ret = 1;
switch(msg->msg_type)
{
/* 按键消息 */
case SYS_MSG_TYPE_KEY:
{
sys_msg_key_data_t *key_rev_data;
key_rev_data = &msg->msg_data.key_data;
userapp_deal_key_msg(key_rev_data);
break;
}
/* 红外消息 */
case SYS_MSG_TYPE_IR:
{
sys_msg_ir_data_t *ir_rev_data;
ir_rev_data = &msg->msg_data.ir_data;
userapp_deal_ir_msg(ir_rev_data);
break;
}
/* 蓝牙消息*/
case SYS_MSG_TYPE_BT:
{
sys_msg_bt_data_t *bt_rev_data;
bt_rev_data = &msg->msg_data.bt_data;
userapp_deal_bt_msg(bt_rev_data);
break;
}
#if MSG_COM_USE_UART_EN
/* CI串口协议消息 */
case SYS_MSG_TYPE_COM:
{
sys_msg_com_data_t *com_rev_data;
com_rev_data = &msg->msg_data.com_data;
userapp_deal_com_msg(com_rev_data);
break;
}
#endif
/* CI IIC 协议消息 */
#if MSG_USE_I2C_EN
case SYS_MSG_TYPE_I2C:
{
sys_msg_i2c_data_t *i2c_rev_data;
i2c_rev_data = &msg->msg_data.i2c_data;
userapp_deal_i2c_msg(i2c_rev_data);
break;
}
#endif
default:
break;
}
return ret;
}
5.2 配合主控板的串口通讯方案?
5.2.1 方案特点?
如用户不愿意替换原先使用的电控板,也可以用我司的芯片设计语音控制板,和原电控板通过串口进行通讯,也可以实现语音风扇的产品设计。该方式开发相对简单,可以快速对接完成产品,但成本略高,适用于需快速出产品的的方案或者第一次接触语音识别的方案。
该方案的设计框图如下,语音模块与电控模块需要4根线的串口连接,语音模块进行语音识别及根据风扇的状态进行信息播放,控制由电控模块完成。
5.2.2 硬件设计参考?
用户可以使用我司芯片设计需要要求的语音模块,但为快速开发,推荐直接使用我司的以下标准模块:
- CI-B02GS03T:适合空间比较高,纵深长的结构,串口接口电平为3.3V;
- CI-B02GS01S:适合空间比较矮的结构,串口接口电平为3.3V;
- CI-B02GS01J:适合有空间放置固定语音模块的结构,原来的风扇硬件改动较小,串口接口电平为5V。
用户直接使用我司标准语音模块时,有以下注意事项:
- 将语音模块板的串口跟电控串口对接,注意电控的供电需要大于1A;
- 注意串口的电平要匹配,CI-B02GS01J支持5V电平,其他的模块支持3.3V,如果电控板使用5V电平,CI-B02GS01J可以对接直接串口,其它模块需要增加电平转换电路,如下图所示:
5.2.3 串口通讯方式?
语音模块与电控模块通过串口进行信息交互,主要有两种方式,一种为语音模块主动播放,同时将信息发电控模块;另一种为语音模块被动播放,其分别描述如下:
语音模块主动播放模式
主动播放方式主要执行以下动作:
- 识别到词条,主动播放反馈声音;
- 将此条信息串口告知电控模块;
- 电控模块执行动作。
该方式的优点在于控制方式简单,由语音模块单线输出信息给电控模块。但缺点在于无法根据风扇的情况及按键情况进行语音反馈。
语音模块被动播放模式
被动播放方式主要执行以下动作:
- 语音模块识别到词条;
- 将词条信息串口告知电控模块;
- 电控模块执行相关动作;
- 告知语音模块需要播放的内容;
- 语音模块根据电控模块反馈进行播放。
该方式的优点在于语音模块根据电控模块的状态进行播放对应内容,可以进行最合适的反馈,体验感好;同时如果电控模块通过按键或者遥控进行控制,语音模块也可以进行状态播放。缺点在于会多一次串口通信的过程。
5.2.4 SDK包说明和模块串口通讯协议?
我司为用户提供了串口通讯方案完整的SDK包,用户可以到 ?启英泰伦语音AI平台?上获取相关SDK开发包。
模块的串口通讯建议使用我司标准协议,具体格式请参考 ?串口协议?。
以下是语音模块发给电控模块的一个命令词及协议参考:
命令词 | 帧头 | 长度 | 类型 | 命令 | 序号 | 语音ID | 保留 | 分数 | 累加和 | 帧尾 |
---|
小艾小艾 | A5 FC | 07 00 | A0 | 91 | XX | 00 00 00 00 | 00 00 | XX | XXXX | FB | 开风扇 | A5 FC | 07 00 | A0 | 91 | XX | 42 19 74 02 | 00 00 | XX | XXXX | FB | 打开风扇 | A5 FC | 07 00 | A0 | 91 | XX | 41 19 74 02 | 00 00 | XX | XXXX | FB | 关风扇 | A5 FC | 07 00 | A0 | 91 | XX | 82 19 74 02 | 00 00 | XX | XXXX | FB | 关闭风扇 | A5 FC | 07 00 | A0 | 91 | XX | 81 19 74 02 | 00 00 | XX | XXXX | FB | 开摇头 | A5 FC | 07 00 | A0 | 91 | XX | 86 22 74 02 | 00 00 | XX | XXXX | FB | 打开摇头 | A5 FC | 07 00 | A0 | 91 | XX | 85 22 74 02 | 00 00 | XX | XXXX | FB | 风扇摇头 | A5 FC | 07 00 | A0 | 91 | XX | 81 22 74 02 | 00 00 | XX | XXXX | FB | 关摇头 | A5 FC | 07 00 | A0 | 91 | XX | C5 22 74 02 | 00 00 | XX | XXXX | FB | 关闭摇头 | A5 FC | 07 00 | A0 | 91 | XX | C4 22 74 02 | 00 00 | XX | XXXX | FB | 停止摇头 | A5 FC | 07 00 | A0 | 91 | XX | C1 22 74 02 | 00 00 | XX | XXXX | FB | 风大点 | A5 FC | 07 00 | A0 | 91 | XX | E1 38 BC 02 | 00 00 | XX | XXXX | FB | 风大一点 | A5 FC | 07 00 | A0 | 91 | XX | 72 1A 98 01 | 00 00 | XX | XXXX | FB | 风大一些 | A5 FC | 07 00 | A0 | 91 | XX | 73 1A 98 01 | 00 00 | XX | XXXX | FB | 风再大点 | A5 FC | 07 00 | A0 | 91 | XX | 74 1A 98 01 | 00 00 | XX | XXXX | FB | 风小一点 | A5 FC | 07 00 | A0 | 91 | XX | 75 1A 98 01 | 00 00 | XX | XXXX | FB | 风小一些 | A5 FC | 07 00 | A0 | 91 | XX | 76 1A 98 01 | 00 00 | XX | XXXX | FB | 风小点 | A5 FC | 07 00 | A0 | 91 | XX | 5F 39 BC 02 | 00 00 | XX | XXXX | FB | 风再小点 | A5 FC | 07 00 | A0 | 91 | XX | 77 1A 98 01 | 00 00 | XX | XXXX | FB | 最大风 | A5 FC | 07 00 | A0 | 91 | XX | C7 39 BC 02 | 00 00 | XX | XXXX | FB | 最小风 | A5 FC | 07 00 | A0 | 91 | XX | 48 3A BC 02 | 00 00 | XX | XXXX | FB | 定时关机 | A5 FC | 07 00 | A0 | 91 | XX | 01 0F 95 01 | 00 00 | XX | XXXX | FB | 关闭定时 | A5 FC | 07 00 | A0 | 91 | XX | 44 0E 95 01 | 00 00 | XX | XXXX | FB | 睡眠风 | A5 FC | 07 00 | A0 | 91 | XX | 82 27 74 02 | 00 00 | XX | XXXX | FB | 自然风 | A5 FC | 07 00 | A0 | 91 | XX | 03 28 74 02 | 00 00 | XX | XXXX | FB | 正常风 | A5 FC | 07 00 | A0 | 91 | XX | C1 CB 94 01 | 00 00 | XX | XXXX | FB | 声音大点 | A5 FC | 07 00 | A0 | 91 | XX | 47 19 94 01 | 00 00 | XX | XXXX | FB | 声音小点 | A5 FC | 07 00 | A0 | 91 | XX | 87 19 94 01 | 00 00 | XX | XXXX | FB | 定时一小时 | A5 FC | 07 00 | A0 | 91 | XX | 02 37 95 01 | 00 00 | XX | XXXX | FB | 定时两小时 | A5 FC | 07 00 | A0 | 91 | XX | 82 37 95 01 | 00 00 | XX | XXXX | FB | 定时二小时 | A5 FC | 07 00 | A0 | 91 | XX | 83 37 95 01 | 00 00 | XX | XXXX | FB | 定时三小时 | A5 FC | 07 00 | A0 | 91 | XX | 01 38 95 01 | 00 00 | XX | XXXX | FB | 定时四小时 | A5 FC | 07 00 | A0 | 91 | XX | 81 38 95 01 | 00 00 | XX | XXXX | FB | 定时五小时 | A5 FC | 07 00 | A0 | 91 | XX | 01 39 95 01 | 00 00 | XX | XXXX | FB | 定时六小时 | A5 FC | 07 00 | A0 | 91 | XX | 81 39 95 01 | 00 00 | XX | XXXX | FB | 开一档 | A5 FC | 07 00 | A0 | 91 | XX | 41 3F 94 01 | 00 00 | XX | XXXX | FB | 开二档 | A5 FC | 07 00 | A0 | 91 | XX | C1 3E 94 01 | 00 00 | XX | XXXX | FB | 开三档 | A5 FC | 07 00 | A0 | 91 | XX | 01 3F 94 01 | 00 00 | XX | XXXX | FB | 开四档 | A5 FC | 07 00 | A0 | 91 | XX | 41 3F 94 01 | 00 00 | XX | XXXX | FB | 开五档 | A5 FC | 07 00 | A0 | 91 | XX | 81 3F 94 01 | 00 00 | XX | XXXX | FB | 开六档 | A5 FC | 07 00 | A0 | 91 | XX | C1 3F 94 01 | 00 00 | XX | XXXX | FB | 开七档 | A5 FC | 07 00 | A0 | 91 | XX | 01 40 94 01 | 00 00 | XX | XXXX | FB | 开八档 | A5 FC | 07 00 | A0 | 91 | XX | 41 40 94 01 | 00 00 | XX | XXXX | FB | 开九档 | A5 FC | 07 00 | A0 | 91 | XX | 81 40 94 01 | 00 00 | XX | XXXX FB | | 退出唤醒 | A5 FC | 02 00 | A3 | 9A | XX | 00 B2 | | | XXXX | FB |
以下是一个电控模块发给语音模块的通讯协议参考:
对应播报音 | 帧头 | 长度 | 类型 | 命令 | 序号 | 控制 | 播放类型 | 播放序号 | 保留 | 累加和 | 帧尾 |
---|
小艾小艾 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 01 00 00 00 | 0 | XXXX | FB | 开风扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 02 00 00 00 | 0 | XXXX | FB | 打开风扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 03 00 00 00 | 0 | XXXX | FB | 关风扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 04 00 00 00 | 0 | XXXX | FB | 关闭风扇 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 05 00 00 00 | 0 | XXXX | FB | 开摇头 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 06 00 00 00 | 0 | XXXX | FB | 打开摇头 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 07 00 00 00 | 0 | XXXX | FB | 风扇摇头 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 08 00 00 00 | 0 | XXXX | FB | 关摇头 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 09 00 00 00 | 0 | XXXX | FB | 关闭摇头 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0A 00 00 00 | 0 | XXXX | FB | 停止摇头 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0B 00 00 00 | 0 | XXXX | FB | 风大点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0C 00 00 00 | 0 | XXXX | FB | 风大一点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0D 00 00 00 | 0 | XXXX | FB | 风大一些 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0E 00 00 00 | 0 | XXXX | FB | 风再大点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 0F 00 00 00 | 0 | XXXX | FB | 风小一点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 10 00 00 00 | 0 | XXXX | FB | 风小一些 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 11 00 00 00 | 0 | XXXX | FB | 风小点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 12 00 00 00 | 0 | XXXX | FB | 风再小点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 13 00 00 00 | 0 | XXXX | FB | 最大风 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 14 00 00 00 | 0 | XXXX | FB | 最小风 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 15 00 00 00 | 0 | XXXX | FB | 定时关机 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 16 00 00 00 | 0 | XXXX | FB | 关闭定时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 17 00 00 00 | 0 | XXXX | FB | 睡眠风 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 18 00 00 00 | 0 | XXXX | FB | 自然风 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 19 00 00 00 | 0 | XXXX | FB | 正常风 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1A 00 00 00 | 0 | XXXX | FB | 声音大点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1B 00 00 00 | 0 | XXXX | FB | 声音小点 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1C 00 00 00 | 0 | XXXX | FB | 定时一小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1D 00 00 00 | 0 | XXXX | FB | 定时两小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1E 00 00 00 | 0 | XXXX | FB | 定时二小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 1F 00 00 00 | 0 | XXXX | FB | 定时三小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 20 00 00 00 | 0 | XXXX | FB | 定时四小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 21 00 00 00 | 0 | XXXX | FB | 定时五小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 22 00 00 00 | 0 | XXXX | FB | 定时六小时 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 23 00 00 00 | 0 | XXXX | FB | 开一档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 24 00 00 00 | 0 | XXXX | FB | 开二档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 25 00 00 00 | 0 | XXXX | FB | 开三档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 26 00 00 00 | 0 | XXXX | FB | 开四档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 27 00 00 00 | 0 | XXXX | FB | 开五档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 28 00 00 00 | 0 | XXXX | FB | 开六档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 29 00 00 00 | 0 | XXXX | FB | 开七档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 2A 00 00 00 | 0 | XXXX | FB | 开八档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 2B 00 00 00 | 0 | XXXX | FB | 开九档 | A5 FC | 07 00 | A1 | 92 | XX | 80 | 92 | 2C 00 00 00 | 0 | XXXX | FB |
注意:
- ASR语言模型中文建议选择SE146,其他语种请使用对应语种的模型。风扇产品自带运行噪音,如果风扇本身噪音大于60db,建议打开降噪功能。
- 串口设置:
- 代码中通过判断 “命令+语音ID”获取是什么指令和功能。
- 发送的串口信息建议要检查完整性,可以用以下的checksum参考代码来实现。
#define VMUP_MSG_DATA_MAX_SIZE (20)//可根据实际数据大小调整
#pragma pack(1)
typedef struct
{
uint16_t header;
uint16_t data_length;
uint8_t msg_type;
uint8_t msg_cmd;
uint8_t msg_seq;
uint8_t msg_data[VMUP_MSG_DATA_MAX_SIZE];
/*uint16_t chksum; send add auto*/
/*uint8_t tail; send add auto*/
}sys_msg_com_data_t;
#pragma pack()
unsigned short Uart_Checksum(sys_msg_com_data_t * msg)
{
unsigned char i;
unsigned short t16_lenth;
unsigned short t16_check = 0;
uint8_t* rxbuf = uint8_t*&msg->msg_type
t16_lenth = msg->data_length + 3;//cmd_type,cmd,sequence 加上data数据的长度
if(t16_lenth > VMUP_MSG_DATA_MAX_SIZE + 3)//data length error
{
return 0xffff;
}
for(i=4;i<t16_lenth;i++)
{
t16_check += rxbuf[i];
}
return t16_check;
}
6 产品结构相关注意事项?
6.1 麦克风结构设计?
风扇产品在设计结构时,针对麦克风应当注意以下事项:
- 麦克风布局尽量远离风扇的风面及电机;
- 麦克风放在风扇的正面/顶部/底部/的位置避免遮挡,保证拾音最大范围;
- 分贝仪测试最大风速下,麦克风处的稳态噪声需小于60dB;
- 麦克风连线较长可选择带屏蔽的线;
- 麦克风线扎捆远离电机或电控线。
下图以落地风扇为例,讲述麦克风结构开孔及位置的建议方式,固定麦克风的结构件也需要考虑麦克风线方便引出导线和避免干扰。
6.2 喇叭结构设计?
风扇产品在设计结构时,针对喇叭应当注意以下事项:
- 考虑到音质,喇叭功率不能太小,建议选用1W以上喇叭,带音腔的喇叭效果会更好一点,同时注意硬件板上的功放驱动能力要匹配喇叭型号;
- 喇叭放置位置以美观及结构布局方便为主,但注意尽量避免和麦克风放在同一位置;
- 不带音腔喇叭可以在结构上做一个音腔密封后能增大音量输出。
下图是一个喇叭规格及开孔的建议。
6.3 其它注意事项?
- 建议选择-32dB±3dB,信噪比大于70dB以上,性价比高的全向模拟麦克风;
- 若风扇旋转震动比较大,选择较厚的麦克风胶套减缓震动,可减小对识别效果的影响;
- 某些显控板在底盘上的落地风扇,或类似易接触水或积累灰尘的风扇,需要选择防水防尘的麦克风;
- 特别注意禁止直接点热溶胶用于固定麦克风头;
- 将麦克风完全插入固定孔内部,避免歪斜,拾音孔中心孔对准麦克风的中心;
- 风扇内部接线多容易扯松,插头配插座带卡扣会更牢固;
- 选择符合环保RoHS要求的RTV硅胶,推荐常用的硅胶有703/704/737等,或其它有机材料、单组分室温固化硅胶等;
- 多数硅橡胶灌胶厚度小于3mm以内实温完全固化时间为8 ~ 12小时,灌胶厚度 > 3mm以上完全固化时间更长,可分层多次浇灌,确保完全固化稳定密封;
- 生产工艺可把固定麦克风工序提前,另外特别注意麦克风接线在重力拉扯下,未完全固化前容易导致麦克风扯歪,也需注意将麦克风插线固定好。
7 相关参考资料列表?
用户如遇到使用问题,请到启英泰伦语音AI平台上提交技术工单,或直接联系我司技术人员获取协助。
|