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
Komponen | Jumlah | Keterangan |
---|---|---|
Arduino Uno | 1 | Mikrokontroler utama |
Sensor MAX30102 | 1 | Sensor detak jantung dan SpO2 |
Kabel jumper | 4 | Koneksi 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 filespo2_algorithm.h
sudah terinstal. Bisa diambil dari GitHub SparkFun MAX3010x.
Langkah Pengujian
- Hubungkan sensor seperti pada wiring diagram.
- Upload kode ke Arduino Uno.
- Buka Serial Monitor dengan baudrate 115200.
- Letakkan jari di atas sensor (jangan terlalu menekan).
- 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 :