CI13LC离线语音吸顶灯主控方案¶
一. 方案介绍¶
1.1 方案背景¶
离线语音在各类产品上的使用越来越多,这为原有的非智能产品增加了能听会说的“耳朵”和“嘴巴”,提升了用户体验。我司的智能语音芯片,既可以用串口和电控板对接的方式快速为产品增加语音功能,也可以作为部分产品的主控芯片,以兼具更小的空间及更低的成本。
目前吸顶灯产品的控制方式有以下几类:
-
墙壁开关控制:传统墙壁开关控制,使用不够方便;
-
遥控器控制:一般采用红外、433、2.4G遥控,但遥控器有时不好找;
- 手机APP控制:每次控制需要打开手机APP,需要联网,操作较为繁琐;
- 智能音箱控制:通过智能音箱直接控制,相对方便,但音箱需联网状态下才可使用,可能存在网络延时,有隐私安全风险;
为解决上述控制的痛点,我司开发了离线语音吸顶灯主控方案,实现智能语音控制,无需联网,想要控制灯具,只需动动嘴就可以了,使用方便快捷。
1.2 方案框图¶
将语音模块内置,和灯驱部分连在一起。通过语音模块输出PWM信号控制灯光输出;语音模块检测AC信号,实现墙壁开关变光功能。

1.3 方案描述¶
主要功能:
①支持开关控制;
②支持亮度调节;
③支持色温调节;
④支持快速开关墙壁开关进行变光;
⑤支持场景灯光名称自定义;
演示视频: 离线语音吸顶灯主控方案演示视频点我观看。
1.4 方案特点¶
-
控制便捷:无需联网、使用控制更方便;
-
主控芯片:使用语音芯片做主控,成本更有优势;
- 调光算法:自研CCT调光算法,调光细腻平滑,无可视频闪;
- 稳定可靠:行业众多大厂量产案例,高稳定性,高可靠性;
1.5 可选功能¶
-
免唤醒:“小X开灯、小X关灯”等固定词条,可做免唤醒直接控制;
-
自然说:可支持离线自然说,用户无需记忆命令词,使用更便捷;
- 自学习:可支持自学习,解决方言口音问题;
- 小程序及遥控:使用CI23LC系列芯片可支持小程序及遥控器控制;
二. 硬件设计¶
2.1 参考原理图¶

2.2 推荐引脚¶
- 白光控制脚:PA3;
- 黄光控制脚:PA5;
- AC掉电检测脚:PA6;
2.3 硬件设计注意事项¶
- CI13242语音芯片默认PG_EN(PA4)升级脚内部上拉,上电会先自动进入升级模式,启动时间约为800ms,故使用我司语音芯片作为灯具主控应用时,需要将PG_EN(PA4)升级脚加外边下拉电阻,使其上电时跳过升级模式,这样启动时间可做到300ms左右;
- 为了调试升级方便,硬件设计时建议将PG_EN(PA4)升级脚预留测试点;
三.结构设计¶
3.1 麦克风结构设计¶
- 麦克风类似是人的耳朵,本质是将一个微小声压信号进行放大,然后进入语音芯片进行识别,所以麦克风在安装时候,要特别产品开孔和注意远离噪音避免干扰,详细参考请☞【麦克风结构设计】;
- 采用双麦设计,双麦克风推荐距离为4CM(两麦克风的中心距离);
- 麦克规格(推荐):灵敏度-32dB,信噪比65dB以上;
3.2 结构设计注意事项¶
- 对于吸顶灯产品,能开麦克风孔的强烈建议尽量都开麦克风孔,开孔后识别效果会更好,对噪音的抵抗能力会更强;
- 对于吸顶灯产品,因结构限制,实在无法开麦克风孔的,只能选择麦克风内置与灯罩内的,注意要将麦克风放置与LED灯板上方,一定不要放置于LED灯板下方,麦克风和LED灯板之间不要有缝隙;
- 对于吸顶灯产品,注意不能有喇叭,否则喇叭播放完仍会在腔体产生混响,导致识别效果下降明显;
四. 软件开发¶
4.1 硬件准备¶
开发套件:启英泰伦 CI13242开发板套件 (推荐型号 CI13242开发板套件)
烧录工具:USB转TTL串口调试工具(用于固件烧录、实时通信验证、日志LOG打印等,可5V/3V3供电)
杜邦线:杜邦线(用于固件烧录、实时通信验证、日志LOG打印等)
麦克风、喇叭:启英商城购买麦克风、喇叭与模块板匹配,批量购买具体参数可参考:麦克风兼容列表
测试设备:个人电脑(建议Windows 7及以上系统)
4.2 软件准备¶
开发环境搭建:编译软件安装与使用
软件SDK下载:CI13LC_SDK_ASR_Offline_V2.0.15(若有新版本,请使用最新版本的SDK)

