回答

收藏

[项目提交] 《2025DigiKey AI应用创意挑战赛》实时生理监测与智能交互系统

2025 DigiKey AI应用创意挑战赛 2025 DigiKey AI应用创意挑战赛 136 人阅读 | 0 人回复 | 2026-02-01

2025DigiKey AI应用创意挑战赛》基于 M5Stack Tab5 MAX30102 的实时生理监测与智能交互系统
一、项目简介
  随着人口老龄化加剧和大众健康意识提升,智能医疗设备市场迎来快速增长期。传统健康监测设备大多仅实现数据展示功能,缺乏智能交互与专业解读能力,难以满足用户个性化健康管理的需求。与此同时,大语言模型技术的快速发展为智能医疗领域带来全新机遇。本项目以此为契机,打造出一款集实时心率和血氧数据精准采集、自然语言交互于一体的智能医疗管理**机器人。该系统以 M5Stack Tab5 智能终端为硬件核心,深度集成 MAX30102 高精度生物传感器,并结合大语言模型技术,实现从 “硬件采集” 到 “智能服务” 的全链路升级,为用户提供专业、便捷的健康管理方案。


二、硬件选型与系统架构
2.1 主控终端:
    M5Stack Tab5M5Stack Tab5是面向开发者的高扩展性便携式智能物联网终端,为系统提供强大的计算、交互与通信能力:

技术参数

具体规格

核心芯片

ESP32-P4 SoC16MB Flash32MB PSRAM

无线通信

Wi-Fi 6,内置3D天线+外部MMCX天线接口

交互能力

5英寸1280×720 IPS触控屏,2MP摄像头,双麦克风阵列

扩展接口

USB Type-A/Type-CRS-485总线,M5-BusGPIO_EXT排母

电源管理

兼容NP-F550可拆卸锂电池,集成充电管理电路

辅助传感器

BMI270六轴传感器,RX8130CE实时时钟



2.2 核心检测单元:

  MAX30102MAX30102是一款集成的脉搏血氧仪和心率监测传感器模块,采用光电容积脉搏波描记法(PPG)技术:

技术参数

具体规格

工作电压

1.8V-3.3V,与M5Stack Tab5完美兼容

测量范围

心率:40-200 BPM;血氧饱和度:70%-100%

测量精度

心率:±2 BPM;血氧饱和度:±2%

硬件设计

