ESP8266-Arduino编程实例-DS18B20温度传感器驱动

DS18B20温度传感器驱动

1、DS18B20简单介绍

DS18B20 是一款温度传感器,可用于各种简单的项目。 通过使用 One-Wire总线,可以将多个传感器连接到ESP8266。

在这里插入图片描述

DS18B20 的成本也相对较低,只需要一个额外的 4k7 上拉电阻。在本文中,将创建一个基本示例,通过串行读取温度和输出,并且可以使用 Arduino IDE 中的串行监视器进行验证。

在前面的文章中,对DS18B20做了详细的描述,请参考:

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • DS18B20温度传感器模块一个
  • 4k7电阻一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线图如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

1)导入头文件

1
2
3
#include <OneWire.h>
#include <DallasTemperature.h>

本次使用DS18B20的驱动库:

本次使用OneWire总线驱动库:

2)引脚、OneWire总线及DS18B20传感器定义

1
2
3
4
5
6
7
8
9
// 定义DS18B20引脚
#define ONE\_WIRE\_BUS D2

// 定义OneWire总线
OneWire oneWire(ONE_WIRE_BUS);

// 定义DS18B20传感器对象
DallasTemperature sensors(&oneWire);

3)在setup函数中初始化串口和启动传感器

1
2
3
4
5
6
7
8
9
10
void setup(void)
{
// 初始化串口
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");

// 启动传感器
sensors.begin();
}

4)在loop函数中读取传感器的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void loop(void)
{

Serial.print("Requesting temperatures...");
// 向总线请求数据
sensors.requestTemperatures();
Serial.println("DONE");
// 通过索引,查询指定传感器的数据
float tempC = sensors.getTempCByIndex(0);

// 检查是否读取成功
if(tempC != DEVICE_DISCONNECTED_C)
{
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(tempC);
}
else
{
Serial.println("Error: Could not read temperature data");
}
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126070604