Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Como fazer a medição do oxigênio no sangue e da temperatura corporal

Componentes e suprimentos

Arduino UNO
× 1
20 x 4 I2C LCD
× 1
Max30102 Sensor de frequência cardíaca
× 1
Dois Leds
× 1
Duas resistências de 220Ω
× 1
Módulo sensor de temperatura infravermelho sem contato GY-906-BCC
× 1
Breadboard 830
× 1

Sobre este projeto






Este projeto pode detectar o valor de oxigênio no sangue e temperatura corporal ao mesmo tempo, qualquer valor inferior ao valor definido acenderá em vermelho.

O importante é que o módulo de oxigênio do sangue precisa ser colocado naturalmente com o dedo nele para detecção, e não é necessário colocar muita pressão, caso contrário, o valor estará errado.

Feliz Ano Novo e divirta-se com ele.



► Código no GitHub (esquema e esboço):https://github.com/DKARDU/bloodoxygen



► Componentes

As seguintes peças foram usadas neste projeto:

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

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

Max30102 Sensor de frequência cardíaca

Dois Leds, https://amzn.to/3g1v5za

Duas resistências de 220Ω, https://amzn.to/2OSGlBW

Módulo sensor infravermelho de temperatura sem contato GY-906-BCC



❤Subscribe is free https://bit.ly/2C6HdAg



Obrigado por assistir, Fique em casa e esteja seguro ... Tenha um ótimo dia!

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




Código

  • Blood_Oximeter.ino
