Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Oksimeter Pulsa Sumber Terbuka untuk COVID-19

Komponen dan persediaan

Arduino Nano R3
× 1
Maxim Integrated MAX30102 Sensor Denyut Jantung dan Denyut Jantung
× 1
Display DRobot Gravity I2C OLED-2864
× 1

Alat dan mesin yang diperlukan

Printer 3D (generik)
Besi solder (generik)

Aplikasi dan layanan online

Arduino IDE
Autodesk Fusion 360

Tentang proyek ini

Tantangan COVID-19

COVID-19 adalah penyakit yang disebabkan oleh virus SARS-CoV-2 yang terutama menyerang sistem pernapasan seseorang. Beberapa gejala yang lebih ringan dapat mencakup demam, nyeri, dan kedinginan, tetapi juga dapat menyebabkan kondisi yang lebih serius seperti pneumonia. Seseorang yang menderita radang paru-paru atau bahkan sedikit sesak napas mungkin tidak tahu kapan harus pergi ke rumah sakit, terutama karena mereka mulai kewalahan. Inilah mengapa saya membuat oksimeter pulsa open source ini, yang dapat membantu orang mendapatkan bantuan yang mereka butuhkan dan mendapatkan informasi akurat tentang kondisi mereka saat ini.

Sedikit Penafian

Perangkat/proyek ini tidak untuk digunakan sebagai alat diagnostik medis yang akurat!

Elektronik

MAX30102

128x64 Piksel OLED

Arduino Nano

Membangun Perangkat Langkah-demi-Langkah

Berikut adalah panduan langkah demi langkah tentang cara membangun proyek ini.

1. Cetak dan Bersihkan Bagian

Mulailah dengan mengunduh setiap bagian dari bagian lampiran pada proyek ini dan memuatnya ke dalam alat pengiris pilihan Anda. Saya menggunakan pengisi sekitar 70-80% dan penyangga sedang, semuanya dengan PLA. Setelah selesai mencetak, saya melepas penyangga dan melakukan pengamplasan ringan untuk memastikan semuanya cocok satu sama lain.

2. Solder Elektronik

Seluruh perangkat dirancang di sekitar Arduino Nano yang dipasang pada papan perfboard 44mm kali 30mm. Pertama, kabel disolder ke pin VIN, GND, SDA, dan SCL dari sensor, lalu disambungkan di bawah bagian alas ke Arduino Nano.

Selanjutnya, konektor untuk OLED dipasang ke Nano dan kemudian berjalan ke layar itu sendiri.

Dan terakhir, seluruh rakitan elektronik dimasukkan ke dalam rumahan dan diamankan dengan sepasang sekrup 3mm.

3. Merakit Perangkat

Setelah elektronik dimasukkan, cukup pasang layar OLED ke bagian atas dan kencangkan ke seluruh sasis dengan beberapa sekrup 3mm. Anda dapat menguji gerakannya dengan mengartikulasikan tutupnya ke atas dan ke bawah dengan lembut.

4. Mengunggah Sketsa

Sketsa yang disertakan melakukan beberapa tindakan untuk menampilkan detak jantung dan saturasi oksigen pengguna saat ini. Untuk mengunggahnya, cukup instal pustaka yang diperlukan dan pilih Arduino Nano dari daftar papan di menu Alat dan klik Unggah.

Adapun sketsa itu sendiri, pertama-tama menginisialisasi OLED dan MAX30102, sambil melaporkan kesalahan yang mungkin muncul. Selanjutnya, ia membaca dalam 100 nilai untuk mengkalibrasi sensor dan mulai menampilkannya. Perangkat kemudian memasuki loop di mana ia membaca dalam 25 nilai baru dan menghitung rata-rata bergerak dengan mereka. Terakhir, ia memeriksa apakah nilainya valid dan mencetaknya ke layar jika benar.

5. Menggunakannya

Untuk menggunakan oksimeter denyut, letakkan ujung jari Anda di atas sensor dan tutup penutup atas dengan lembut. Kemudian colokkan sumber listrik dan tunggu sampai Anda melihat data ditampilkan.

Kode

  • Kode Pulse Oksimeter
