一:血氧仪模块知识分享:
MAX30102 是一款集成的脉搏血氧仪和心率监测模块。它内置了发光二极管、光电探测器、光学元件以及具有环境光抑制功能的低噪声电子元件。MAX30102 提供了一套完整的系统解决方案,有助于简化移动设备和可穿戴设备的设计流程。该模块采用单 1.8V 电源供电,内部发光二极管则由单独的 3.3V 电源供电。通信通过标准的 I2C 兼容接口实现。模块可通过软件关闭,待机时电流为零,从而允许电源轨始终处于供电状态。
优势与特点
心率监测和脉搏血氧仪传感器采用 LED 反射式解决方案
小巧的 5.6 毫米×3.3 毫米×1.55 毫米 14 引脚光学模块
集成保护玻璃,实现最佳、稳健的性能
适用于移动设备的超低功耗运行
可编程采样率和 LED 电流以节省功耗
超低功耗心率监测(< 1 毫瓦)
超低关机电流(典型值 0.7 微安)
快速数据输出能力
高采样率
强大的运动伪迹抗干扰能力
高信噪比
工作温度范围:-40°C 至 +85°C
二:硬件连接:
开发板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; } }