इस पूरे समय के दौरान, हमने बड़ी संख्या में दिखाया है बिजली के उपकरण के साथ संगत Arduino या संगत जैसे बोर्ड, साथ ही कई अन्य निर्माता या DIY नौकरियों के लिए भी। अब हम आपको मॉड्यूल से परिचित कराएंगे MAX30102, जिसमें नाड़ी और रक्त ऑक्सीजन को मापने के लिए एक सेंसर शामिल है।
इस तरह, आप स्व-निर्मित गतिविधि कंगन या हार्डवेयर जैसे पहनने योग्य सामान भी बना सकते हैं स्वास्थ्य स्थिति की निगरानी करें किसी व्यक्ति का, इस उपकरण में हृदय गति मॉनिटर और ऑक्सीमीटर के एकीकरण के कारण उक्त व्यक्ति का बायोमेट्रिक डेटा या टेलीमेट्री प्रदान करना...
हृदय गति मॉनिटर क्या है? यह कैसे काम करता है?
Un पल्स सेंसर या हृदय गति मॉनिटर यह एक इलेक्ट्रॉनिक उपकरण है जिसका उपयोग वास्तविक समय में किसी व्यक्ति की हृदय गति को मापने के लिए किया जाता है। इसका उपयोग मुख्य रूप से खेल क्षेत्र में प्रशिक्षण के दौरान या दैनिक आधार पर प्रदर्शन और प्रयास की निगरानी के लिए किया जाता है। हृदय गति मॉनिटर एथलीटों के बीच लोकप्रिय हैं, लेकिन वे चिकित्सा केंद्रों में हृदय गति, यानी हृदय गति या प्रति मिनट धड़कन जानने के लिए एक मौलिक उपकरण भी हैं:
- पीआर बीपीएम: हृदय गति, यानी प्रति मिनट धड़कन दिखाता है।
सभी मामलों में, सेंसर प्रत्येक दिल की धड़कन के साथ रक्त की मात्रा में भिन्नता को पकड़ते हैं. इस भिन्नता को एक विद्युत संकेत में अनुवादित किया जाता है जिसे हृदय गति प्राप्त करने के लिए संसाधित किया जाता है। कुछ हृदय गति मॉनिटरों में रीडिंग की सटीकता में सुधार के लिए प्रवर्धन और शोर रद्दीकरण सर्किट भी शामिल होते हैं।
ऑक्सीमीटर क्या है? यह कैसे काम करता है?
Un ऑक्सीमीटर एक चिकित्सा या खेल उपकरण है जिसका उपयोग रक्त में ऑक्सीजन संतृप्ति को मापने के लिए किया जाता है। यह उपकरण 0 से 100% मान के साथ रक्त ऑक्सीजन संतृप्ति डेटा प्रदान करता है। एक ही उपकरण में हृदय गति विकल्प भी शामिल होना आम बात है, जो निगरानी या रिकॉर्डिंग के लिए सभी जानकारी दर्शाता है।
जो डेटा ऑक्सीमीटर मापता है है:
- % SpO2: रक्त में ऑक्सीजन संतृप्ति के प्रतिशत को संदर्भित करता है।
ऑक्सीमीटर को एक क्लैंप की तरह इस तरह से रखा जाता है कि यह हमारी उंगली की आकृति विज्ञान के अनुकूल हो जाता है या इसे शरीर पर अन्य स्थानों पर भी रखा जा सकता है, जैसे हृदय गति मॉनिटर के मामले में, जैसे कि कलाई, जैसे कई गतिविधि कंगनों में देखा जा सकता है। ,
उनके संचालन के संबंध में, ऑक्सीमीटर अलग-अलग उत्सर्जन करते हैं प्रकाश तरंग दैर्ध्य जो त्वचा से होकर गुजरता है। इस प्रकाश पर जो कार्य करता है वह हीमोग्लोबिन है, एक रक्त अणु जो ऑक्सीजन के परिवहन के लिए जिम्मेदार है, जो ऑक्सीजन के परिवहन के स्तर के आधार पर प्रकाश की विभिन्न मात्रा को अवशोषित करता है। विस्तृत प्रक्रिया इस प्रकार है:
- प्रकाश उत्सर्जन- ऑक्सीमीटर प्रकाश की दो तरंग दैर्ध्य उत्सर्जित करता है, एक लाल और एक अवरक्त, जो डिवाइस पर रखी उंगली से होकर गुजरती है।
- प्रकाश अवशोषण: हीमोग्लोबिन, लाल रक्त कोशिकाओं में एक अणु जो ऑक्सीजन ले जाता है, इन रोशनी की विभिन्न मात्रा को अवशोषित करता है। ऑक्सीजन युक्त हीमोग्लोबिन (ऑक्सीहीमोग्लोबिन) और ऑक्सीजन मुक्त हीमोग्लोबिन (डीऑक्सीहीमोग्लोबिन) में अलग-अलग प्रकाश अवशोषण गुण होते हैं।
- प्रकाश का पता लगाना: प्रकाश उत्सर्जक के विपरीत दिशा में एक डिटेक्टर उंगली से गुजरने वाले प्रकाश को एकत्र करता है।
- ऑक्सीजन संतृप्ति की गणना- डिवाइस ऑक्सीहीमोग्लोबिन और डीऑक्सीहीमोग्लोबिन दोनों, मौजूद हीमोग्लोबिन की कुल मात्रा में ऑक्सीहीमोग्लोबिन के अनुपात की गणना करता है। यह अनुपात रक्त ऑक्सीजन संतृप्ति (%SpO2) के प्रतिशत के रूप में प्रस्तुत किया गया है। यह एक प्रोसेसर के माध्यम से किया जाता है जो इन विद्युत संकेतों की व्याख्या करके उन्हें संख्यात्मक मान में अनुवाद करने में सक्षम है।
MAX30102 मॉड्यूल क्या है?
सेंसर MAX30102, मैक्सिम इंटीग्रेटेड द्वारा निर्मित, एक एकीकृत उपकरण है जो हृदय गति मॉनिटर और ऑक्सीमीटर की कार्यक्षमता को जोड़ता है। इस सेंसर को Arduino जैसे माइक्रोकंट्रोलर के साथ आसानी से इस्तेमाल किया जा सकता है। MAX30102 इस फर्म के ऑप्टिकल सेंसर की MAX3010x श्रृंखला से संबंधित है।
इसका संचालन रक्त द्वारा प्रकाश अवशोषण की भिन्नता पर आधारित होता है ऑक्सीजन संतृप्ति स्तर, और नाड़ी जैसा कि मैंने पिछले दो अनुभागों में उल्लेख किया है। यह सेंसर दो एलईडी, एक लाल और एक इन्फ्रारेड से सुसज्जित है। इसे त्वचा पर लगाया जाता है, जैसे कि उंगली या कलाई पर, और ऑक्सीजन संतृप्ति की डिग्री निर्धारित करने के लिए परावर्तित प्रकाश का पता लगाता है।
MAX30102 के साथ संचार किया जाता है I2C बस के माध्यम से, जिससे Arduino जैसे माइक्रोकंट्रोलर से कनेक्ट करना आसान हो गया है। MAX30102 को दोहरी बिजली आपूर्ति की आवश्यकता है: लॉजिक के लिए 1.8V और LED के लिए 3.3V। आमतौर पर 5V मॉड्यूल पर पाया जाता है जिसमें पहले से ही आवश्यक स्तर का मिलान शामिल होता है।
La ऑप्टिकल पल्स ऑक्सीमेट्री यह रक्त में ऑक्सीजन संतृप्ति का प्रतिशत निर्धारित करने के लिए एक गैर-आक्रामक तरीका है। जैसा कि मैंने पहले उल्लेख किया है, यह विभिन्न तरंग दैर्ध्य के लिए हीमोग्लोबिन (एचबी) और ऑक्सीहीमोग्लोबिन (एचबीओ2) के प्रकाश अवशोषण गुणांक में अंतर पर आधारित है। ऑक्सीजन से भरपूर रक्त अधिक अवरक्त प्रकाश को अवशोषित करता है, जबकि कम ऑक्सीजन वाला रक्त अधिक लाल प्रकाश को अवशोषित करता है। शरीर के उन क्षेत्रों में जहां त्वचा काफी पतली है और नीचे रक्त वाहिकाएं हैं, इस अंतर का उपयोग ऑक्सीजन संतृप्ति की डिग्री निर्धारित करने के लिए किया जा सकता है।
पल्स और रक्त ऑक्सीजन सेंसर के साथ MAX30102 मॉड्यूल की विशेषताएं
MAX30102 में शामिल हैं:
- 2x LED, एक लाल (660nm) और एक इन्फ्रारेड (880nm)
- परावर्तित प्रकाश को मापने के लिए 2x फोटोडायोड
- प्रति सेकंड 18 से 50 नमूनों की नमूना दर के साथ 3200-बिट एडीसी कनवर्टर।
- इसके अलावा, इसमें सिग्नल प्रवर्धन और फ़िल्टरिंग, परिवेश प्रकाश को रद्द करने, 50-60 हर्ट्ज (कृत्रिम प्रकाश) की आवृत्तियों की अस्वीकृति और तापमान क्षतिपूर्ति के लिए आवश्यक इलेक्ट्रॉनिक्स हैं।
मॉड्यूल की खपत 50mA तक पहुंच सकता है माप के दौरान, हालांकि तीव्रता को प्रोग्रामेटिक रूप से समायोजित किया जा सकता है, माप के दौरान 0.7μA के कम पावर मोड के साथ।
मूल्य और कहाँ खरीदना है
नाड़ी और रक्त ऑक्सीजन को मापने के लिए MAX30102 सेंसर वे काफी सस्ते हैं. ये मॉड्यूल eBay, Aliexpress या Amazon जैसी साइटों पर केवल कुछ यूरो में आपके हो सकते हैं। आप देखेंगे कि इसके कई प्रकार हैं, और हम निम्नलिखित की अनुशंसा करते हैं:
Arduino के साथ कनेक्शन और उदाहरण
Arduino के साथ MAX30102 का परीक्षण करने के लिए, सबसे पहले इस मॉड्यूल को Arduino बोर्ड से कनेक्ट करना है। यह कनेक्शन बहुत सरल है, आपको बस निम्नलिखित को कनेक्ट करना होगा:
- मॉड्यूल का Vcc Arduino बोर्ड के 5V आउटपुट से जुड़ा होना चाहिए।
- मॉड्यूल का GND Arduino बोर्ड के GND सॉकेट से जुड़ा होना चाहिए।
- मॉड्यूल के SCL को Arduino बोर्ड के A5 जैसे किसी एक एनालॉग इनपुट से कनेक्ट करना होगा।
- मॉड्यूल के SDA को Arduino बोर्ड के अन्य एनालॉग इनपुट, जैसे A4, से कनेक्ट करना होगा।
एक बार MAX30102 बोर्ड और Arduino बोर्ड के बीच उचित कनेक्शन स्थापित हो जाने के बाद, अगली चीज़ इसे काम करने के लिए एक स्रोत कोड या स्केच लिखना होगा और संबंधित व्यक्ति से बायोमेट्रिक डेटा प्राप्त करना शुरू करना होगा। यह निम्नलिखित कोड लिखने जितना आसान है अरुडिनो आईडीई और बोर्ड को प्रोग्राम करें:
#include <Wire.h> #include "MAX30105.h" #include "spo2_algorithm.h" MAX30102 pulsioximetro; #define MAX_BRIGHTNESS 255 #if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) //Arduino Uno no tiene suficiente SRAM para almacenar 100 muestreos, por lo que hay que truncar las muestras en 16-bit MSB. uint16_t pulsoBuffer[100]; //infrared LED sensor data uint16_t oxiBuffer[100]; //red LED sensor data #else uint32_t pulsoBuffer[100]; //Sensores uint32_t oxiBuffer[100]; #endif int32_t BufferLongitud; //Longitud de datos int32_t spo2; //Valor de SPO2 int8_t SPO2valido; //Indicador de validez del valor SPO2 int32_t rangopulsacion; //PR BPM o pulsaciones int8_t validrangopulsacion; //Indicador de validez del valor PR BPM byte pulsoLED = 11; //Pin PWM byte lecturaLED = 13; //Titila con cada lectura void setup() { Serial.begin(115200); // Inicia la comunicación con el microcontrolador a 115200 bits/segundo pinMode(pulsoLED, OUTPUT); pinMode(lecturaLED, OUTPUT); // Inicializar sensores if (!pulsioximetro.begin(Wire, I2C_SPEED_FAST)) //Usar el bus I2C a 400kHz { Serial.println(F("MAX30102 no encontrado. Por favor, comprueba la conexión y alimentación del módulo.")); while (1); } Serial.println(F("Pon el sensor en contacto con tu dedo y presiona cualquier tecla para iniciar la conversión.")); while (Serial.available() == 0) ; //Esperar hasta que se pulsa una tecla Serial.read(); byte brilloLED = 60; //Opciones: 0=Apagado hasta 255=50mA byte mediaMuestreo = 4; //Opciones: 1, 2, 4, 8, 16, 32 byte ModoLED = 2; //Opciones: 1 = Rojo solo, 2 = Rojo + IR, 3 = Rojo + IR + Verde byte rangoMuestreo = 100; //Opciones: 50, 100, 200, 400, 800, 1000, 1600, 3200 int anchoPulso = 411; //Opciones: 69, 118, 215, 411 int rangoADC = 4096; //Opciones: 2048, 4096, 8192, 16384 pulsioximetro.setup(brilloLED, mediaMuestreo, ModoLED, rangoMuestreo, anchoPulso, rangoADC); //Configuración del módulo } void loop() { BufferLongitud = 100; //10 almacenamientos en el buffer con 4 segundos corriendo a 25sps //Leer las primeras 100 muestras for (byte i = 0 ; i < BufferLongitud ; i++) { while (pulsioximetro.available() == false) //Comprobar nuevos datos pulsioximetro.check(); oxiBuffer[i] = pulsioximetro.getRed(); pulsoBuffer[i] = pulsioximetro.getIR(); pulsioximetro.siguienteMuestreo(); //Muestreo terminado, ir al siguiente muestreo Serial.print(F("red=")); Serial.print(oxiBuffer[i], DEC); Serial.print(F(", ir=")); Serial.println(pulsoBuffer[i], DEC); } //Calcular el valor del pulso PM y SpO2 tras los primeros 100 samples maxim_heart_rate_and_oxygen_saturation(pulsoBuffer, BufferLongitud, oxiBuffer, &spo2, &SPO2valido, &rangopulsacion, &validrangopulsacion); //Calcular muestreos continuos while (1) { //Volcar los 25 primeros valores en memoria y desplazar los últimos 75 arriba for (byte i = 25; i < 100; i++) { oxiBuffer[i - 25] = oxiBuffer[i]; pulsoBuffer[i - 25] = pulsoBuffer[i]; } for (byte i = 75; i < 100; i++) { while (pulsioximetro.available() == false) //Comprobar si existen nuevos datos pulsioximetro.check(); digitalWrite(lecturaLED, !digitalRead(lecturaLED)); //Parpadea el LED on-board con cada dato oxiBuffer[i] = pulsioximetro.getRed(); pulsoBuffer[i] = pulsioximetro.getIR(); pulsioximetro.siguienteMuestreo(); //Al finalizar, moverse al siguiente muestreo Serial.print(F("Oxígeno=")); Serial.print(oxiBuffer[i], DEC); Serial.print(F(", Pulso=")); Serial.print(pulsoBuffer[i], DEC); Serial.print(F(", HR=")); Serial.print(rangopulsacion, DEC); Serial.print(F(", HRvalid=")); Serial.print(validrangopulsacion, DEC); Serial.print(F(", SPO2=")); Serial.print(spo2, DEC); Serial.print(F(", SPO2 válido=")); Serial.println(SPO2valido, DEC); } //Recalcular tras los primeros muestreos maxim_heart_rate_and_oxygen_saturation(pulsoBuffer, BufferLongitud, oxiBuffer, &spo2, &SPO2valido, &rangopulsacion, &validrangopulsacion); } }
बेशक, आप अपनी आवश्यकताओं के अनुसार कोड को संशोधित कर सकते हैं, यह सिर्फ एक उदाहरण है...