tinyPulsePPG 项目教程
1. 项目介绍
tinyPulsePPG 是一个基于 ATTiny85 微控制器的脉搏血氧仪项目,能够显示移动的光电容积脉搏波(Photoplethysmogram, PPG)、脉搏率和血氧饱和度(SpO2)的估计值。该项目使用 SSD1306 128x32 OLED 显示屏和 Max30102 传感器。需要注意的是,该项目不应用于医疗目的,因为 SpO2 的计算非常近似且未经过任何校准。
2. 项目快速启动
2.1 硬件准备
- ATTiny85 微控制器
- SSD1306 128x32 OLED 显示屏
- Max30102 传感器
- 电源(建议使用锂电池,电压范围 3.7V - 4.2V)
2.2 软件准备
- 安装 Arduino IDE。
- 添加 ATTinyCore 库:
- 打开 Arduino IDE,进入
文件 -> 首选项。 - 在
附加开发板管理器网址中添加以下 URL:http://drazzy.com/package_drazzy.com_index.json - 进入
工具 -> 开发板 -> 开发板管理器,搜索并安装ATTinyCore by Spence Konde。
- 打开 Arduino IDE,进入
2.3 代码编译与上传
- 克隆项目代码:
git clone https://github.com/jeffmer/tinyPulsePPG.git - 打开
tinyPulsePPG.ino文件。 - 选择开发板
ATTinyCore by Spence Konde中的ATtiny85。 - 选择合适的处理器频率(建议 16 MHz)。
- 连接硬件并上传代码。
2.4 代码示例
#include <TinyI2CMaster.h>
#include <ssd1306.h>
#include <MAX30102.h>
void setup() {
// 初始化 I2C
TinyI2C.init();
// 初始化 OLED 显示屏
ssd1306_init();
// 初始化 Max30102 传感器
max30102_init();
}
void loop() {
// 读取传感器数据
max30102_read();
// 更新 OLED 显示屏
ssd1306_update();
// 计算脉搏率和 SpO2
calculate_pulse_and_spo2();
}
3. 应用案例和最佳实践
3.1 应用案例
- 健康监测:虽然该项目不适合医疗用途,但可以用于个人健康监测,帮助用户了解自己的脉搏和血氧水平。
- 教育项目:适合用于电子工程和生物医学工程课程,帮助学生理解光电容积脉搏波和血氧饱和度的基本原理。
3.2 最佳实践
- 电源管理:确保使用稳定的电源,建议使用锂电池以保证电压稳定。
- 传感器校准:虽然项目未提供校准功能,但可以通过实验调整代码中的参数以提高 SpO2 的准确性。
- 代码优化:根据实际需求优化代码,例如减少不必要的计算以节省资源。
4. 典型生态项目
- ATTinyCore:该项目依赖于 Spence Konde 的 ATTinyCore 库,提供了对 ATTiny85 的支持。
- SSD1306 库:用于驱动 SSD1306 OLED 显示屏的库,支持多种分辨率和显示模式。
- MAX30102 库:用于与 Max30102 传感器通信的库,提供了读取传感器数据的功能。
通过这些生态项目的支持,tinyPulsePPG 能够实现高效、稳定的运行,为用户提供实时的脉搏和血氧监测。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



