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)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值