Oxímetro de Pulso Portátil para Uso Emergencial Durante COVID-19
Componentes e materiais
| Componente | Quantidade |
|---|---|
| Arduino Nano R3 | 1 |
| Maxim Integrated MAX30100 | 1 |
| Display OLED SSD1306 128x32 i2c | 1 |
| Protoboard | 1 |
| Clipe de dedo por Peter Smith | 1 |
Ferramentas necessárias
- Impressora 3D (genérica)
- Ferro de solda (genérico)
- Fio de solda, sem chumbo
- Fio 4x0.25
Sobre o projeto
Este projeto simples quer ajudar pessoas e instituições nesta emergência. A difícil reposição de dispositivos fundamentais que em situações padrão são a base em todos os hospitais é um grande problema, assim como a escassez de dispositivos de proteção pessoal.
Open source como base para replicação e difusão rápida
O "pacote base" desta primeira versão visa produzir um dispositivo funcional com todas as partes:
1 - O Hardware
Uma lista curta com todas as peças necessárias, hardware comum e barato com enorme potencial: Arduino Nano (próximos micro e outros), sensor de pulso-oxímetro MAX30100, tela OLED 128x32, "placa de emergência".
2 - Invólucros impressos em 3D
Uma caixa simples impressa em 3D para proteger hardware e conexões.
3 - Clipe de dedo impresso em 3D
Um "invólucro de sensor de dedo" open-source e já disponível é a forma rápida de compartilhar o projeto. Encontre no repositório Thingiverse. É um "Pulse Oximeter Clip" para usar com placa MAX30100 desenhado por Peter_Smith.
4 - Placa de emergência simples
Para conectar eletricamente e suportar todas as partes, uma "baseboard" simples é construída com uma placa de circuito protótipo (próximo nível será circuito impresso). Dessa forma, conectar placa Arduino, sensor e tela OLED é rápido.
5 - O Código
Nesta versão preliminar, uma configuração base é construída para ter visão clara da frequência cardíaca e da oximetria, com monitoramento em tempo real. A configuração base e os parâmetros foram definidos para uso geral, algumas mudanças simples podem ser necessárias para situações específicas.
6 - As Instruções
Desenhos simples, instruções passo a passo e informações base para montagem e debug. Links para download de bibliotecas e repositório Thingiverse. Nada mais é necessário nesta fase.
Por favor, considere que esta aplicação, sensores e dispositivo funcional NÃO são testados para fins médicos e as peças individuais não são calibradas e não são certificadas. Use este dispositivo simples para fins preventivos e para monitorar pacientes apenas em situações de emergência quando nenhum outro dispositivo médico e oxímetros de pulso estiverem disponíveis. Todo uso fora deste escopo será por sua própria conta e risco, toda modificação ou alteração será por sua própria responsabilidade.
Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU como publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior. Este programa é distribuído na esperança de que seja útil, mas SEM NENHUMA GARANTIA; sem nem mesmo a garantia implícita de COMERCIABILIDADE ou ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO. Veja a Licença Pública Geral GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Se não, veja gnu.org/licenses. Copyright © 2020, CEREBRUM™ srl
Baixar pelo menos um único arquivo ou usar qualquer conteúdo ou instrução referente a este trabalho significa aceitar o aviso legal e aceitar a intenção deste projeto, lançado sob situação de emergência de "doença Covid-19".
Código
CE_Pulse-Oxi_dev2.4.ino
/* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
* Copyright 2020, CEREBRUM srl
* Please consider that this application, sensors and functional device are NOT tested for
* medical purpose and the single parts aren't calibrated and aren't certified.
* 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 | SCA/SCL)
* OLED SSD1306 128x32 (+3.3v | GND | SCA/SCL)
*/
#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;
uint32_t last_beat = 0;
bool initialized = false;
int HRclean;
int 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.setCursor(15, 12);
u8g2.setFont(u8g2_font_crox2hb_tr);
u8g2.print("CEREBRUM.it");
u8g2.setFont(u8g2_font_crox2h_tr);
u8g2.setCursor(30, 29);
u8g2.print("Inicializando...");
u8g2.sendBuffer();
delay(4000);
initialized = true;
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_crox2hb_tr);
if (!pox.begin()) {
u8g2.setCursor(40, 12);
u8g2.print("FALHOU");
u8g2.setCursor(15, 29);
u8g2.print("Verifique Sensor!");
u8g2.sendBuffer();
for(;;);
} else {
u8g2.setCursor(20, 12);
u8g2.print("INICIALIZADO");
u8g2.setCursor(0, 29);
u8g2.print("Use o 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("FC");
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();
}
}
Peças personalizadas e invólucros
- Invólucro principal para partes eletrônicas e display OLED
- Tampa superior do invólucro
- Clipe de dedo de 2 partes desenvolvido por Peter Smith
Esquemáticos
- Conexões principais
- Placa simples para conectar display, sensor e núcleo Arduino
Processo de manufatura
- Impressão 3D de Metal: 5 Aplicações de Ponta Transformando a Indústria
- Por que Checklists Impulsionam a Eficiência da Planta: Benefícios Comprovados e Implementação Prática
- COVID-19: Estratégias-Chave para um Plano Eficaz de Resposta Emergencial da Cadeia de Suprimentos
- Construa um Dispositivo de Levitação Ultrassônica com Arduino – Guia Passo a Passo
- Health Band: Pulseira Inteligente para Monitoramento de Idosos com Arduino Nano e DPS310
- Guia Especializado para Seleção de Decks de Arame para Porta-Paletes Confiáveis
- 5 Casos de Uso Poderosos para Impressão 3D
- Soluções Premium de Fundição em Areia para Aplicações Industriais
- Bomba de Água Elétrica para Uso Residencial – Confiável, Eficiente e Fácil de Instalar
- Top Máquinas CNC EDM para Usinagem de Precisão