Oksimetri Nadi Portabel untuk Penggunaan Darurat Selama COVID-19
Komponen dan perlengkapan
Arduino Nano R3
×
1
Maxim Integrated MAX30100
×
1
Layar Oled i2c SSD1306 128x32
atau serupa, periksa dimensi
×
1
Breadboard prototipe
×
1
Klips jari oleh Peter Smith
×
1
Alat dan mesin yang diperlukan
Printer 3D (umum)
Pakuin solder (umum)
Kawat Solder, Bebas Timbal
Kabel 4x0.25
Tentang proyek ini
Proyek sederhana ini ingin membantu orang dan institusi dalam Darurat ini. Kesulitan ketersediaan perangkat dasar yang dalam situasi standar adalah dasar di semua Rumah Sakit adalah masalah besar, serta kekurangan alat pelindung diri..
Open source sebagai dasar untuk replikasi dan penyebaran yang cepat
"base pack" dari rilis pertama ini dimaksudkan untuk menghasilkan perangkat fungsional dengan semua bagian:
1 - Perangkat keras
Daftar singkat dengan semua bagian yang diperlukan, perangkat keras umum dan murah dengan potensi besar: Arduino Nano (mikro berikut dan lain-lain), sensor oksimetri nadi MAX30100, layar OLED 128x32, "board darurat".
2 - Pelapis yang dapat dicetak 3D
Pelapis 3D sederhana untuk melindungi perangkat keras dan koneksi.
3 - Klips jari yang dapat dicetak 3D
"finger sensor enclosure" open-source yang sudah tersedia adalah cara cepat untuk berbagi proyek. Temukan di repositori thingiverse. Ini adalah "Pulse Oximeter Clip" untuk digunakan dengan Board MAX30100 yang dirancang oleh Peter_Smith.
4 - Board darurat sederhana
Untuk menghubungkan secara listrik dan mendukung semua bagian, "baseboard" sederhana dibuat dengan papan rangkaian prototipe (tingkat berikut akan menjadi papan rangkaian cetak). Dengan cara ini menghubungkan board Arduino, sensor dan layar Oled adalah cepat.
5 - Kode
Dalam rilis awal ini konfigurasi dasar dibuat untuk tampilan yang jelas dari detak jantung dan oksimetri, dengan pemantauan waktu nyata. Konfigurasi dasar dan parameter disetel untuk penggunaan umum, beberapa perubahan sederhana mungkin diperlukan untuk situasi spesifik.
6 - Instruksi
Gambar sederhana, instruksi langkah demi langkah dan informasi dasar untuk perakitan dan debug. Tautan untuk unduhan library dan repositori thingiverse. Tidak ada yang lain yang diperlukan dalam fase ini.
DISCLAIMERHarap dipertimbangkan bahwa aplikasi, sensor dan perangkat fungsional ini TIDAK diuji untuk tujuan medis dan bagian-bagian tunggal tidak dikalibrasi dan tidak bersertifikat. Harap gunakan perangkat sederhana ini untuk tujuan pencegahan dan untuk memantau pasien hanya dalam situasi darurat ketika tidak ada alat medis dan oksimetri nadi lainnya yang tersedia. Setiap penggunaan di luar cakupan ini akan menjadi tanggung jawab Anda sendiri, setiap modifikasi atau perubahan akan menjadi tanggung jawab Anda sendiri.
Mengunduh setidaknya satu file atau menggunakan konten atau instruksi yang dapat diacu ke karya ini berarti menerima disclaimer dan menerima niatan proyek ini, dirilis dalam situasi Darurat "Penyakit Covid-19".
Kode dasar untuk Arduino Nano vR3 i2c untuk MAX30100 dan Layar Oled
/* 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 <https://www.gnu.org/licenses/>. * 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 <Wire.h> #include "MAX30100_PulseOximeter.h" #include "MAX30100.h" #include <U8g2lib.h> #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 (not 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) and (HRclean>30 and HRclean<220 and SpO2>30 and 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(); } }
Bagian khusus dan pelapis
Ini adalah pelapis utama untuk bagian elektronik dan layar oledIni adalah tutup atas pelapis untuk bagian elektronik dan layar oledIni adalah 2 bagian klips jari yang dikembangkan oleh peter smith, lihat kontributor tim
Skematik
koneksi utamace_pulse-oxi_nano_v1_rlt456wOHw.fzzPapan sederhana untuk menghubungkan layar, sensor dan inti arduinoce_pulse-oxi_nano_eboard_v1_Hr01HUzdkf.fzz