这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Letusdoit活动第二期:智能手环-过程贴读取血氧仪模块数据

共1条 1/1 1 跳转至

Letusdoit活动第二期:智能手环-过程贴读取血氧仪模块数据

高工
2025-10-12 16:29:11     打赏

一:血氧仪模块知识分享:

    MAX30102 是一款集成的脉搏血氧仪和心率监测模块。它内置了发光二极管、光电探测器、光学元件以及具有环境光抑制功能的低噪声电子元件。MAX30102 提供了一套完整的系统解决方案,有助于简化移动设备和可穿戴设备的设计流程。该模块采用单 1.8V 电源供电,内部发光二极管则由单独的 3.3V 电源供电。通信通过标准的 I2C 兼容接口实现。模块可通过软件关闭,待机时电流为零,从而允许电源轨始终处于供电状态。

优势与特点

心率监测和脉搏血氧仪传感器采用 LED 反射式解决方案

小巧的 5.6 毫米×3.3 毫米×1.55 毫米 14 引脚光学模块

集成保护玻璃,实现最佳、稳健的性能

适用于移动设备的超低功耗运行

可编程采样率和 LED 电流以节省功耗

超低功耗心率监测(< 1 毫瓦)

超低关机电流(典型值 0.7 微安)

快速数据输出能力

高采样率

强大的运动伪迹抗干扰能力

高信噪比

工作温度范围:-40°C 至 +85°C

03-1.png

二:硬件连接:

开发板7800与MAX30102的传感器使用IIC的方式连接;

开发板的P016(SCL)连接血氧仪模块的SCL

开发板的P017(SDA)连接血氧仪模块的SDA

开发板直接给模块供电3V3 ,GND 连接到一起就可以。

三:软件实现流程:

3.1 上电初始化开发板,初始化OLED屏幕配置基础IIC时钟频率。

3.2 初始化血氧模块MAX30102传感器。

3.3 通过IIC方式读取传感器模块的寄存器信息。

3.4 屏幕OLED显示读取的模块数据。

四:软件代码如下:

u8g2_SetFont(&u8g2, u8g2_font_prospero_bold_nbp_tr);
u8g2_DrawStr(&u8g2, 5, 55, "Heart Rate");

sprintf(buf, "%d bpm", heart_rate);
u8g2_SetFont(&u8g2, u8g2_font_inb16_mn);
u8g2_DrawStr(&u8g2, 75, 65, buf);


// 绘制中间分隔线
// u8g2_DrawHLine(&u8g2, 0, 60, 128);

//显示血氧部分(下半部分)
u8g2_SetFont(&u8g2, u8g2_font_calibration_gothic_nbp_t_all);
//u8g2_DrawStr(&u8g2, 25, 90, "SpO2");

// // 显示血氧整数部分
sprintf(buf, "%.0f", blood_oxygen);
u8g2_SetFont(&u8g2, u8g2_font_inb16_mn);
u8g2_DrawStr(&u8g2, 75, 35, buf);

// 显示血氧小数部分
u8g2_SetFont(&u8g2, u8g2_font_prospero_bold_nbp_tr);
sprintf(buf, ".%d", (int)(10 * (blood_oxygen - (int)blood_oxygen)));
u8g2_DrawStr(&u8g2, 110, 25, buf);

// 刷新显示
u8g2_SendBuffer(&u8g2);

// 延时(模拟数据更新)
MXC_Delay(MXC_DELAY_MSEC(1000));

// 模拟数据变化(测试用)
heart_rate += 1;
if (heart_rate > 100) heart_rate = 60;

blood_oxygen -= 0.5;
if (blood_oxygen < 90.0) blood_oxygen = 99.0; 
    }
}



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]