산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

코로나19 긴급용 휴대용 펄스 옥시미터 제작

부품 및 소모품

아두이노 나노 R3 1개
맥심 인터그레이티드 MAX30100 펄스 옥시미터 센서 1개
SSD1306 128x32 I2C OLED 디스플레이 1개
프로토타입 브레드보드 1개
피터 스미스 제작 손가락 클립 1개

필수 도구 및 기계

프로젝트 소개

이 간단한 프로젝트는 이번 긴급 상황에서 사람들과 기관을 돕고자 합니다. 표준 상황에서는 병원의 기초인 필수 장치들의 구하기 어려움과 개인 보호 장비 부족이 큰 문제입니다.

빠른 복제와 확산을 위한 오픈소스 기반

이 첫 릴리스의 "베이스 팩"은 기능적인 장치 제작에 필요한 모든 파트를 포함합니다:

1 - 하드웨어

필요한 모든 부품 간단 리스트, 일반적이고 저렴한 하드웨어지만 엄청난 잠재력: 아두이노 나노 (차세대 마이크로 등), MAX30100 펄스 옥시미터 센서, OLED 화면 128x32, "비상 보드".

2 - 3D 프린트 가능한 인클로저

하드웨어와 연결부를 보호하는 심플한 3D 프린트 케이스.

3 - 3D 프린트 가능한 손가락 클립

이미 공개된 오픈소스 "손가락 센서 인클로저"가 프로젝트 공유의 빠른 길입니다. 씽기버스 저장소에서 찾으세요. MAX30100 보드용 "펄스 옥시미터 클립"으로 Peter_Smith가 설계.

4 - 심플 비상 보드

모든 부품을 전기적으로 연결하고 지지하기 위한 심플 "베이스보드"를 프로토타입 회로 기판으로 제작 (다음 단계는 프린트 회로 기판). 이렇게 하면 아두이노 보드, 센서, OLED 화면 연결이 빠릅니다.

5 - 코드

이 예비 릴리스에서는 심박수와 산소포화도를 실시간 모니터링하며 명확하게 볼 수 있는 기본 구성을 만들었습니다. 기본 설정과 파라미터는 일반용으로 설정됐으며 특정 상황에 따라 간단한 변경이 필요할 수 있습니다.

6 - 지침

간단한 도면, 단계별 조립 및 디버깅 지침, 기본 정보. 라이브러리 다운로드 링크와 씽기버스 저장소. 이 단계에서 더 필요한 건 없습니다.

면책 조항
이 애플리케이션, 센서, 기능 장치는 의료 목적으로 테스트되지 않았으며 개별 부품은 보정되지 않았고 인증되지 않았습니다. 다른 의료 기기와 펄스 옥시미터가 없는 긴급 상황에서만 예방적 범위와 환자 모니터링 용도로 사용하세요. 이 범위 외 사용은 전적으로 본인 책임이며, 수정이나 변경도 본인 책임입니다.
이 프로그램은 자유 소프트웨어입니다: GNU 일반 공중 라이선스 버전 3 또는 이후 버전 조건에 따라 재배포 및 수정 가능. 유용하길 바라지만 어떠한 보증도 없이 배포됩니다. 상세 내용은 GNU GPL 참조. Copyright © 2020, CEREBRUM™ srl
이 작업과 관련된 단일 파일을 다운로드하거나 어떤 콘텐츠나 지침을 사용하는 것은 이 면책 조항과 "코로나19 질병" 긴급 상황 하에 공개된 이 프로젝트의 의도를 수용하는 것을 의미합니다.

코드

CE_Pulse-Oxi_dev2.4.ino

아두이노 나노 vR3 기본 코드
MAX30100과 OLED 디스플레이용 I2C


/* 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.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with this program.
 * If not, see .
 * Copyright 2020, CEREBRUM srl
 * 
 * More details by CEREBRUM Srl
 * www.cerebrum.it
 * ITALY
 * 
 * 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.
 * Please use this simple device for preventive scope and to monitorate patients only under
 * emergency situation when no other medical deviced and Pulse-oximeters are available.
 * 
 * CEREBRUM-oximeter dev. 2.4 - version 1.1 // April, 6 2020
 * 
 * Arduino NANO - 3.3V | I2C A4 (SDA), A5 (SCL)
 * Arduino NANO Every - 3.3V | I2C A4 (SDA), A5 (SCL)
 * Arduino MICRO - 3.3V | I2C 2 (SDA), 3 (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("Initializing...");
    u8g2.sendBuffer();
    delay(4000);
    initialized = true;
    u8g2.clearBuffer();
    u8g2.setFont(u8g2_font_crox2hb_tr);
    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();
  }
}

커스텀 파트 및 인클로저

회로도

제조공정

  1. 금속 3D 프린팅: 산업을 변혁하는 5가지 첨단 적용 사례
  2. 체크리스트가 공장 효율을 높이는 이유: 검증된 이점과 실전 적용법
  3. 코로나19: 효과적인 비상 공급망 대응 계획 수립 핵심 전략
  4. 아두이노로 초음파 부양 장치 만들기: 단계별 가이드
  5. 헬스 밴드: 노인을 위한 신뢰할 수 있는 스마트 웨어러블 어시스턴트
  6. 믿을 수 있는 팔레트 랙킹을 위한 와이어 데크 선택 전문가 가이드
  7. 3D 프린팅 혁신적 활용 사례 5가지: 주얼리부터 인공장기까지
  8. 산업용 애플리케이션을 위한 프리미엄 샌드 캐스팅 솔루션
  9. 가정용 전기 물 펌프: 신뢰성, 효율성, 쉬운 설치
  10. 정밀 가공을 위한 최상위 CNC EDM 머신