Product Description
The MAX30102 Sensor Module is an integrated pulse oximeter and heart-rate sensor designed for wearable and health monitoring applications. It combines LEDs , photodetectors , and a high-sensitivity optical sensor in a compact module capable of measuring blood oxygen saturation (SpO₂) and heart rate (BPM) using light absorption.
This module is ideal for projects involving health tracking, fitness devices, biometric monitoring, and interactive wearables. It communicates over I²C and can be easily interfaced with Arduino, ESP32, STM32, Raspberry Pi, or any microcontroller with I²C support.
✨ Key Features
Measures heart rate (BPM) and blood oxygen saturation (SpO₂)
Built-in red and infrared LEDs with photodetector
Low power and compact design
Works over I²C interface (SDA, SCL)
Compatible with Arduino, ESP32, STM32, Raspberry Pi, etc.
Easy to integrate with open-source libraries
Ideal for health and fitness monitoring projects
Improved ambient light cancellation for accuracy
Can be mounted on finger or earlobe via custom housing
📐 Technical Specifications
📡 Sensor & Measurement
Sensor Type: Pulse oximeter and heart rate monitor
LEDs: Red (~660 nm) and Infrared (~880 nm)
Detection: Light absorption to estimate SpO₂ and pulse
Output: Digital via I²C
📶 Interface
🧠 Power
Operating Voltage: ~1.8 V core, 3.3 V supply (breakout boards may include regulator)
Low Power Consumption: Suitable for battery operation
🛠️ Compatibility
Microcontrollers: Arduino, ESP32, STM32, PIC, AVR, etc.
Single-board Computers: Raspberry Pi, BeagleBone, etc.
📦 Physical
🧰 Typical Applications
Heart rate monitoring
Blood oxygen saturation (SpO₂) measurement
Wearable health trackers
Fitness and wellness devices
Biometric sensing systems
Interactive health projects for makers
🔧 How It Works (Quick Overview)
Place the sensor where blood flow is detectable (finger, earlobe).
Illuminate with LEDs: Red and infrared light penetrate tissue.
Measure reflected light: Detector captures variations due to blood flow.
Compute SpO₂ and BPM: Firmware algorithms derive physiological values.
Output via I²C: Microcontroller reads sensor data for processing and display.
🧠 Integration Tips
Use established libraries (like Arduino MAX3010x libraries) to simplify coding.
Add proper time averaging and signal filtering for more stable readings.
Ensure good sensor contact (gentle pressure) for accurate detection.
Keep the sensor area free of ambient light interference .
Pin Connections Table 1
Board Sensor Pin Connection MAX30102 VCC/GND/SDA/SCL 3.3V / GND / board SDA / board SCL
MAX30102 Pulse Oximeter Heart Rate Sensor Module - Arduino Uno
MAX30102 Pulse Oximeter Heart Rate Sensor Module - Arduino Nano
MAX30102 Pulse Oximeter Heart Rate Sensor Module - Arduino Mega
MAX30102 Pulse Oximeter Heart Rate Sensor Module - ESP32
MAX30102 Pulse Oximeter Heart Rate Sensor Module - ESP8266
MAX30102 Pulse Oximeter Heart Rate Sensor Module - STM32
MAX30102 Pulse Oximeter Heart Rate Sensor Module - Raspberry Pi Pico
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for Arduino Uno: A4=SDA, A5=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for Arduino Nano: A4=SDA, A5=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for Arduino Mega: D20=SDA, D21=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for ESP32: GPIO21=SDA, GPIO22=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for ESP8266: D2=SDA, D1=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for STM32: PB7=SDA, PB6=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // I2C wiring for Raspberry Pi Pico: GPIO4=SDA, GPIO5=SCL
6 #include <Wire.h>
7 #include "MAX30105.h" // SparkFun library - also covers MAX30100/30102 register-compatible reads
8
9 MAX30105 particleSensor;
10
11 void setup () {
12 Serial.begin (115200 );
13 Wire.begin();
14 if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
15 Serial.println ("MAX3010x not found - check wiring!");
16 while (1 ) delay (10 );
17 }
18 particleSensor.setup (); // default sensor settings (LED brightness, sample rate...)
19 }
20
21 void loop () {
22 long irValue = particleSensor.getIR();
23
24 if (irValue < 50000 ) {
25 Serial.println ("No finger detected");
26 } else {
27 Serial.print ("IR: "); Serial.print (irValue);
28 Serial.print (" Red: "); Serial.println (particleSensor.getRed());
29 // Real BPM/SpO2 needs the library's beat-detection / SpO2 algorithm on top of these raw readings.
30 }
31
32 delay (20 );
33 }
Project Notes: I2C optical heart-rate/SpO2 sensor.
نظرة عامة ومواصفات المنتج — بالعربية MAX30102 Pulse Oximeter Heart Rate Sensor Module متوفر الآن في متجر إكوسترا للإلكترونيات، ضمن قسم Sensors، بسعر 175,00 EGP. كود المنتج لدينا: EK864. المنتج متوفر في المخزون وجاهز للشحن الفوري لكل محافظات مصر مع إمكانية الدفع عند الاستلام.
أهم المواصفات الفنية:
Product Type: Pulse Oximeter & Heart Rate Sensor ModuleSensor Ic: MAX30102Function: SpO₂ (Blood Oxygen) + Heart Rate (PPG)Light Source: Red LED (660 nm) + IR LED (880/940 nm, typical)Photodetector: Integratedواجهة الاتصال: I²C (Address 0x57 typical)Logic Level: 1.8–3.3 V (module often supports 3.3–5 V via regulator/level shift)Supply Voltage: 3.3 V (typical)هذا المنتج مناسب لمشاريع الأردوينو (Arduino) و ESP32 و Raspberry Pi، ومشاريع الروبوتات وإنترنت الأشياء والتعليم الهندسي. جميع القطع مفحوصة قبل الشحن.
تصفّح المزيد من Sensors في إكوسترا.