esp32c3+max30102使用排坑记录

硬件:合宙esp32c3(无串口芯片版本)+ max30102

软件:PlatformIO

esp32c3:

esp32c3:由于没有串口芯片,需要调用内置的串口管理才能使用Serial.print()。需要将platformio.ini中board 改为 adafruit_qtpy_esp32c3  。或者加入(board=esp32-c3-devkitm-1时):

build_flags = 
   -DARDUINO_USB_MODE=1
   -DARDUINO_USB_CDC_ON_BOOT=1

需要注意的是,如果使用adafruit_qtpy_esp32c3,那么I2C的默认端口将改变,需要手动设置才行:

Wire.setPins(8, 9) // SDA, SCL
particleSensor.begin(Wire, I2C_SPEED_FAST)

 可以使用I2C scanner进行验证: Arduino Playground - I2cScanner

MAX30102:

对于MAX30102,最坑的地方在于,如果使用sparkfun/SparkFun MAX3010x Pulse and Proximity Sensor Library,那么读取到的IR和RED是反的。表现为可以读取到稳定的心率,却始终无法获取稳定的血氧, SPO2经常是-999。拿Example8_SPO2举例,原始代码为:

      redBuffer[i] = particleSensor.getRed();
      irBuffer[i] = particleSensor.getIR();

应改为

      redBuffer[i] = particleSensor.getIR();
      irBuffer[i] = particleSensor.getRed();

似乎是因为max30102和max30105的这个信息是反的。

这部分可以用下面的链接验证,RED应该要比IR的波动小才对:coniferconifer/ESP32_MAX30102_simple-SpO2_plotter: Simple SpO2 plotter from scratch for Arduno IDE by reading MH-ET LIVE MAX30102 raw RED/IR data (github.com)

### 使用 ESP32-C3 驱动 MAX30102 传感器 为了使 ESP32-C3 成功驱动 MAX30102 生物传感模块,需配置 I2C 接口并编写相应的初始化和数据读取程序。下面提供一段基于 Arduino IDE 的示例代码来展示这一过程。 #### 初始化硬件连接 确保将 MAX30102 正确接线到 ESP32-C3 开发板上,通常情况下 VCC 连接到 3.3V,GND 到 GND,SDA 和 SCL 分别对应于指定的 GPIO 引脚[^1]。 #### 安装必要的库文件 在项目中加入 `Adafruit_MAX30102` 库以及依赖项 `Adafruit_Sensor` 和 `Wire.h` 来简化操作流程。 ```cpp #include <Wire.h> #include <Adafruit_MAX30102.h> #include <Adafruit_Sensor.h> // 创建 MAX30102 对象实例 Adafruit_MAX30102 particleSensor; ``` #### 设置与循环部分 定义 setup 函数用于设备初始化;loop 函数负责持续获取测量值,并打印至串行监视器查看结果。 ```cpp void setup() { Serial.begin(115200); if (!particleSensor.begin()) { while (1); // 如果未能成功启动,则在此处等待 } } void loop() { sensors_event_t event; uint32_t irValue, redValue; particleSensor.getEvent(&event); if(event.type == SENSOR_EVENT_TYPE_IR){ irValue = event.ir; redValue = event.red; Serial.print("IR="); Serial.println(irValue); Serial.print("Red="); Serial.println(redValue); } delay(1000); // 延迟一秒再继续下一次采样 } ``` 此段代码实现了基本的心率监测功能,能够定期输出红外光强度(IR)和红光反射量(RED),这些数值可用于进一步计算心率和其他生理参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值