MAX30102

Analog Devices / Maxim Integrated; плата DFRobot · MAX30102; DFRobot SEN0344 V1.0 (legacy, 5 контактов)

Красный и инфракрасный PPG-сигнал для учебных проектов. Документированный пример: DFRobot SEN0344 V1.0 без отдельного MCU.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает MAX30102; DFRobot SEN0344 V1.0 (legacy, 5 контактов)

MAX30102 содержит красный и инфракрасный светодиоды, фотоприёмник и тракт оцифровки. По отражённому свету можно исследовать изменения кровенаполнения и разрабатывать алгоритмы PPG. Сама микросхема выдаёт отсчёты; число в ADC не является готовой частотой пульса или SpO₂.

Подключение рассчитано на DFRobot SEN0344 V1.0: компактную пяти-контактную плату с прямым доступом к MAX30102. Современная SEN0344 V2.0 имеет отдельный вычислитель, другой драйвер и иное питание; совпадение адреса не делает версии взаимозаменяемыми. У безымянных красных и фиолетовых breakout также различаются стабилизаторы и подтяжки.

В примере используется SparkFun MAX3010x: историческое имя класса MAX30105 не меняет модель сенсора. Выбран режим двух каналов Red + IR; зелёного светодиода у MAX30102 нет.

Движение, прижим, засветка, оптика и особенности кожи влияют на сигнал. Здесь показываются только необработанные оптические значения без диагностических выводов. Такая сборка не является медицинским прибором и не подходит для принятия решений о лечении; обозначение MAX30102 само по себе не подтверждает медицинскую точность.

DFRobot SEN0344 V1.0: legacy-плата MAX30102 с пятью контактами VCC/GND/SCL/SDA/INT. Это не SEN0344 V2.0 с отдельным MCU.

Источник фотографии: каталог Pakronics, изображение DFRobot SEN0344 с пятью контактами VCC/GND/SCL/SDA/INT. На фото — legacy-плата, соответствующая документации V1.0; текущий заголовок магазина V2.0 не используется как её идентификация. SLDV LAB удалил фон и выполнил пропорциональное масштабирование; новые детали не создавались. Условия повторного использования фотографии не установлены; обработка не меняет исходных прав. Схема соединений составлена по документации DFRobot V1.0. Источник: https://www.pakronics.com.au/products/dfrobot-max30102-heart-rate-and-oximeter-sensor-breakout-board-df-sen0344 .

Документация и распиновка SEN0344 V1.0.

Характеристики

Оптические каналы
Красный и инфракрасный
Максимальная разрядность ADC
18 бит
Глубина FIFO микросхемы
32 набора
Адрес прямого интерфейса MAX30102
0x57
SEN0344 V1.0: размер платы
18 × 14 мм
Частота ADC в примере
100 выборок/с
Усреднение FIFO в примере
4 выборки
Интерфейс
I²C
Питание модуля
DFRobot SEN0344 V1.0: VCC 3,3–5 В; в примере питание и I²C 3,3 В от ESP32-DevKitC V4. Голый MAX30102 требует VDD 1,7–2,0 В и отдельное питание LED 3,1–5,0 В. V2.0 SEN0344 имеет другой интерфейс через MCU и сюда не относится.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
VCC3V3ESP32-DevKitC V4 с ESP32-WROOM-32; именно SEN0344 V1.0.
GNDGNDОбщая земля.
SDAGPIO21Шина I²C 3,3 В; проверить подтяжки конкретного breakout.
SCLGPIO22Шина I²C 3,3 В.
INTНе подключатьВ примере программный опрос FIFO.

Подходит для ESP32. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать MAX30102 для учебной регистрации PPG. Уточни точное исполнение breakout, наличие отдельного MCU, питание, контроллер и задачу. Основа: DFRobot SEN0344 V1.0, ESP32-DevKitC V4 ESP32-WROOM-32, 3,3 В, GPIO21/22, адрес 0x57, SparkFun MAX3010x 1.1.2, два канала Red + IR. Дай полный скетч с проверкой связи, FIFO, отсутствия свежих данных и насыщения. Объясни единицы ADC, частоту после усреднения и ограничения движения/засветки. Не выдавай пример за медицинский прибор и не рассчитывай SpO₂ без обоснованного алгоритма и проверки.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Ядро / плата
esp32 by Espressif Systems 3.3.2 / ESP32 Dev Module

Физическая плата ESP32-DevKitC V4 с ESP32-WROOM-32.

Библиотека
SparkFun MAX3010x Pulse and Proximity Sensor Library 1.1.2

Заголовок MAX30105.h и класс MAX30105 поддерживают MAX30102.

Адрес I²C
0x57

Прямой доступ к сенсору; не алгоритмический MCU SEN0344 V2.0.

Конфигурация
sensor.setup(0x1F, 4, 2, 100, 411, 4096)

LED 0x1F, усреднение 4, Red+IR, 100 Гц, 411 мкс, ADC 4096 нА; это исходная настройка, не калибровка.

ESP32-DevKitC V4 · полный скетч сырых Red/IR

cpp
#include <Arduino.h>
#include <Wire.h>
#include <MAX30105.h>

MAX30105 sensor;
uint32_t lastSample = 0;
uint32_t lastWarning = 0;

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);
  Wire.setTimeOut(50);
  if (!sensor.begin(Wire, I2C_SPEED_STANDARD, 0x57)) {
    Serial.println("MAX30102 not found or unexpected part ID");
    while (true) delay(1000);
  }
  sensor.setup(0x1F, 4, 2, 100, 411, 4096);
  lastSample = millis();
}

void loop() {
  Wire.beginTransmission(0x57);
  if (Wire.endTransmission() != 0) {
    Serial.println("MAX30102 I2C not responding");
    delay(1000);
    return;
  }
  sensor.check();
  while (sensor.available()) {
    const uint32_t red = sensor.getFIFORed();
    const uint32_t ir = sensor.getFIFOIR();
    sensor.nextSample();
    lastSample = millis();
    if (red >= 262143UL || ir >= 262143UL) {
      Serial.println("Optical ADC saturated; adjust optical setup and LED current");
    } else {
      Serial.print("Red_ADC="); Serial.print(red);
      Serial.print(" IR_ADC="); Serial.println(ir);
    }
  }
  const uint32_t now = millis();
  if (now - lastSample > 2000UL && now - lastWarning > 2000UL) {
    Serial.println("No fresh samples for 2 s");
    lastWarning = now;
  }
  delay(5);
}

Полный скетч ESP32-DevKitC V4 (ESP32-WROOM-32), Arduino-ESP32 3.3.2 и SparkFun MAX3010x 1.1.2. API setup/check/available/getFIFO/nextSample проверен по исходникам; компиляция и аппаратный тест не выполнялись. Serial Monitor: 115200 бод. 100 выборок/с с усреднением 4 дают номинально 25 наборов Red+IR в секунду. Проверьте изменение отсчётов при спокойном лёгком контакте с сенсором без сильного прижатия. Ноль не трактуется как отсутствие пульса. Драйвер не предоставляет отдельный результат каждой FIFO-транзакции, поэтому скетч обнаруживает отсутствие связи, поток данных и край насыщения, но не все виды повреждения данных. Для точной регистрации дополнительно контролируют переполнение FIFO и целостность потока. Код не вычисляет пульс и SpO₂.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты