Selama ini, kami telah menunjukkan banyak sekali Komponen elektronik cocok dengan papan seperti Arduino atau yang kompatibel, serta untuk banyak pekerjaan pembuat atau DIY lainnya. Sekarang kami akan memperkenalkan Anda pada modul MAX30102, yang mencakup sensor untuk mengukur denyut nadi dan oksigen darah.
Dengan cara ini, Anda juga dapat membuat perangkat yang dapat dikenakan seperti gelang atau perangkat keras aktivitas buatan sendiri memantau status kesehatan seseorang, memberikan data biometrik atau telemetri orang tersebut berkat integrasi monitor detak jantung dan oksimeter di perangkat ini...
Apa itu monitor detak jantung? Bagaimana cara kerjanya?
Un sensor pulsa atau monitor detak jantung Ini adalah perangkat elektronik yang digunakan untuk mengukur detak jantung seseorang secara real time. Hal ini terutama digunakan di bidang olahraga untuk memantau kinerja dan upaya selama pelatihan atau setiap hari. Monitor detak jantung sangat populer di kalangan atlet, namun juga merupakan perangkat mendasar di pusat kesehatan untuk mengetahui detak jantung, yaitu detak jantung atau detak per menit:
- PR Bpm: menunjukkan detak jantung, yaitu detak per menit.
Dalam semua kasus, Sensor menangkap variasi volume darah pada setiap detak jantung. Variasi ini diterjemahkan menjadi sinyal listrik yang diproses untuk mendapatkan detak jantung. Beberapa monitor detak jantung juga menyertakan sirkuit amplifikasi dan peredam bising untuk meningkatkan akurasi pembacaan.
Apa itu oksimeter? Bagaimana cara kerjanya?
Un oksimeter adalah alat kesehatan atau olah raga yang digunakan untuk mengukur saturasi oksigen dalam darah. Perangkat ini menawarkan data saturasi oksigen darah dengan nilai 0 hingga 100%. Biasanya perangkat yang sama juga menyertakan opsi detak jantung, yang menunjukkan semua informasi untuk pemantauan atau perekaman.
Data itu mengukur oksimeter adalah:
- %SpO2: mengacu pada persentase saturasi oksigen dalam darah.
Oksimeter ditempatkan seperti penjepit sedemikian rupa sehingga disesuaikan dengan morfologi jari kita atau bisa juga ditempatkan di tempat lain pada tubuh, seperti halnya monitor detak jantung, seperti pergelangan tangan, sebagai dapat dilihat di banyak gelang aktivitas. ,
Mengenai cara kerjanya, oksimeter mengeluarkan emisi yang berbeda panjang gelombang cahaya yang melewati kulit. Yang bekerja pada cahaya ini adalah hemoglobin, molekul darah yang bertanggung jawab untuk mengangkut oksigen, menyerap jumlah cahaya yang berbeda-beda tergantung pada tingkat oksigen yang diangkutnya. Proses detailnya adalah sebagai berikut:
- emisi cahaya- Oksimeter memancarkan dua panjang gelombang cahaya, satu merah dan satu inframerah, yang melewati jari yang diletakkan pada perangkat.
- Penyerapan cahaya: Hemoglobin, molekul dalam sel darah merah yang membawa oksigen, menyerap jumlah cahaya yang berbeda-beda. Hemoglobin yang mengandung oksigen (oksihemoglobin) dan hemoglobin bebas oksigen (deoksihemoglobin) memiliki sifat penyerapan cahaya yang berbeda.
- Deteksi cahaya: Detektor di sisi berlawanan dari pemancar cahaya mengumpulkan cahaya yang melewati jari.
- Perhitungan saturasi oksigen- Alat menghitung rasio oksihemoglobin dengan jumlah total hemoglobin yang ada, baik oksihemoglobin maupun deoksihemoglobin. Proporsi ini disajikan sebagai persentase saturasi oksigen darah (%SpO2). Hal ini dilakukan melalui prosesor yang mampu menafsirkan sinyal-sinyal listrik untuk menerjemahkannya menjadi nilai numerik.
Apa itu modul MAX30102?
Sensornya MAX30102, diproduksi oleh Maxim Terintegrasi, adalah perangkat terintegrasi yang menggabungkan fungsi monitor detak jantung dan oksimeter. Sensor ini dapat dengan mudah digunakan dengan mikrokontroler seperti Arduino. MAX30102 termasuk dalam sensor optik seri MAX3010x dari perusahaan ini.
Cara kerjanya didasarkan pada variasi penyerapan cahaya oleh darah, tergantung pada jenisnya tingkat saturasi oksigen, dan denyut nadi seperti yang telah saya sebutkan pada dua bagian sebelumnya. Sensor ini dilengkapi dengan dua buah LED, satu berwarna merah dan satu lagi inframerah. Itu ditempatkan di kulit, seperti di jari atau pergelangan tangan, dan mendeteksi cahaya yang dipantulkan untuk menentukan tingkat saturasi oksigen.
Komunikasi dengan MAX30102 dilakukan melalui bus I2C, sehingga memudahkan untuk terhubung ke mikrokontroler seperti Arduino. MAX30102 membutuhkan catu daya ganda: 1.8V untuk logika dan 3.3V untuk LED. Biasanya ditemukan pada modul 5V yang sudah menyertakan pencocokan level yang diperlukan.
La oksimetri pulsa optik Ini adalah metode non-invasif untuk menentukan persentase saturasi oksigen dalam darah. Seperti yang saya sebutkan sebelumnya, hal ini didasarkan pada perbedaan koefisien penyerapan cahaya hemoglobin (Hb) dan oksihemoglobin (HbO2) untuk panjang gelombang yang berbeda. Darah kaya oksigen menyerap lebih banyak cahaya inframerah, sedangkan darah rendah oksigen menyerap lebih banyak cahaya merah. Pada area tubuh yang kulitnya cukup tipis dan terdapat pembuluh darah di bawahnya, perbedaan ini dapat digunakan untuk menentukan derajat saturasi oksigen.
Fitur modul MAX30102 dengan sensor denyut nadi dan oksigen darah
MAX30102 meliputi:
- 2x LED, satu merah (660nm) dan satu inframerah (880nm)
- 2x fotodioda untuk mengukur cahaya yang dipantulkan
- Konverter ADC 18-bit dengan laju pengambilan sampel 50 hingga 3200 sampel per detik.
- Selain itu, ia memiliki perangkat elektronik yang diperlukan untuk penguatan dan penyaringan sinyal, pembatalan cahaya sekitar, penolakan frekuensi 50-60Hz (cahaya buatan) dan kompensasi suhu.
Konsumsi modul dapat mencapai hingga 50mA selama pengukuran, meskipun intensitasnya dapat disesuaikan secara terprogram, dengan mode daya rendah 0.7µA selama pengukuran.
Perusahaan precio y dónde
Sensor MAX30102 untuk mengukur denyut nadi dan oksigen darah mereka cukup murah. Modul ini dapat menjadi milik Anda hanya dengan beberapa euro di situs seperti eBay, Aliexpress, atau Amazon. Anda akan melihat ada beberapa jenis, dan kami merekomendasikan yang berikut ini:
Koneksi dan contoh dengan Arduino
Untuk menguji MAX30102 dengan Arduino, hal pertama yang harus dilakukan adalah menghubungkan modul ini ke papan Arduino. Ini koneksi sangat sederhana, Anda hanya perlu menghubungkan yang berikut ini:
- Vcc modul harus dihubungkan ke output 5V papan Arduino.
- GND modul harus terhubung ke soket GND papan Arduino.
- SCL modul harus dihubungkan ke salah satu input analog papan Arduino, seperti A5.
- SDA modul harus dihubungkan ke input analog lain dari papan Arduino, seperti A4.
Setelah koneksi yang sesuai dibuat antara papan MAX30102 dan papan Arduino, hal berikutnya adalah menulis kode sumber atau sketsa agar berfungsi dan mulai menerima data biometrik dari orang yang bersangkutan. Ini semudah menulis kode berikut IDE Arduino dan memprogram papan:
#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); } }
Tentu saja Anda dapat memodifikasi kodenya sesuai kebutuhan Anda, ini hanya contoh...