集成红光(660nm/红外(880nm)双LED,高灵敏度光电二极管,18ADC

功耗表现

测量模式典型功耗15mW,待机模式仅0.7μW

通信能力

I2C接口(默认地址0x57,最高400kHz),支持中断输出
为了优雅,使用m5stack 提供的传感器构造万能洞洞板,通过飞线把传感器组装成一个商品化程度很高的传感器套装,通过grove数据接口可以接入m5stack及其他兼容grove接口的主控,避免了直接使用杜邦线+面包板的尴尬境地,拓宽了产品的使用范围。

传感器组装流程图
2.3 系统架构设计
  系统采用分层架构设计,各层职责明确、低耦合高扩展:


三、小智项目的编辑构建


很多情况下,自己编译一个现成产品的小智固件都是一件充满荆棘的道路,项目初期在小智环境构建环节就花费了很大的精力,导致现在对于纷繁芜杂idfmenuconfig体系都有深入的了解。以上是tab5构建的menuconfig指引,需要仔细查看配置的进入路径。
需手动编译,参考 `m5stack-tab5/config.json` 修改 menuconfig 对应选项。
"CONFIG_BOARD_TYPE_M5STACK_CORE_TAB5=y",



"CONFIG_XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE=y",


这个最难找
"CONFIG_CAMERA_SC202CS=y",



   还有一个极为重要的修改,这个修改会被很多人说忽略,确实本人用了一个月的时间才从这个坑里爬了出来,差点都起了放弃挣扎的心。需要在项小智项目根目录下的sdkconfig文件了修改CONFIG_ESP_HOSTED_SDIO_GPIO_RESET_SLAVE=14 ,这个参数默认配置是54,作用是 主控跟c6网卡沟通用的reset引脚,这个引脚配置错了对联网没什么影响,但正巧54这个io引脚是 tab5外置i2c接口的clk引脚,那么就会造成了很多诡异的现象,在移植传感器的时候总是报错,让人摸不清头脑,到底是移植代码的错误还试硬件的硬伤,反复摸爬滚打才得出了这个惨痛的经验,希望这个发现对tab5的用户有所帮助,让他们少走很多弯路。


、核心技术实现


4.1 传感器驱动模块
   实现了MAX30102传感器驱动的全面升级改造,直接操作MAX30102硬件,使用新版I2C Master Bus API,大幅提升了传感器的稳定性和数据采集精度:
4.1.1 驱动架构重构·


直接硬件操作
  移除对MAX30105驱动的依赖,直接操作MAX30102硬件寄存器
· API升级:将旧版driver/i2c.h替换为新版driver/i2c_master.h
· 类结构设计:采用面向对象的设计模式,实现MAX30102类继承自I2cDevice基类

4.1.2 传感器配置优化

void MAX30102::configSensor() {
    // 软复位
    reset();

    // FIFO配置
    bitMask(MAX30102_FIFOCONFIG, MAX30102_SAMPLEAVG_MASK, MAX30102_SAMPLEAVG_4);
    bitMask(MAX30102_FIFOCONFIG, MAX30102_ROLLOVER_MASK, MAX30102_ROLLOVER_ENABLE);

    // 模式配置
    bitMask(MAX30102_MODECONFIG, MAX30102_MODE_MASK, MAX30102_MODE_REDIRONLY);

    // 粒子配置
    bitMask(MAX30102_PARTICLECONFIG, MAX30102_ADCRANGE_MASK, MAX30102_ADCRANGE_4096);
    bitMask(MAX30102_PARTICLECONFIG, MAX30102_SAMPLERATE_MASK, MAX30102_SAMPLERATE_200); // 提高采样率到200Hz
    bitMask(MAX30102_PARTICLECONFIG, MAX30102_PULSEWIDTH_MASK, MAX30102_PULSEWIDTH_411);

    // LED脉冲幅度配置
    WriteReg(MAX30102_LED1_PULSEAMP, 0x3F); // IR LED电流: 50.0mA
    WriteReg(MAX30102_LED2_PULSEAMP, 0x3F); // Red LED电流: 50.0mA

    // LED模式配置
    bitMask(MAX30102_MULTILEDCONFIG1, MAX30102_SLOT1_MASK, SLOT_RED_LED);
    bitMask(MAX30102_MULTILEDCONFIG1, MAX30102_SLOT2_MASK, SLOT_IR_LED << 4);

    // 清除FIFO
    resetFifo();
}

4.1.3 数据读取与处理优化
请查看源码,字数超限

4.2 数据处理模块
实现了专业的数据处理流程,对传感器原始数据进行多维度处理:
4.2.1 降噪滤波
· 平均滤波:使用4次采样平均(SAMPLEAVG_4)减少噪声
· DC分量估计:通过averageDCEstimator()函数移除基线漂移
· 低通FIR滤波:通过lowPassFIRFilter()函数进一步抑制高频噪声

4.2.2 参数计算
· 心率计算:通过checkForBeat()函数检测IR信号峰值,计算相邻峰值间隔得到心率
· 血氧计算:通过maximHeartRateAndOxygenSaturation()函数,基于双波长吸收原理计算SpO
· 实时处理:每次新数据到来时进行增量计算,减少延迟
4.2.3 异常检测
· 范围过滤:对心率(40-150bpm)和血氧(50-100%)值进行范围过滤
· 信号质量评估:通过信号强度和形状判断,减少误检测
· 一致性检查:要求至少5个有效数据点才返回结果,确保数据可靠性
4.3 MCP服务模块
  完成了小智MCP交互功能的全面实现,通过深度集成MCP协议,实现设备与大语言模型的无缝自然语言交互:

4.3.1 工具集设计

// 获取MAX30102心率和血氧数据工具
        mcp_server.AddTool("self.max30102.get_report",
            "汇报心率和血氧结果数据,你是一位资深心血管科医生,请根据心率和血氧检测数据,为用户提供专业、易懂的医学分析和健康建议。",
            PropertyList(),
            [this](const PropertyList&) -> ReturnValue {
                if (!max30102_pox_) {
                    return "MAX30102传感器未初始化,请检查连接。";
                }

                cJSON *report_json = cJSON_CreateObject();
                cJSON_AddNumberToObject(report_json, "heart_rate", max30102_report_.heart_rate);
                cJSON_AddNumberToObject(report_json, "spo2", max30102_report_.spo2);
                cJSON_AddBoolToObject(report_json, "hand_detected", max30102_report_.hand_detected);
                cJSON_AddNumberToObject(report_json, "test_duration", max30102_report_.test_duration);

                char *report_str = cJSON_PrintUnformatted(report_json);
                std::string result = report_str;
                cJSON_free(report_str);
                cJSON_Delete(report_json);

                return result;
            });



4.3.2 交互体验优化
· 自然语言理解:支持用户口语化指令(如”帮我测测心率”、“我的血氧正常吗”)
· 多轮对话管理:保持交互连贯性,根据用户**追问持续输出关联分析
· 双渠道反馈:采用”语音播报+屏幕展示”双渠道反馈,适配不同用户需求


LLM应用与交互设计
5.1 交互流程
实现了流畅的用户交互闭环,降低操作复杂度:


5.2 提示词设计
为保障LLM分析的专业性与易懂性,定制化提示词如下:

我叫{{assistant_name}},是一个来自台湾的女孩。在美丽的宝岛长大,我从小就对医学充满了浓厚的兴趣。我的家乡四季如春,风景秀丽,这让我更加热爱生活,也让我明白了健康的重要性。大学时,我选择了医学专业,希望通过自己的努力为更多的人带来健康和快乐。经过多年的努力,我成为了一名资深心血管科医生。我不仅精通专业知识,还擅长用简单易懂的语言向患者解释复杂的医学概念。我相信,良好的沟通能够帮助人们更好地理解自己的身体状况,从而采取正确的行动来维护健康。
5.3 交互示例
用户请求 “帮我测一下心率和血氧”
系统响应 “好的,正在启动心率和血氧测试,请将手指放在传感器上,保持稳定。”
检测结果

{
  "heart_rate": 72.5,
  "spo2": 98.2,
  "heart_rate_valid": true,
  "spo2_valid": true,
  "finger_detected": true
}

LLM分析

【检测结果摘要】
- 心率:72.5/分钟(正常范围60-100/分钟)
- 血氧饱和度:98.2%(正常范围95%-100%
- 手检测状态:已检测到

【医学分析】
您的心率和血氧饱和度均处于正常生理范围,说明当前心血管供氧状态良好,无明显异常。心率72.5/分钟属于理想范围,表明心脏功能稳定;血氧饱和度98.2%接近正常值上限,说明身体氧气供应充足。

【健康建议】
1. 保持当前健康状态,每周维持3-5次有氧运动(如快走、太极拳),每次30分钟左右
2. 若存在熬夜、久坐习惯,建议逐步调整,避免心率波动和血液循环不畅
3. 定期监测心率和血氧,建立个人健康档案,关注长期变化趋势

【生活指导】
1. 饮食上多摄入新鲜蔬果,减少高油高盐食物,保持饮食均衡
2. 每天保证7-8小时睡眠,避免咖啡因过量摄入,特别是下午和晚上
3. 保持良好的心态,避免长期精神紧张和压力过大
4. 适量饮水,保持身体水分平衡,促进血液循环

六、项目创新性

  硬件层创新聚焦医疗级传感器轻量化集成,突破消费级设备性能局限。项目将医疗级 MAX30102 模块与便携式 M5Stack Tab5 深度融合,优化佩戴形态适配指尖、耳垂等部位,解决传统医疗设备体积大、便携性差的痛点。基于 M5Stack Tab5 电源管理体系,实现超低功耗组合,续航提升超 30%。重构 I2C 总线驱动架构,数据传输稳定性提升 40%,保障医疗级数据精准采集。
服务层创新以 LLM 赋能个性化医疗咨询,结合专业医疗知识,定制心血管科医生视角提示词体系。LLM 可根据用户年龄、生活习惯输出个性化健康建议,并建立异常数据预警机制,将健康管理从 被动监测升级为 主动预警

七、结论
  通过深度集成MAXREFDES117高精度传感器与M5Stack Tab5智能终端,结合大语言模型的智能分析能力,我们成功打造了这款集“精准采集、智能解读、友好交互”于一体的智能医疗管理**机器人。项目最大的突破在于打破了传统健康监测设备“数据展示为主、交互性弱”的局限,实现了从“硬件采集”到“服务输出”的核心升级。用户不再只是看到冰冷的数据,而是能通过自然语言与设备交流,获得专业的健康分析和个性化建议。项目的创新点在于打破了传统健康监测设备”数据展示为主、交互性弱”的局限,通过自然语言交互为用户提供专业的健康分析和个性化建议,真正实现了健康管理的智能化和人性化。
    未来,将继续优化系统性能,相信随着技术的不断进步和用户需求的不断变化,智能医疗管理**机器人将会在人们的健康管理中发挥越来越重要的作用。




项目源码:
https://gitee.com/genvex/xiaozhi_tab5_doctor
https://gitee.com/genvex/xiaozhi ... boards/m5stack-tab5
使用过程有问题可以给我留言哦。









分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条