问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32-C3实现DS18B20温度传感器检测(Arduino IDE)

创作时间:
作者:
@小白创作中心

ESP32-C3实现DS18B20温度传感器检测(Arduino IDE)

引用
CSDN
1.
https://m.blog.csdn.net/qq_59527512/article/details/142883769

本文将介绍如何使用ESP32-C3微控制器和DS18B20温度传感器进行温度检测。通过Arduino IDE平台,结合OneWire和DallasTemperature库,实现温度数据的读取和显示。

1. 源代码(DS18B20)

#include <OneWire.h> // 引入OneWire库,用于与单总线设备通信
#include <DallasTemperature.h> // 引入DallasTemperature库,用于读取DS18B20温度传感器数据

// 定义连接到DS18B20数据引脚的GPIO编号
#define ONE_WIRE_BUS 2 

// 创建一个OneWire实例,用于与单总线设备通信
OneWire oneWire(ONE_WIRE_BUS);

// 创建一个DallasTemperature传感器实例,并将oneWire实例传递给它
DallasTemperature sensors(&oneWire);

void setup(void) {
  // 初始化串口通信,并设置波特率为115200,用于调试信息输出
  Serial.begin(115200); 
  
  // 启动传感器,准备进行温度读取
  sensors.begin(); 
}

void loop(void) {
  // 向DS18B20传感器发送温度读取命令
  sensors.requestTemperatures(); 
  
  // 通过索引0读取第一个连接的DS18B20传感器的温度值,单位为摄氏度
  float temperature = sensors.getTempCByIndex(0); 
  
  // 通过串口输出温度信息,首先输出字符串"温度: "
  Serial.print("温度: ");
  
  // 输出读取到的温度值,并通过println换行
  Serial.println(temperature); 
  
  // 程序暂停1000毫秒,即等待一秒后再次读取温度
  delay(1000); 
}

2. 代码讲解

要使用DS18B20温度传感器,需要添加以下两个库:

  • OneWire.h:用于与单总线设备通信
  • DallasTemperature.h:用于读取DS18B20温度传感器数据

3. 库实现原理

以下是DallasTemperature库实现温度读取的关键步骤:

  1. 初始化:通过调用begin()方法初始化,设置1-Wire总线的GPIO引脚。

  2. 设备搜索:使用OneWire库的搜索功能来查找连接到总线上的所有设备。

  3. 发送命令:通过1-Wire协议发送命令,如开始温度转换的命令。

  4. 数据读取:通过1-Wire协议读取设备发送的数据。

  5. 数据处理:处理原始数据,计算实际温度值。

  6. 错误处理:检查通信错误和数据一致性,确保读取的温度值是准确的。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号