eefocus_3881022 发表于 2026-1-14 10:56:38

《2025 DigiKey AI应用创意挑战赛》基于FRDM-MCXN947的智能打鼾记录器

本帖最后由 eefocus_3881022 于 2026-1-14 10:58 编辑

一、项目名称
       基于FRDM-MCXN947的智能打鼾记录器
二、项目概述
1、背景介绍
       打鼾是睡眠中常见的生理现象,但长期严重打鼾可能与睡眠呼吸暂停综合征(OSA)相关,导致缺氧、白天嗜睡、心血管疾病等健康风险。然而,传统打鼾监测方式存在明显缺陷:如手环、胸带等需直接佩戴,影响睡眠舒适度;或者打鼾者自身难以察觉,需依赖他人反馈;云端上传数据可能泄露用户睡眠信息。针对上述痛点,本项目提出一款离线、非接触、基于AI模型的智能打鼾记录器,通过FRDM-MCXN947开发板实现高精度打鼾检测与记录,无需佩戴设备,保护用户隐私。
2、方案概述
       本项目采用NXP的FRDM-MCXN947开发板,其搭载高性能ARM Cortex-M33内核与专用音频处理模块,支持低功耗运行,适合嵌入式边缘计算场景。通过高灵敏度麦克风阵列(如MEMS麦克风)采集睡眠环境声音,无需接触人体,避免干扰睡眠。针对AI打鼾识别模型,可以通过数据预处理、模型训练到边缘部署,将轻量化模型部署至FRDM-MCXN947,实现实时本**理,无需云端支持。
3、硬件平台
            
模块
硬件选型/参数
功能描述

主控平台
FRDM-MCXN947
负责数据处理、算法控制及外设通信。

显示屏模块
数字麦克风
数据采集

      
4、软件平台
       本次主要使用的软件平台包括:
       MCUXpresso IDE ,主要用于FRDM-MCXN947开发板的程序开发;
       eIQ Portal,用于打鼾模型的创建;

5、功能介绍
       本项目主要实现的打鼾时间以及非打鼾时间的计数,通过数字麦克风的周期性数据采集(约500ms),并通过AI模型进行判断,最后输出相关状态,整体的启动与停止通过板载按键SW3进行控制,单击按键进行状态切换并通过板载的LED(红色)进行当前模式的显示:
       非启动状态:LED常亮;
       启动状态:LED闪烁。
       当处于启动状态回进行数字麦克风的周期性数据采集,同时获取一组数据后送到AI模型进行判断并输出。

6、软件设计
       整体的软件架构如下:
   
关键算法:
       其一就是I2S驱动数字麦克风进行音频数据的提取,主要涉及SAI+DMA的周期数据处理,以及单次采集的启动,最后需要继续进行音频数据的归一化处理,相关代码如下:
void SAI0_RxCallback(I2S_Type *base,
sai_edma_handle_t *handle,
status_t status,
void userData){if (status == kStatus_SAI_RxIdle){g_audioReady = true;   / 1 秒音频 OK */
}
}
void StartAudioCapture_1s(void)
{
sai_transfer_t xfer;
xfer.data = (uint8_t *)g_audioBuffer;
xfer.dataSize = AUDIO_SAMPLES * sizeof(int32_t);

g_audioReady = false;

SAI_TransferReceiveEDMA(
    SAI1,
    &SAI1_SAI_Rx_eDMA_Handle,
    &xfer
);

}
void normalize_1s_audio(const int32_t *src, float *dst)
{
for (int i = 0; i < AUDIO_SAMPLE_RATE; i++)
{
// 1️⃣ 去掉低 8 bit padding,保留符号
int32_t pcm24 = src >> 8;
    // 2️⃣ 归一化到 [-1.0, +1.0)
    dst = (float)pcm24 / 8388608.0f;// 2^23
}

}

       在进行I2S调试的时候我们通过逻辑分析仪进行辅助判断,一步一步进行信号输出与采集:
   

       其二就是打鼾模型的应用,这里生成的打鼾模型是一个.a文件,实际上就是一个加了密的库文件,我们需要通过对应的H文件进行应用,使用方法很简单,通过初始化后将符合要求的音频数据送到对应的函数就可以了,AI模型就会将判断结构进行输出。这里需要说明一下,本次使用的开发板N947的SRAM有384K,我们在第一版的打鼾模型创建完成之后进行部署发现SRAM直接爆掉了,这里主要使用的样本数量和单个采集数据亮都比较的原因导致的,最开始的样本数量是打鼾及非打鼾WAV音频各500个,其频率为44100,发现无法部署后将样本数量各调整为100个,其频率为8000,不进典型特征减少了,其精度也下降了不少,导致环境干扰还是比较大的,如果后面有机会用到更多资源的平台可以用更好的模型进行判断设计。
       预期效果就是打鼾与打鼾状态的计数记录,我们选用了一个安静的环境继续宁状态采集,可以看到串口的输出还是可以:
   



三、作品实物图
       整体连接效果图:
   
       主控单元:
   
       效果展示:
   

四、演示视频
视频地址:【基于FRDM-MCXN947的智能打鼾记录器】 https://www.bilibili.com/video/BV1JRrEBXEEu/?share_source=copy_web&vd_source=6c53bcbe419a41b4d4827b64953cb205

五、项目文档
代码地址:https://gitee.com/jinyuqizhong/2025-DigiKey-AI/tree/master/

项目文档:

AI模型:

页: [1]
查看完整版本: 《2025 DigiKey AI应用创意挑战赛》基于FRDM-MCXN947的智能打鼾记录器