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

Cara Membuat Pengukuran Oksigen Darah &Suhu Tubuh

Komponen dan persediaan

Arduino UNO
× 1
LCD I2C 20 x 4
× 1
Sensor Detak Jantung Max30102
× 1
Dua Led
× 1
Dua 220Ω resistensi
× 1
GY-906-BCC Modul Sensor Suhu Inframerah Non-Kontak
× 1
Breadboard 830
× 1

Tentang proyek ini

Proyek ini dapat mendeteksi nilai oksigen darah dan suhu tubuh secara bersamaan, nilai apa pun yang lebih rendah dari nilai yang ditetapkan akan menyala merah.

Yang penting adalah modul oksigen darah harus secara alami ditempatkan jari Anda di atasnya untuk deteksi, dan tidak perlu terlalu banyak tekanan, jika tidak nilainya akan salah.

Selamat Tahun Baru dan bersenang-senanglah.

Kode di GitHub (skema dan sketsa):https://github.com/DKARDU/bloodoxygen

Komponen

Bagian berikut digunakan dalam proyek ini:

Arduino UNO, https://amzn.to/3ihYFBl

LCD I2C 20 x 4, https://amzn.to/3gTMZnW

Sensor Detak Jantung Max30102

Dua Led, https://amzn.to/3g1v5za

Dua resistensi 220Ω, https://amzn.to/2OSGlBW

Modul Sensor Suhu Inframerah Non-Kontak GY-906-BCC

❤Berlangganan Gratis https://bit.ly/2C6HdAg

Terima kasih telah menonton, Tetap di rumah dan Tetap aman... Semoga harimu menyenangkan!

#Arduinoproject #ArduinoBloodOxygen #Howto #COVID19 #BloodOxygen #ArduinoBodyTemperature #BodyTemperature

Kode

  • Blood_Oximeter.ino
