便携式血氧仪(脉搏血氧监测):Arduino Nano + MAX30100 + OLED,COVID-19 应急开源方案
项目背景与免责声明
⚠️ 重要提示:本设备非医疗器械,传感器未经校准与医疗认证,仅供应急筛查/科研学习参考,不可替代专业医疗设备。任何超出应急范围的使用风险自负。代码遵循 GPLv3 开源协议。
疫情早期血氧仪极度短缺,本项目提供完整开源方案:硬件清单、3D 打印外壳/指夹、原理图、Arduino 固件,支持快速复制部署。
硬件清单(极简 BOM)
| 模块 | 规格/型号 | 数量 | 备注 |
|---|---|---|---|
| MCU | Arduino Nano R3(或 Nano Every/Pro Micro) | 1 | 3.3V 逻辑,I2C: A4/SDA, A5/SCL |
| 血氧传感器 | MAX30100 模块(集成红外/红光 LED + 光电二极管) | 1 | I2C 地址 0x57,3.3V 供电 |
| 显示屏 | SSD1306 128×32 I2C OLED | 1 | 0.91 英寸,白光/蓝光均可 |
| 指夹 | Thingiverse #33021 Peter_Smith 设计 | 1 | 3D 打印,固定传感器与手指相对 |
| 外壳 | 主体 + 盖板(含 OLED 窗口) | 1 套 | PLA 打印,螺丝/卡扣组装 |
| 应急底板 | 万用板/洞洞板 | 1 | 焊接 Nano、传感器、OLED 排针,后续可转 PCB |
| 导线 | 4×0.25mm² 软线 | 若干 | I2C 总线连接 |
电路连接(I2C 总线挂载两设备)
Nano A4 (SDA) ──────┬── MAX30100 SDA
├── OLED SDA
Nano A5 (SCL) ──────┼── MAX30100 SCL
├── OLED SCL
3.3V ───────────────┼── MAX30100 VDD
└── OLED VCC
GND ────────────────┴── 所有 GND

固件核心逻辑
库依赖
Wire.h(内置)MAX30100_PulseOximeter.h+MAX30100.h(oxullo/Arduino-MAX30100)U8g2lib.h(olikraus/u8g2,驱动 SSD1306)
关键参数配置
#define REPORTING_PERIOD_MS 1000 // 刷新周期 1s
#define PULSE_WIDTH MAX30100_SPC_PW_1600US_16BITS // 脉宽 1600us,16-bit 分辨率
#define IR_LED_CURRENT MAX30100_LED_CURR_40MA // IR LED 40mA
#define LED_CURRENT MAX30100_LED_CURR_20_8MA // 红光 LED 20.8mA
#define SAMPLING_RATE MAX30100_SAMPRATE_100HZ // 采样率 100Hz
主循环流程
- `pox.update()` 持续运行 FIFO 读取与心率/血氧算法(内部状态机)。
- 心跳检测回调 `onBeatDetected()` → OLED 右上角显示跳动图标(`^`/`_` 交替)。
- 每 `REPORTING_PERIOD_MS` 读取 `getHeartRate()` 与 `getSpO2()`,范围校验(HR 30~220, SpO2 30~100)后刷屏显示。
- 启动阶段显示 “CEREBRUM.it Initializing...” 与 “Wear the Sensor...” 引导用户佩戴。
3D 打印件
- 主外壳:容纳 Nano、万用板、OLED,顶部留窗口显示屏幕。
- 指夹:Thingiverse #33021,两半对称扣合,传感器嵌入上半壳凹槽,手指放入下半壳,弹簧/橡皮筋提供接触压力。
- 建议打印参数:PLA,0.2mm 层高,30% 填充,支撑仅指夹铰链处。

组装步骤概要
- 在万用板上焊接 Nano 排针、MAX30100 排针、OLED 排针,按 I2C 总线并联布线。
- 将万用板固定在外壳底部卡槽,OLED 穿过窗口贴合面板。
- MAX30100 模块嵌入指夹上半壳传感器槽,排线穿过导向孔接回主板。
- 合上外壳盖板,指夹两半扣合,穿入弹性绳/弹簧。
- USB 供电或接 3.7V 锂电池+TP4056 充电板(需自行扩展),上电观察 OLED 启动画面。
使用与校准建议
- 手指平稳放入指夹,指甲朝上,避免用力按压或晃动。
- 首次佩戴约 10~20 秒稳定读数,观察心率波形图标规律闪烁。
- 若读数异常(HR=0 或 SpO2=0),检查 I2C 接触、传感器贴合度、供电稳定性。
- 对比医用指夹式血氧仪标定偏移量,可在代码中对 `HRclean` 与 `SpO2` 做线性修正。
资源下载
- 完整固件
CE_Pulse-Oxi_dev2.4.ino、原理图(Fritzing)、组装说明 PDF:见原文 Code/CAD/Schematics 区 - GitHub 同步仓库(含 PCB 版本规划):cerebrum-srl/CE_PulseOxi(示例链接)
制造工艺
- 清单为何能提升工厂效率:实证效益与落地指南
- 用 Arduino 制作超声波悬浮装置:分步指南
- ISD1700 语音录放模块 Arduino 驱动与 Windows 录制工具完整指南
- 自动电键助力无线电测向 —— 精准、易用、可靠
- Health Band 智能健康手环:基于 Infineon DPS310 的老人跌倒/步数/体温监护系统
- 选购托盘货架钢丝网层板专家指南:确保可靠承载
- 工业级砂型铸造解决方案:工艺差异与选型指南
- 家用电动水泵:可靠、高效、安装简易
- 高精密CNC电火花加工机(EDM)选型指南
- 金属3D打印:重塑行业的5大前沿应用
- COVID-19:高效应急供应链响应计划的关键策略
- 3D打印五大高价值应用场景:从珠宝到器官的制造革命