随着人们生活水平的提高,对产品的功能要求也越来越高,追求舒适的体验感,特别是对操控性的要求越来越高。目前风扇产品的控制方式有以下几类:
为了解决以上痛点,可以采用纯离线语音识别进行控制,在成本增加不大的情况下,为产品带来更多的亮点和竞争力。启英泰伦针对该产品领域,已开发了整套离线语音风扇方案,下面对该方案进行介绍。
启英泰伦离线语音风扇相对传统风扇方案,可让用户通过语音控制风扇设备,替换传统遥控器或按钮控制的方式,该方案有以下优势:
风扇产品按照使用电源类型可分为交流电风扇、直流电风扇和交直流电风扇三类,其类型可以分为台扇、吊扇、落地扇、无叶风扇等。启英泰伦离线语音风扇方案适用于各类风扇,其中尤其在落地扇上面的应用较多。
语音风扇产品的使用场景为普通家居环境,在安静和中低噪音下可以达到良好的识别率。其中安静环境的环境底噪在35dB ~ 45dB之间,属于中低噪音环境;开启风扇后环境噪音可达45dB ~ 65dB之间。该噪音环境下可以直接选用我司单麦克风语音模块,如CI-B0XGS01S或CI-B0XGS01S-H模块,以达到比较好的性价比。
特别注意,不同的风扇运行过程中,因为扇叶大小和叶片数量,风量大小差异,运行产生的风噪大小也有不小的差异,为了达到最好的语音识别效果,在设计风扇整机结构时,因注意控制噪音小于65dB。
一个基于我司芯片的标准语音产品设计流程如下图所示:
该流程主要针对我司新用户开发产品使用,包含了前期购买样品Demo进行验证,硬件选型,语音对话逻辑、软硬件方案和结构设计,设计完成后的测试,以及生产测试准备和后续批量采购等步骤。如果是已经熟悉我司方案的老用户,可以直接从中间步骤开始,不用再重复进行Demo测试等工作。
下面针对新用户的开发,对上述流程中的各个步骤逐一描述。
针对新用户,可以先从我司授权的经销商或直接从我司官网 ☞样品购买 处购买对应的模块或开发板套件,进行识别效果测试,相关的软硬件技术文档可以从本文档中心处获取。用户测试满意后,可以进行硬件选型。
用户硬件选型可以直接参考 ☞硬件选型 ,如果用户想快速产品化,推荐直接使用我司已设计好的标准模块;如果现有标准模块无法满足产品的结构需求,也可以选用合适的芯片进行硬件板的设计。
选择好合适的芯片或模块后,可根据产品的功能进行下述设计:
如用户为首次进行语音方案开发,建议到 ☞启英泰伦语音AI平台 上获取基于相关芯片的语音产品方案设计Checklist文档,进行逐一检查以确保设计效果。如有技术支持需求请联系我司技术支持人员。
产品方案设计完成形成样品后,建议对该样品进行相关的识别测试,相关测试方法和标准可参考 ☞识别效果测试。同时,还建议根据产品质量的要求进行各类硬件测试,如双85测试、静电测试等。为了保证最终的识别效果,还建议进行硬件底噪的测试及产品装机后的整机功能测试。
样机测试完成后,会转入后续产线批量生产阶段。我司为产品的批量生产做了完善的解决方案,用户可以参考 ☞生产测试 获取更多信息。用户如需要生产测试的相关技术支持,请联系我司技术人员。
用户如果要采购我司产品样品,请点击 ☞样品购买 ,也可以点击 ☞样品和批量采购 获取更多信息。
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包有以下功能点:
本SDK包中使用到了硬件timer,使用方式如下:
为了方便代码的移植,每个外设驱动和风扇应用代码都是单独的文件夹,目录说明如下:
目录地址 | 目录说明 | 功能描述 |
---|---|---|
..\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.1 方案特点¶
如用户不愿意替换原先使用的电控板,也可以用我司的芯片设计语音控制板,和原电控板通过串口进行通讯,也可以实现语音风扇的产品设计。该方式开发相对简单,可以快速对接完成产品,但成本略高,适用于需快速出产品的的方案或者第一次接触语音识别的方案。
该方案的设计框图如下,语音模块与电控模块需要4根线的串口连接,语音模块进行语音识别及根据风扇的状态进行信息播放,控制由电控模块完成。
5.2.2 硬件设计参考¶
用户可以使用我司芯片设计需要要求的语音模块,但为快速开发,推荐直接使用我司的以下标准模块:
用户直接使用我司标准语音模块时,有以下注意事项:
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 |
注意:
#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;
}
风扇产品在设计结构时,针对麦克风应当注意以下事项:
下图以落地风扇为例,讲述麦克风结构开孔及位置的建议方式,固定麦克风的结构件也需要考虑麦克风线方便引出导线和避免干扰。
风扇产品在设计结构时,针对喇叭应当注意以下事项:
下图是一个喇叭规格及开孔的建议。
编号 | 参考资料描述 | 获取方式 |
---|---|---|
1 | 标准离线SDK CI110X_SDK_ASR_Offline |
请到 ☞启英泰伦语音AI平台 上获取 |
2 | 风扇SDK Demo: 主控方案SDK 串口通讯方案SDK |
请到 ☞启英泰伦语音AI平台 上获取 |
3 | 测试固件 | 到 ☞启英泰伦语音AI平台 上获取 |
4 | 我司芯片和模块的选型指南 | 请点击 ☞硬件选型指南 查看 |
5 | 我司芯片硬件设计方法参考 | 请点击 ☞硬件设计参考 查看 |
6 | 麦克风和喇叭器件选型 | 请点击 ☞外围器件兼容列表 查看 |
7 | 产品结构设计 | 请点击 ☞产品结构设计 查看 |
8 | 软件开发方法和标准SDK说明 | 请点击 ☞软件开发 查看各部分内容 |
9 | 产品识别性能测试方法 | 请点击 ☞识别效果测试 查看 |
10 | 生产测试的方法 | 请点击 ☞生产测试 查看 |
用户如遇到使用问题,请到启英泰伦语音AI平台上提交技术工单,或直接联系我司技术人员获取协助。
文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大
文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码
文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版
文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗
文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程
文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0
文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader
文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型
文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写
文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录
文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点
文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文