Blood_Oximeter.inoArduino
#include #include #include #include #include "MAX30105.h" //sparkfun MAX3010X libraryMAX30105 particleSensor;LiquidCrystal_I2C lcd 20,4);//#define MAX30105 //jika Anda memiliki papan breakout MAX30105 Sparkfun, coba #define MAX30105 Adafruit_MLX90614 mlx =Adafruit_MLX90614(); double avered =0; jalan ganda =0;jumlah ganda =0;jumlah ganda =0;int i =0;int Bilangan =100;//hitung SpO2 dengan interval pengambilan sampel ini Suhu;int temp;float ESpO2;//nilai awal estimasi SpO2float ESpO2_ROM; FSPO2 ganda =0,7; //faktor filter untuk estimasi frekuensi ganda SpO2 =0,95; //filter lolos rendah untuk nilai IR/LED merah untuk menghilangkan komponen AC#menentukan TIMETOBOOT 3000 // menunggu waktu ini (msec) untuk mengeluarkan SpO2#menentukan SKALA 88.0 //menyesuaikan untuk menampilkan detak jantung dan SpO2 dalam skala yang sama#menentukan SAMPLING 5 //jika ingin melihat detak jantung lebih tepat , set SAMPLING ke 1#define FINGER_ON 30000 // jika sinyal merah lebih rendah dari ini , itu menunjukkan jari Anda tidak berada di sensor#define USEFIFO#define Greenled 8#define Redled 9void setup(){ Serial.begin(115200); lcd.init(); lcd.lampu latar(); lcd.setCursor(3,1); lcd.print("Berjalan......"); penundaan(3000); lcd.clear(); ESpO2 =readEEPROM(); Suhu =EEPROM.read(6); pinMode (Hijau, OUTPUT); pinMode(Merah, OUTPUT); digitalWrite(Hijau,RENDAH); digitalWrite(Merah,RENDAH); // Inisialisasi sensor saat (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Gunakan port I2C default, kecepatan 400kHz { Serial.println("MAX30102 tidak ditemukan. Silakan periksa jumper kabel/daya/solder di MH-ET LIVE MAX30102 papan. "); //sementara (1); } //Setup untuk merasakan gigi gergaji yang terlihat bagus pada plotter byte ledBrightness =0x7F; //Opsi:0=Mati hingga 255=50mA byte sampleRata-rata =4; //Opsi:1, 2, 4, 8, 16, 32 byte ledMode =2; //Opsi:1 =Merah saja, 2 =Merah + IR, 3 =Merah + IR + Hijau //Opsi:1 =IR saja, 2 =Merah + IR pada papan MH-ET LIVE MAX30102 int sampleRate =200; //Opsi:50, 100, 200, 400, 800, 1000, 1600, 3200 int pulseWidth =411; //Opsi:69, 118, 215, 411 int adcRange =16384; //Options:2048, 4096, 8192, 16384 // Mengatur parameter yang diinginkan particleSensor.setup(ledBrightness, sampleAverage, ledMode, sampleRate, pulseWidth, adcRange); //Konfigurasikan sensor dengan pengaturan ini particleSensor.enableDIETEMPRDY(); mlx.begin();}void loop(){ uint32_t ir, merah , hijau; fred ganda, cemara; ganda SpO2 =0; //mentah SpO2 sebelum lolos rendah disaring #ifdef USEFIFO particleSensor.check(); //Periksa sensor, baca hingga 3 sampel while (particleSensor.available()) {//apakah kita memiliki data baru#ifdef MAX30105 red =particleSensor.getFIFORed(); //Sparkfun's MAX30105 ir =particleSensor.getFIFOIR(); //Sparkfun's MAX30105#else red =particleSensor.getFIFOIR(); //mengapa getFOFOIR mengeluarkan data Merah dengan MAX30102 pada papan breakout MH-ET LIVE ir =particleSensor.getFIFORed(); //mengapa mendapatkan data IR keluaran FIFOR dengan MAX30102 pada papan breakout MH-ET LIVE#endif i++; fred =(ganda)merah; cemara =(ganda)ir; avered =avered * frate + (double)red * (1.0 - frate);//rata-rata level merah oleh low pass filter aveir =aveir * frate + (double)ir * (1.0 - frate); //tingkat IR rata-rata menurut sumredrms filter lolos rendah +=(fred - avered) * (fred - avered); //jumlah kuadrat komponen alternatif penjumlahan level merah +=(fir - aveir) * (fir - aveir);//jumlah kuadrat komponen alternatif level IR jika ((i % SAMPLING) ==0) {//slow down graph plotting speed untuk arduino Serial plotter dengan thin out if ( millis()> TIMETOBOOT) { float ir_forGraph =(2.0 * fir - aveir) / aveir * SCALE; float red_forGraph =(2.0 * fred - avered) / avered * SKALA; //translasi untuk penskalaan otomatis plotter serial jika ( ir_forGraph> 100.0) ir_forGraph =100.0; if ( ir_forGraph <80.0) ir_forGraph =80.0; if ( red_forGraph> 100.0 ) red_forGraph =100.0; if ( red_forGraph <80.0 ) red_forGraph =80.0; // Serial.print(merah); Serial.print(","); Serial.print(ir);Serial.print("."); suhu float =particleSensor.readTemperatureF(); if (ir  FINGER_ON){ Suhu =mlx.readObjectTempC(); lcd.setCursor(0,0); lcd.print("Oksigen % ="); lcd.setCursor(11,0); lcd.print(ESpO2); lcd.print(""); lcd.print("%"); // Suhu =Suhu+2; lcd.setCursor(0,1); lcd.print("Suhu :"); lcd.print(Suhu); lcd.print("*C"); if((ESpO2>=90) &&(Suhu <38)){ digitalWrite(Merah,RENDAH); digitalWrite (Hijau, TINGGI); } if((ESpO2 <90) || (Suhu> 37)){ digitalWrite(Lampu hijau,RENDAH); digitalWrite(Merah, TINGGI); } } } } if ((i % Num) ==0) { double R =(sqrt(sumredrms) / avered) / (sqrt(sumirrms) / aveir); // Serial.println(R); SpO2 =-23,3 * (R - 0,4) + 100; //http://ww1.microchip.com/downloads/jp/AppNotes/00001525B_JP.pdf ESpO2 =FSpO2 * ESpO2 + (1.0 - FSpO2) * SpO2;//filter lolos rendah // Serial.print(SpO2);Serial .print(",");Serial.println(ESpO2); sumredrms =0,0; sumirrms =0,0; saya =0; merusak; } particleSensor.nextSample(); //Kita sudah selesai dengan sampel ini jadi pindah ke sampel berikutnya // Serial.println(SpO2); }#endif}kosongkan writeEEPROM(float *data){ byte ByteArray[4]; memcpy(ByteArray, data, 4); for(int x =0; x <4; x++) { EEPROM.write(x, ByteArray[x]); } }float readEEPROM(){ float ESpO2 =85.0; byte ByteArray[4]; for(int x =0; x <4; x++) { ByteArray[x] =EEPROM.read(x); } memcpy(&ESpO2, ByteArray, 4); kembalikan ESpO2;}

Skema


Proses manufaktur

  1. IoT Dasar – RaspberryPI HDC2010 cara
  2. Pencatat Suhu Raspberry Pi
  3. Sensor Suhu Python dan Raspberry Pi
  4. Sensor Suhu dan Cahaya Raspberry Pi
  5. Sensor Suhu Raspberry Pi
  6. Cara Memeriksa dan Mengkalibrasi Sensor Kelembaban
  7. Cara Membuat Platform Robot Arduino+Raspberry Pi
  8. Cara Membuat Fiberglass
  9. Cara Membuat Animasi Cutaway di Solidworks
  10. Sensor suhu bantalan | detektor