4.3 资料获取¶
4.4 文件说明¶
我司为用户基于吸顶灯主控方案提供了完整的SDK包,用户可以到 ☞启英泰伦语音AI平台 或联系我司FAE获取相关SDK开发包。为了方便代码的移植,SDK包中关于灯光控制驱动放置于CI13LC_SDK_Offline_Vx.x.x\projects\offline_asr_sample\src\light文件夹内,文件功能说明如下:

| 文件名 | 功能描述 | 使用说明 |
|---|---|---|
| buzzer_driver.c buzzer_driver.h |
蜂鸣器驱动,实现唤醒、退出唤醒等提示音功能 | 可通过宏配置蜂鸣器是否开启及蜂鸣器IO引脚配置等 |
| light_ac_detect.c light_ac_detect.h |
AC掉电检测,实现墙壁开关变光,多次开关复位等功能 | 可通过宏配置AC检测是否开启及AC检测IO引脚配置等 |
| light_drive.c light_drive.h |
灯光PWM驱动,实现冷暖两路PWM驱动初始化 | 可通过宏配置冷暖PWM引脚,频率,最大占空比等 |
| light_control.c light_control.h |
灯光控制源文件,初始化、开关、亮度、色温、模式等调节功能 | 可通过宏配置调光算法,线性调光还是曲线调光,亮度等级极值等 |
4.5 函数说明¶
1、灯光控制初始化函数路径:CI13LC_SDK_Offline_Vx.x.x\projects\offline_asr_sample\src\light\light_control.c
/**
* @brief 灯光控制初始化
*
* @param [in] void
* @param [out] None
*
* @return void
*
* @history
* 1.Date : 3/24/2025 16:48:32
* Author : zhh
* Modification : Created function
*/
void light_control_init(void)
{
// 灯驱动初始化
light_driver_init();
// 调光定时器初始化
light_timer_init();
// 灯状态初始化
light_status_init();
//蜂鸣器初始化
buzzer_driver_init();
// AC检测初始化
light_ac_detect_init();
// 灯光上电输出
light_power_on_output();
// 创建灯具配置失效定时器
config_invalid_timer = xTimerCreate("config_invalid_timer", pdMS_TO_TICKS(CONFIG_INVALID_TIME), pdFALSE, (void *)0, config_invalid_callback);
if (NULL == config_invalid_timer)
{
mprintf("config_invalid_timer create fail! FUNCTION = %s, LINE = %d\r\n",__FUNCTION__, __LINE__);
}
else
{
xTimerStart(config_invalid_timer, 0);
}
}
2、灯光输出更新函数路径:CI13LC_SDK_Offline_Vx.x.x\projects\offline_asr_sample\src\light\light_control.c
/**
* @brief 灯光输出更新
*
* @param [in] uint16_t toCct 目标色温
* @param [in] uint16_t toLevel 目标亮度
* @param [in] uint16_t fadeTime 从当前色温、亮度到目标色温、亮度的渐变时间,单位ms
* @param [in] uint16_t keepTime 调光完成后保持时间,单位ms
* @param [in] void(*finishCB)(void) 调光完成后回调函数
* @param [out] None
*
* @return void
*
* @history
* 1.Date : 3/24/2025 14:33:52
* Author : zhh
* Modification : Created function
*/
void light_output_update(uint16_t toCct, uint16_t toLevel, uint16_t fadeTime, uint16_t keepTime, void(*finishCB)(void))
{
uint16_t destPwm[LIGHT_MAX_PWM_CHANNEL] = {0};
uint16_t *pDestPwm = destPwm;
bool turnOff = false;
uint16_t fadeCycle = fadeTime * (BASE_FADE_TIME / LIGHT_CTR_TIMER_PERIOD);
uint16_t keppCycle = keepTime * (BASE_FADE_TIME / LIGHT_CTR_TIMER_PERIOD);
if (toLevel > DEFAULT_MAX_LEVEL)
{
toLevel = DEFAULT_MAX_LEVEL;
}
if ((toLevel < DEFAULT_MIN_LEVEL) && (toLevel != 0))
{
toLevel = DEFAULT_MIN_LEVEL;
}
if (toCct > DEFAULT_COOL_CCT)
{
toCct = DEFAULT_COOL_CCT;
}
else if (toCct < DEFAULT_WARM_CCT)
{
toCct = DEFAULT_WARM_CCT;
}
light_pwm_percent_calc(toCct, toLevel, destPwm);
if (toLevel == 0)
{
turnOff = true;
}
g_light_status.cct = toCct;
#if LIGHT_OFF_SAVE_EN
g_light_status.level = toLevel;
#else
if(toLevel != 0)
{
g_light_status.level = toLevel;
}
#endif
light_regulate_update(pDestPwm, fadeCycle, keppCycle, turnOff, finishCB);
}
3、灯光控制处理函数路径:CI13LC_SDK_Offline_Vx.x.x\projects\offline_asr_sample\src\light\light_control.c
/**
* @brief 通过语义ID进行灯光控制处理
*
* @param [in] uint32_t semantic_id
* @param [out] None
*
* @return int8_t
*
* @history
* 1.Date : 7/27/2021 15:56:56
* Author : zhh
* Modification : Created function
*/
int8_t light_control_deal(uint32_t semantic_id)
{
int8_t ret = 1;
if (semantic_id == 1000) //开灯
{
ret = light_turn_on_output();
}
else if (semantic_id == 1001) //关灯
{
ret = light_turn_off_output();
}
else if (semantic_id == 1002) //白光
{
ret = light_white_output();
}
else if (semantic_id == 1003) //黄光
{
ret = light_yellow_output();
}
else if (semantic_id == 1004) //自然光
{
ret = light_nature_output();
}
else if (semantic_id == 1005) //白一点
{
ret = light_cct_up_output();
}
else if (semantic_id == 1006) //黄一点
{
ret = light_cct_down_output();
}
else if (semantic_id == 1007) //切换色温
{
ret = light_asr_change_output();
}
else if (semantic_id == 1008) //亮一点
{
ret = light_brightness_up_output();
}
else if (semantic_id == 1009) //暗一点
{
ret = light_brightness_down_output();
}
else if (semantic_id == 1010) //最高亮度
{
ret = light_brightness_max_output();
}
else if (semantic_id == 1011) //中等亮度
{
ret = light_brightness_mid_output();
}
else if (semantic_id == 1012) //最低亮度
{
ret = light_brightness_min_output();
}
return ret;
}
4.6 命令词和固件制作指南¶
语音识别的流程及所需资源如下图所示,麦克风将语音转换为数字信号,送到NN做识别。NN识别需要两个资源,声学模型和语言模型,NN识别后输出字符串。然后到命令词信息表里查找NN输出的字符串,如果未找到,说明误识别,不处理。如果查找到,就是有效识别,然后根据查找到的命令词获取相关信息,进行相应应用功能处理,最后调用提示音播放器播放提示音。

模型表格生成、固件开发、固件打包及烧录等内容请☞命令词和固件制作指南进行参考学习。
用户如遇到使用问题,请到启英泰伦语音AI平台上☞提交工单或直接联系我司FAE获取协助。