Detak Jantung & Oksigen Darah MAX30102 Arduino Uno

Detak Jantung & Oksigen Darah MAX30102 Arduino Uno

Pantau detak jantung dan kadar oksigen dalam darah (SpO2) menggunakan sensor MAX30102 dan Arduino Uno. Tutorial wiring, kode, dan analisis data.

Sensor MAX30102 merupakan modul optik canggih yang digunakan untuk mengukur detak jantung (heart rate) dan SpO2 (kadar oksigen dalam darah) menggunakan cahaya merah dan inframerah. Sensor ini banyak digunakan dalam perangkat wearable seperti smartwatch dan fitness tracker.

Dengan bantuan Arduino Uno, kita bisa membaca data dari sensor ini dan menampilkannya di Serial Monitor untuk eksperimen kesehatan mandiri.

Alat dan Bahan

KomponenJumlahKeterangan
Arduino Uno1Mikrokontroler utama
Sensor MAX301021Sensor detak jantung dan SpO2
Kabel jumper4Koneksi VCC, GND, SDA, dan SCL

Wiring Diagram MAX30102

  • VIN (Merah) → 5V Arduino
  • GND (Hitam) → GND Arduino
  • SDA (Kuning) → A4 Arduino
  • SCL (Hijau) → A5 Arduino

Pastikan koneksi I2C benar karena sensor menggunakan protokol I2C.

Kode Program MAX30102 Arduino

Berikut kode lengkap untuk membaca detak jantung dan kadar oksigen:

#include <Arduino.h>
#include <Wire.h>
#include "MAX30105.h"
#include "spo2_algorithm.h"

MAX30105 particleSensor;

#define MAX_BRIGHTNESS 255

#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
uint16_t irBuffer[100];
uint16_t redBuffer[100];
#else
uint32_t irBuffer[100];
uint32_t redBuffer[100];
#endif

int32_t bufferLength = 100;
int32_t spo2;
int8_t validSPO2;
int32_t heartRate;
int8_t validHeartRate;

void proses_sensor_max30102() {
  for (byte i = 0; i < bufferLength; i++) {
    while (!particleSensor.available()) particleSensor.check();
    redBuffer[i] = particleSensor.getRed();
    irBuffer[i] = particleSensor.getIR();
    particleSensor.nextSample();

    Serial.print("red=");
    Serial.print(redBuffer[i]);
    Serial.print(", ir=");
    Serial.println(irBuffer[i]);
  }

  maxim_heart_rate_and_oxygen_saturation(irBuffer, bufferLength, redBuffer,
    &spo2, &validSPO2, &heartRate, &validHeartRate);

  while (1) {
    for (byte i = 25; i < 100; i++) {
      redBuffer[i - 25] = redBuffer[i];
      irBuffer[i - 25] = irBuffer[i];
    }

    for (byte i = 75; i < 100; i++) {
      while (!particleSensor.available()) particleSensor.check();
      redBuffer[i] = particleSensor.getRed();
      irBuffer[i] = particleSensor.getIR();
      particleSensor.nextSample();

      Serial.print("red=");
      Serial.print(redBuffer[i]);
      Serial.print(", ir=");
      Serial.print(irBuffer[i]);
      Serial.print(", HR=");
      Serial.print(heartRate);
      Serial.print(", HRvalid=");
      Serial.print(validHeartRate);
      Serial.print(", SPO2=");
      Serial.print(spo2);
      Serial.print(", SPO2Valid=");
      Serial.println(validSPO2);
    }

    maxim_heart_rate_and_oxygen_saturation(irBuffer, bufferLength, redBuffer,
      &spo2, &validSPO2, &heartRate, &validHeartRate);
  }
}

void setup() {
  Serial.begin(115200);

  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
    Serial.println("MAX30105 not found. Check wiring/power.");
    while (1);
  }

  byte ledBrightness = 60;
  byte sampleAverage = 4;
  byte ledMode = 3;
  byte sampleRate = 200;
  int pulseWidth = 411;
  int adcRange = 4096;

  particleSensor.setup(ledBrightness, sampleAverage, ledMode,
    sampleRate, pulseWidth, adcRange);
}

void loop() {
  proses_sensor_max30102();
}

Penjelasan Program

  • Library MAX30105 digunakan untuk berkomunikasi dengan sensor.
  • Fungsi proses_sensor_max30102() membaca data mentah dari sensor dan menampilkannya di serial monitor.
  • Fungsi maxim_heart_rate_and_oxygen_saturation() digunakan untuk menghitung detak jantung dan kadar SpO2 berdasarkan algoritma dari Maxim Integrated.

Pastikan library MAX30105 dan file spo2_algorithm.h sudah terinstal. Bisa diambil dari GitHub SparkFun MAX3010x.

Langkah Pengujian

  1. Hubungkan sensor seperti pada wiring diagram.
  2. Upload kode ke Arduino Uno.
  3. Buka Serial Monitor dengan baudrate 115200.
  4. Letakkan jari di atas sensor (jangan terlalu menekan).
  5. Perhatikan output: nilai detak jantung dan SpO2 akan muncul setelah 100 sampel terbaca.

Kesimpulan

Sensor MAX30102 sangat cocok untuk pemantauan kesehatan berbasis DIY. Ia mampu membaca detak jantung dan kadar oksigen dalam darah hanya dengan menempelkan jari. Dengan pengolahan data dari Arduino, kamu bisa menampilkan hasilnya ke layar OLED, menyimpan ke SD card, atau bahkan mengirim ke aplikasi mobile via Bluetooth.

Tutorial ini memberi fondasi kuat untuk membuat monitor kesehatan portabel berbasis Arduino.

Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :

Baca juga :

Cara Menggunakan Sensor Barcode GM77 dengan Arduino Uno

Cara Menggunakan Sensor TDS dengan Arduino Uno