ESP32基于arduino开发的心跳体温检测系统(二)传感器的使用

在上篇文章里,我们配置好了开发需要的环境。接下来就开始尝试使用传感器。

测温传感器

连接元件

我们使用的是MLX90614 gy906测温传感器,有4个引脚,分别为VCC、GND、SCL、SDA。其中VCC接高电平,GND接地,SCL和SDA是IIC通信端口,后面会提到该如何使用SCL和SDA。
将VCC、GND分别接至ESP32的5V电源端、GND端,将SCL接至ESP32的22号引脚,SDA接至ESP32的21号引脚。这样,测温传感器就连接好了。

测试

然后使用如下代码来测试传感器是否能正常工作。

#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  Serial.begin(9600);
  Serial.println("Adafruit MLX90614 test");  
  mlx.begin();  
}

void loop() {
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); 
  Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); 
  Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");

  Serial.println();
  delay(500);
}

选择好开发板
在这里插入图片描述
选择“上传”,等待烧录完毕。之后打开串口监视器,若在串口监视器中能看到正常范围内的温度数据,则证明传感器工作正常,就可以进入下一步的操作了。

代码解释

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

此条语句声明并且例化了一个名为mlx的Adafruit_MLX90614类,之后程序中的操作都基于这个mlx实例。

mlx.begin();  

此条语句初始化实例mlx,使其在之后的主程序main中能够正常工作。

Serial.print(mlx.readObjectTempC()); Serial.println("*C");

此条语句调用Adafruit_MLX90614类中的readObjectTempC函数,其作用是测量当前在测温模块前的物体温度,并且以摄氏度的形式表现出来。这条语句是系统测温功能的核心语句。
值得一提的是,MLX90614是一款红外光电测温模块,物体温度的高低与物体距离光电感应器的距离成负相关关系。简而言之,要想测得准,尽量贴着感应头。

心跳传感器

连接元件

我们使用的是Pulse Sensor心跳传感器,有3个引脚,分别为+、-和数据引脚。其中+接高电平,-接地。
将+、-分别接至ESP32的5V电源端、GND端,将数据引脚接至ESP32的35号引脚。这样,心跳传感器就连接好了。

测试

然后使用如下代码来测试传感器是否能正常工作。

int pin = 35;
double Data;

void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600); //打开串口
 
   pinMode( pin, INPUT);//设置管脚为输入
}

void loop() {
  // put your main code here, to run repeatedly:
  Data=analogRead(pin);
  Serial.println(Data);
  Serial.println();
  delay(1000);
}

烧录完毕后,打开串口监视器,将手指放到传感器的非引脚面,观察读数。若放手指前后,监视器数值有明显变化,则证明传感器工作正常。
需要注意的是,监视器数值可能数值较大,大约在2k左右,并且浮动较大,这是正常的,处理的方法在后面系统整合时会提到。

特别注意事项

比较心跳传感器和测温传感器的测试代码可以发现,心跳传感器需要在代码内声明引脚值,此处为

int pin = 35;

而在测温传感器的测试代码中,并没有相关的引脚声明,这是因为MLX90614使用IIC与开发板通信,在arduino环境下,Adafruit_MLX90614库使用的引脚是开发板的默认IIC通信端口,在arduino UNO开发板上是模拟引脚4号和模拟引脚5号。而在ESP32开发板上是21和22号引脚,所以采用了上述的连接方式。
关于ESP32开发板上21和22号引脚的问题,见下列的文章
ESP32-I2C简要理解
esp32 在arduino1.8下的I2C引脚

  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值