今日头条
随着人们生活水平的提高,对产品的功能要求也越来越高,追求舒适的体验感,特别是对操控性的要求越来越高。目前风扇产品的控制方式有以下几类:
为了解决以上痛点,可以采用纯离线语音识别进行控制,在成本增加不大的情况下,为产品带来更多的亮点和竞争力。启英泰伦针对该产品领域,已开发了整套离线语音风扇方案,下面对该方案进行介绍。
启英泰伦离线语音风扇相对传统风扇方案,可让用户通过语音控制风扇设备,替换传统遥控器或按钮控制的方式,该方案有以下优势:
风扇产品按照使用电源类型可分为交流电风扇、直流电风扇和交直流电风扇三类,其类型可以分为台扇、吊扇、落地扇、无叶风扇等。启英泰伦离线语音风扇方案适用于各类风扇,其中尤其在落地扇上面的应用较多。
语音风扇产品的使用场景为普通家居环境,在安静和中低噪音下可以达到良好的识别率。其中安静环境的环境底噪在35dB ~ 45dB之间,属于中低噪音环境;开启风扇后环境噪音可达45dB ~ 65dB之间。该噪音环境下可以直接选用我司单麦克风语音模块,如CI-B0XGS01S或CI-B0XGS01S-H模块,以达到比较好的性价比。
特别注意,不同的风扇运行过程中,因为扇叶大小和叶片数量,风量大小差异,运行产生的风噪大小也有不小的差异,为了达到最好的语音识别效果,在设计风扇整机结构时,因注意控制噪音小于65dB。
一个基于我司芯片的标准语音产品设计流程如下图所示:
该流程主要针对我司新用户开发产品使用,包含了前期购买样品Demo进行验证,硬件选型,语音对话逻辑、软硬件方案和结构设计,设计完成后的测试,以及生产测试准备和后续批量采购等步骤。如果是已经熟悉我司方案的老用户,可以直接从中间步骤开始,不用再重复进行Demo测试等工作。
下面针对新用户的开发,对上述流程中的各个步骤逐一描述。
针对新用户,可以先从我司授权的经销商或直接从我司官网 ☞样品购买 处购买对应的模块或开发板套件,进行识别效果测试,相关的软硬件技术文档可以从本文档中心处获取。用户测试满意后,可以进行硬件选型。
用户硬件选型可以直接参考 ☞硬件选型 ,如果用户想快速产品化,推荐直接使用我司已设计好的标准模块;如果现有标准模块无法满足产品的结构需求,也可以选用合适的芯片进行硬件板的设计。
选择好合适的芯片或模块后,可根据产品的功能进行下述设计:
如用户为首次进行语音方案开发,建议到 ☞启英泰伦语音AI平台 上获取基于相关芯片的语音产品方案设计Checklist文档,进行逐一检查以确保设计效果。如有技术支持需求请联系我司技术支持人员。
产品方案设计完成形成样品后,建议对该样品进行相关的识别测试,相关测试方法和标准可参考 ☞识别效果测试。同时,还建议根据产品质量的要求进行各类硬件测试,如双85测试、静电测试等。为了保证最终的识别效果,还建议进行硬件底噪的测试及产品装机后的整机功能测试。
样机测试完成后,会转入后续产线批量生产阶段。我司为产品的批量生产做了完善的解决方案,用户可以参考 ☞生产测试 获取更多信息。用户如需要生产测试的相关技术支持,请联系我司技术人员。
用户如果要采购我司产品样品,请点击 ☞样品购买 ,也可以点击 ☞样品和批量采购 获取更多信息。
我司的CI110X芯片内置多个IO,可直接取代传统电控风扇中的单片机控制方案,实现单芯片完成语音控制和主控控制,整体成本较低,但需要做语音和主控的开发,前期开发周期长。
为了方便用户使用,我司已提前做了相应的开发,可以提供完整的语音风扇主控方案。
整个方案如上图所示,CI110X芯片作为主控,可以通过麦克风采集外部语音进行识别,通过功放驱动喇叭播音。如为省成本,还可以将功放和喇叭换为蜂鸣器。CI110X芯片还可以接受外部按键及红外信号,兼容传统控制方式。
CI110X芯片可支持数码管显示,以及控制外部的驱动电路,实现电机的控制,可以很好的用一个单芯片实现风扇的全部控制功能。
风扇电控板的一个硬件参考线路图及IO使用情况见下图,用户可以使用CI110X芯片按照相同的IO使用方式设计硬件电路,可以方便的搭建整套风扇方案。
我司为用户基于上述硬件设计,提供了完整的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; }
如用户不愿意替换原先使用的电控板,也可以用我司的芯片设计语音控制板,和原电控板通过串口进行通讯,也可以实现语音风扇的产品设计。该方式开发相对简单,可以快速对接完成产品,但成本略高,适用于需快速出产品的的方案或者第一次接触语音识别的方案。
该方案的设计框图如下,语音模块与电控模块需要4根线的串口连接,语音模块进行语音识别及根据风扇的状态进行信息播放,控制由电控模块完成。
用户可以使用我司芯片设计需要要求的语音模块,但为快速开发,推荐直接使用我司的以下标准模块:
用户直接使用我司标准语音模块时,有以下注意事项:
语音模块与电控模块通过串口进行信息交互,主要有两种方式,一种为语音模块主动播放,同时将信息发电控模块;另一种为语音模块被动播放,其分别描述如下:
语音模块主动播放模式
主动播放方式主要执行以下动作:
该方式的优点在于控制方式简单,由语音模块单线输出信息给电控模块。但缺点在于无法根据风扇的情况及按键情况进行语音反馈。
语音模块被动播放模式
被动播放方式主要执行以下动作:
该方式的优点在于语音模块根据电控模块的状态进行播放对应内容,可以进行最合适的反馈,体验感好;同时如果电控模块通过按键或者遥控进行控制,语音模块也可以进行状态播放。缺点在于会多一次串口通信的过程。
我司为用户提供了串口通讯方案完整的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平台上提交技术工单,或直接联系我司技术人员获取协助。
审核编辑:符乾江
全部0条评论
快来发表一下你的评论吧 !