Kode Pulse OksimeterC/C++
/* Koneksi Perangkat Keras (Breakoutboard ke Arduino):-5V =5V (diizinkan 3,3V) -GND =GND -SDA =A4 (atau SDA) -SCL =A5 (atau SCL) -INT =Tidak terhubung MAX30105 Breakout dapat menangani logika 5V atau 3.3V I2C. Kami merekomendasikan memberi daya pada papan dengan 5V tetapi juga akan berjalan pada 3.3V.*/#include #include "MAX30105.h"#include "spo2_algorithm.h"#include "SSD1306Ascii.h"#include "SSD1306AsciiWire .h"MAX30105 particleSensor;SSD1306AsciiWire oled;#define MAX_BRIGHTNESS 255#jika ditentukan(__AVR_ATmega328P__) || didefinisikan(__AVR_ATmega168__)//Arduino Uno tidak memiliki cukup SRAM untuk menyimpan 50 sampel data yang dipimpin IR dan data yang dipimpin merah dalam format 32-bit//Untuk mengatasi masalah ini, MSB 16-bit dari data sampel akan dipotong. Sampel menjadi data 16-bit.uint16_t irBuffer[50]; //sensor LED inframerah datauint16_t redBuffer[50]; //data sensor LED merah#elseuint32_t irBuffer[50]; //sensor LED inframerah datauint32_t redBuffer[50]; //data sensor LED merah#endifint32_t spo2; //nilai SPO2int8_t validSPO2; //indikator untuk menunjukkan apakah perhitungan SPO2 validint32_t heartRate; //nilai detak jantungint8_t validHeartRate; //indikator untuk menunjukkan apakah perhitungan detak jantung validvoid setup(){ Serial.begin(115200); // menginisialisasi komunikasi serial pada 115200 bit per detik:oled.begin(&Adafruit128x64, 0x3C); oled.setFont(Arial14); // Inisialisasi sensor if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Gunakan port I2C default, kecepatan 400kHz { Serial.println(F("MAX30105 was not found. Please check wiring/power.")); sementara (1); } particleSensor.setup(55, 4, 2, 200, 411, 4096); //Konfigurasikan sensor dengan pengaturan ini}void loop(){ //baca 50 sampel pertama, dan tentukan rentang sinyal untuk (byte i =0; i <50; i++) { while (particleSensor.available() ==false ) //apakah kita memiliki data baru? partikelSensor.check(); //Periksa sensor untuk data baru redBuffer[i] =particleSensor.getRed(); irBuffer[i] =particleSensor.getIR(); partikelSensor.nextSample(); //Kita sudah selesai dengan sampel ini jadi pindah ke sampel berikutnya Serial.print(F("red=")); Serial.print(redBuffer[i], DEC); Serial.print(F(", ir=")); Serial.println(irBuffer[i], DEC); } //menghitung detak jantung dan SpO2 setelah 50 sampel pertama (4 detik pertama sampel) maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate); // Terus menerus mengambil sampel dari MAX30102. Denyut jantung dan SpO2 dihitung setiap 1 detik sementara (1) { //membuang 25 set sampel pertama ke dalam memori dan menggeser 25 set sampel terakhir ke atas untuk (byte i =25; i <50; i++) { redBuffer[i - 25] =redBuffer[i]; irBuffer[i - 25] =irBuffer[i]; } //ambil 25 set sampel sebelum menghitung detak jantung. for (byte i =25; i <50; i++) { while (particleSensor.available() ==false) //apakah kita memiliki data baru? partikelSensor.check(); //Periksa sensor untuk data baru redBuffer[i] =particleSensor.getRed(); irBuffer[i] =particleSensor.getIR(); partikelSensor.nextSample(); //Kita sudah selesai dengan sampel ini jadi pindah ke sampel berikutnya Serial.print(F("red=")); Serial.print(redBuffer[i], DEC); Serial.print(F(", ir=")); Serial.print(irBuffer[i], DEC); Serial.print(F(", HR=")); Serial.print(denyut jantung, DES); Serial.print(F(", HRvalid=")); Serial.print(validHeartRate, DES); Serial.print(F(", SPO2=")); Serial.print(spo2, DEC); Serial.print(F(", SPO2Valid=")); Serial.println(validSPO2, DEC); } //Setelah mengumpulkan 25 sampel baru, hitung ulang HR dan SP02 maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate); printKeLayar(); }}void printToScreen() { oled.clear(); oled.setCursor(0,0); if(validSPO2 &&validHeartRate) { oled.print(F("HR:")); oled.println(denyut jantung, DES); oled.print(F("SPO2:")); oled.println(spo2, DEC); } else { oled.print(F("Tidak valid")); }}

Suku cadang dan penutup khusus

Skema


Proses manufaktur

  1. Log proyek untuk FirePick Delta, Open Source MicroFactory
  2. Arduino Digital Dice
  3. Iron Man
  4. Temukan Saya
  5. Arduino 3D-Printed Robotic Arm
  6. PULSE OXIMETER untuk penggunaan DARURAT selama PENYAKIT CORONAVIRUS
  7. Kontrol Humidifier Arduino
  8. NeoMatrix Arduino Pong
  9. Health Band - Asisten Cerdas untuk Lansia
  10. Perlunya Open Source di Edge (eBook)