Портативный пульсоксиметр для экстренного использования в условиях COVID-19
Компоненты и материалы
| Arduino Nano R3 | 1 шт. |
| MAX30100 (пульсоксиметр/пульс, I2C) | 1 шт. |
| OLED SSD1306 128×32 I2C | 1 шт. |
| Макетная плата | 1 шт. |
| Накладка на палец (3D-печать, модель Peter Smith на Thingiverse) | 1 шт. |
Инструменты
- 3D-принтер
- Паяльник
- Пряжа без свинца
- Провод 4×0.25 мм²
О проекте
В условиях пандемии дефицит медицинских пульсоксиметров. Open-source проект для быстрого воспроизводства функционального устройства мониторинга SpO2 и пульса.
Состав «базового набора»
- Железо: Arduino Nano (или Nano Every, Micro), MAX30100, OLED 128×32, простая макетная плата («аварийная плата»).
- 3D-корпус: простой чехол для электроники + крышка.
- Накладка на палец: готовая модель «Pulse Oximeter Clip» (Thingiverse, автор Peter_Smith) для фиксации MAX30100 на пальце.
- Плата-расширитель: соединяет Nano, датчик и дисплей на макетке (следующий шаг — PCB).
- Прошивка: базовая конфигурация для реального времени HR и SpO2. Параметры общего назначения, могут требовать калибровки.
- Инструкции: пошаговая сборка, схемы, ссылки на библиотеки и 3D-модели.
ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ: Устройство НЕ сертифицировано, НЕ калибровано, НЕ предназначено для медицинской диагностики. Только для превентивного мониторинга в экстренных условиях при отсутствии медицинского оборудования. Использование на свой страх и риск. Лицензия GPL v3.
Код (CE_Pulse-Oxi_dev2.4.ino)
/* CEREBRUM-oximeter dev. 2.4 - version 1.1 // April 6 2020
Arduino NANO - 3.3V | I2C A4 (SDA), A5 (SCL)
MAX30100 - PulseOximeter board (+3.3V | GND | SDA/SCL)
OLED SSD1306 128x32 (+3.3V | GND | SDA/SCL)
GPL v3, Copyright © 2020, CEREBRUM™ srl */
#include
#include "MAX30100_PulseOximeter.h"
#include "MAX30100.h"
#include
#define REPORTING_PERIOD_MS 1000
#define PULSE_WIDTH MAX30100_SPC_PW_1600US_16BITS
#define IR_LED_CURRENT MAX30100_LED_CURR_40MA
#define LED_CURRENT MAX30100_LED_CURR_20_8MA
#define SAMPLING_RATE MAX30100_SAMPRATE_100HZ
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);
PulseOximeter pox;
MAX30100 sensor;
uint32_t tsLastReport = 0, last_beat = 0;
bool initialized = false;
int HRclean, SpO2;
void onBeatDetected() { show_beat(); last_beat = millis(); }
void show_beat() {
u8g2.setFont(u8g2_font_cursor_tr);
u8g2.setCursor(118,10); u8g2.print("_"); u8g2.sendBuffer();
}
void initial_display() {
if (!initialized) {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_crox2hb_tr); u8g2.setCursor(15,12); u8g2.print("CEREBRUM.it");
u8g2.setFont(u8g2_font_crox2h_tr); u8g2.setCursor(30,29); u8g2.print("Initializing...");
u8g2.sendBuffer(); delay(4000); initialized = true;
u8g2.clearBuffer();
if (!pox.begin()) {
u8g2.setCursor(40,12); u8g2.print("FAILED");
u8g2.setCursor(15,29); u8g2.print("Check Sensor !"); u8g2.sendBuffer();
for(;;);
} else {
u8g2.setCursor(20,12); u8g2.print("INITIALIZED");
u8g2.setCursor(0,29); u8g2.print("Wear the Sensor..."); u8g2.sendBuffer();
}
delay(2000);
}
}
void setup() {
u8g2.begin(); initial_display();
pox.begin(); pox.setOnBeatDetectedCallback(onBeatDetected);
pox.setIRLedCurrent(LED_CURRENT);
sensor.setMode(MAX30100_MODE_SPO2_HR);
sensor.setLedsPulseWidth(PULSE_WIDTH);
sensor.setSamplingRate(SAMPLING_RATE);
}
void loop() {
pox.update();
HRclean = pox.getHeartRate();
SpO2 = pox.getSpO2();
if ((millis() - tsLastReport > REPORTING_PERIOD_MS) &&
(HRclean>30 && HRclean<220 && SpO2>30 && SpO2<100)) {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_crox2h_tr);
u8g2.setCursor(0,12); u8g2.print("HR");
u8g2.setCursor(75,12); u8g2.print("Bpm");
u8g2.setCursor(0,30); u8g2.print("SpO2 ");
u8g2.setCursor(75,30); u8g2.print("%");
u8g2.setFont(u8g2_font_fub11_tf);
u8g2.setCursor(45,12); u8g2.print(HRclean);
u8g2.setCursor(45,30); u8g2.print(SpO2);
u8g2.setFont(u8g2_font_cursor_tr);
u8g2.setCursor(118,10); u8g2.print("^"); u8g2.sendBuffer();
tsLastReport = millis();
}
}
3D-модели
- Основной корпус (2 части: низ + крышка)
- Накладка на палец (2 части, автор Peter Smith)
Схемы
- Основные соединения (Fritzing:
ce_pulse-oxi_nano_v1_rlt456wOHw.fzz) - Плата-расширитель для макетки (
ce_pulse-oxi_nano_eboard_v1_Hr01HUzdkf.fzz)
Производственный процесс
- Металлическая 3D-печать: 5 передовых приложений, трансформирующих промышленность
- Почему чек-листы повышают эффективность завода: доказанные преимущества и внедрение
- COVID-19: ключевые стратегии для эффективного плана аварийного реагирования цепочки поставок
- Создание ультразвукового левитатора на Arduino: пошаговое руководство
- Health Band: умный браслет для мониторинга пожилых людей на Arduino Nano и DPS310
- Экспертное руководство по выбору проволочных настилов для надежных паллетных стеллажей
- 5 мощных кейсов использования 3D-печати
- Премиальные решения литья в песок для промышленных применений
- Электрические водяные насосы для дома — надежные, эффективные, простые в установке
- Топ ЧПУ-эрозионных станков для точной обработки