pdf-icon

Arduino 上手教程

2. 设备开发 & 案例程序

5. 拓展模块

6. 应用案例

Unit Heart Arduino 使用教程

1. 准备工作

2. 注意事项

引脚兼容性
由于每款主机的引脚配置不同,使用前请参考产品文档中的引脚兼容表,并根据实际引脚连接情况修改案例程序。

3. 案例程序

  • 本教程中使用的主控设备为 StickS3,搭配 Unit Heart 模块。本心率模块采用 I2C 方式通讯,根据实际的电路连接修改程序中的引脚定义,设备堆叠后对应的 I2C IO 为 G9 (SCL)G10 (SDA)
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#include "M5Unified.h"
#include "MAX30100.h"

#define SAMPLING_RATE   MAX30100_SAMPRATE_100HZ
#define IR_LED_CURRENT  MAX30100_LED_CURR_24MA
#define RED_LED_CURRENT MAX30100_LED_CURR_27_1MA
#define PULSE_WIDTH     MAX30100_SPC_PW_1600US_16BITS
#define HIGHRES_MODE    true

MAX30100 sensor;  // Instantiate a MAX30100 sensor class

void setup()
{
    M5.begin();        
    M5.Power.begin();  // Init power
    Serial.print("Initializing MAX30100..");

    while (!sensor.begin()) {  // Initialize the sensor
        M5.Lcd.setCursor(50, 100);
        M5.Lcd.println("Sensor not found");
        delay(1000);
    }
    M5.Lcd.setRotation(3);
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setFont(&fonts::FreeMonoBold12pt7b);
    M5.Lcd.setTextSize(1.5);
    // Set up the wanted parameters
    sensor.setMode(MAX30100_MODE_SPO2_HR);
    sensor.setLedsCurrent(IR_LED_CURRENT, RED_LED_CURRENT);
    sensor.setLedsPulseWidth(PULSE_WIDTH);
    sensor.setSamplingRate(SAMPLING_RATE);
    sensor.setHighresModeEnabled(HIGHRES_MODE);
}

void loop()
{
    uint16_t ir, red;
    sensor.update();                       // Update sensor data
    if (sensor.getRawValues(&ir, &red)) {  // if get data
        M5.Lcd.setCursor(5, 20);
        M5.Lcd.printf("IR: %d", ir);
        M5.Lcd.setCursor(5, 70);
        M5.Lcd.printf("RED: %d", red);
    }
    delay(100); // Appropriate delay
    M5.Lcd.fillScreen(BLACK);
}

4. 心率原始数据检测

  • 设备上电后,屏幕上会显示从 MAX30100 传感器获取的原始红外和红光数据。将手指放在心率模块的传感器区域,观察屏幕上显示的数值变化,数值会根据血液流动的变化而波动。
On This Page