Blood_Oximeter.ino Arduino
 #include  #include  #include  #include  #include "MAX30105.h" // sparkfun MAX3010X libraryMAX30105 particleSensor; LiquidCrystal_I27 20,4); // # define MAX30105 // se você tem o painel de breakout MAX30105 do Sparkfun, tente #define MAX30105 Adafruit_MLX90614 mlx =Adafruit_MLX90614 (); double avered =0; double aveir =0; double sumirrms =0; double sumredrms =0; int i =0; int Num =100; // calcular SpO2 por este intervalo de amostragemint Temperatura; int temp; float ESpO2; // valor inicial do SpO2float ESpO2_ROM estimado; FSpO2 duplo =0,7; // fator de filtro para SpO2double frate estimado =0,95; // filtro passa-baixo para IR / valor do LED vermelho para eliminar o componente AC # define TIMETOBOOT 3000 // aguarde este tempo (mseg) para a saída de SpO2 # define SCALE 88.0 // ajusta para exibir batimentos cardíacos e SpO2 na mesma escala # define AMOSTRAGEM 5 // se você quiser ver os batimentos cardíacos com mais precisão, defina AMOSTRAGEM para 1 # define FINGER_ON 30000 // se o sinal vermelho for menor do que isso, indica que seu dedo não está no sensor # define USEFIFO # define Greenled 8 # define Configuração 9void redled () {Serial.begin (115200); lcd.init (); lcd.backlight (); lcd.setCursor (3,1); lcd.print ("Executando ......"); atraso (3000); lcd.clear (); ESpO2 =readEEPROM (); Temperatura =EEPROM.read (6); pinMode (Greenled, OUTPUT); pinMode (Redled, OUTPUT); digitalWrite (Greenled, LOW); digitalWrite (Redled, LOW); // Inicialize o sensor enquanto (! ParticleSensor.begin (Wire, I2C_SPEED_FAST)) // Use a porta I2C padrão, velocidade de 400 kHz {Serial.println ("MAX30102 não foi encontrado. Verifique a fiação / alimentação / jumper de solda em MH-ET LIVE MAX30102 borda. "); // enquanto (1); } // Configuração para detectar um dente de serra de boa aparência na plotadora byte ledBrightness =0x7F; // Opções:0 =Desligado a 255 =50mA byte sampleAeciation =4; // Opções:1, 2, 4, 8, 16, 32 byte ledMode =2; // Opções:1 =Apenas vermelho, 2 =Vermelho + IR, 3 =Vermelho + IR + Verde // Opções:1 =Apenas IR, 2 =Vermelho + IR na placa MH-ET LIVE MAX30102 int sampleRate =200; // Opções:50, 100, 200, 400, 800, 1000, 1600, 3200 int pulseWidth =411; // Opções:69, 118, 215, 411 int adcRange =16384; // Opções:2048, 4096, 8192, 16384 // Configure os parâmetros desejados particleSensor.setup (ledBrightness, sampleA hundred, ledMode, sampleRate, pulseWidth, adcRange); // Configure o sensor com essas configurações particleSensor.enableDIETEMPRDY (); mlx.begin ();} void loop () {uint32_t ir, vermelho, verde; duplo fred, abeto; SpO2 duplo =0; // SpO2 bruto antes do filtro passa-baixo #ifdef USEFIFO particleSensor.check (); // Verifique o sensor, leia até 3 amostras enquanto (particleSensor.available ()) {// temos novos dados # ifdef MAX30105 red =particleSensor.getFIFORed (); // MAX30105 do Sparkfun ir =particleSensor.getFIFOIR (); // MAX30105 do Sparkfun # else red =particleSensor.getFIFOIR (); // por que getFOFOIR output Red data por MAX30102 na placa de breakout MH-ET LIVE ir =particleSensor.getFIFORed (); // por que getFIFORed produz dados IR por MAX30102 na placa de breakout MH-ET LIVE # endif i ++; fred =(duplo) vermelho; fir =(duplo) ir; avered =avered * frate + (double) red * (1.0 - frate); // nível médio de vermelho pelo filtro passa-baixo aveir =aveir * frate + (double) ir * (1.0 - frate); // nível médio de IR pelo filtro passa-baixo sumredrms + =(fred - avered) * (fred - avered); // soma quadrada do componente alternativo do nível vermelho sumirrms + =(fir - aveir) * (fir - aveir); // soma quadrada do componente alternativo do nível IR if ((i% AMOSTRAGEM) ==0) {// lento redução da velocidade de plotagem do gráfico para arduino Serial plotter por thin out if (millis ()> TIMETOBOOT) {float ir_forGraph =(2.0 * fir - aveir) / aveir * SCALE; float red_forGraph =(2.0 * fred - avered) / avered * SCALE; // transe para o escalonamento automático do plotter serial if (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 (vermelho); Serial.print (","); Serial.print (ir); Serial.print ("."); temperatura flutuante =particleSensor.readTemperatureF (); if (ir  FINGER_ON) {Temperature =mlx.readObjectTempC (); lcd.setCursor (0,0); lcd.print ("% de oxigênio ="); lcd.setCursor (11,0); lcd.print (ESpO2); lcd.print (""); lcd.print ("%"); // Temperatura =Temperatura + 2; lcd.setCursor (0,1); lcd.print ("Temperatura:"); lcd.print (temperatura); lcd.print ("* C"); if ((ESpO2> =90) &&(Temperatura <38)) {digitalWrite (Redled, LOW); digitalWrite (Greenled, HIGH); } if ((ESpO2 <90) || (Temperatura> 37)) {digitalWrite (Greenled, BAIXO); digitalWrite (Redled, HIGH); }}}} 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; // filtro passa-baixo // Serial.print (SpO2); Serial .print (","); Serial.println (ESpO2); sumredrms =0,0; sumirrms =0,0; i =0; pausa; } particleSensor.nextSample (); // Terminamos com este exemplo, então vamos para o próximo exemplo // Serial.println (SpO2); } #endif} void writeEEPROM (float * data) {byte ByteArray [4]; memcpy (ByteArray, dados, 4); para (int x =0; x <4; x ++) {EEPROM.write (x, ByteArray [x]); }} float readEEPROM () {float ESpO2 =85,0; byte ByteArray [4]; para (int x =0; x <4; x ++) {ByteArray [x] =EEPROM.read (x); } memcpy (&ESpO2, ByteArray, 4); retornar ESpO2;} 

Esquemas


Processo de manufatura

  1. IoT básica - RaspberryPI HDC2010 como
  2. Registrador de temperatura Raspberry Pi
  3. Sensor de temperatura Python e Raspberry Pi
  4. Temperatura do Raspberry Pi e sensor de luz
  5. Sensor de temperatura Raspberry Pi
  6. Como verificar e calibrar um sensor de umidade
  7. Como fazer uma plataforma de robô Arduino + Raspberry Pi
  8. Como fazer fibra de vidro
  9. Como fazer uma animação de corte no Solidworks
  10. Sensor de temperatura do rolamento | detector