ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ESP32读取DS18B20温度

2021-12-08 23:02:55  阅读:399  来源: 互联网

标签:VCC 读取 DS18B20 sensors ESP32 Serial void


最近收到DS18B20温度探头传感器,如图:

 感觉是一件比较简单的温度传感器,三根线:

不带屏蔽输出引线:红色(VCC),黄色(白色)(DATA),黑色(GND)

带屏蔽的输出引线:红色(VCC电源线),黄色(DATA信号线),白色(GND地线)

我的是带屏蔽线的,所以红色VCC接ESP32的VIN口(5V供电),白色GND接ESP32的GND,黄色信号线接ESP32的D4。

Arduino引入库

两个库均在GitHub上,可以在release标签页中下载最新项目文件。
OneWire库
项目地址:https://github.com/PaulStoffregen/OneWire

DallasTemperature库
项目地址:https://github.com/milesburton/Arduino-Temperature-Control-Library

可以将库文件复制到arduino的libraries目录下,也可以打开arduino ide,选择项目 > 加载库 > 添加一个 .ZIP库,导入两个库。

#include <OneWire.h>
#include <DallasTemperature.h>


// 定义DS18B20数据口连接ESP32的4号IO上
#define ONE_WIRE_BUS 4

// 初始连接在单总线上的单总线设备
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // 设置串口通信波特率
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  // 初始库
  sensors.begin();
}

void loop(void)
{
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // 发送命令获取温度
  Serial.println("DONE");
  
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));
  delay(500);  
}

一切都想的太简单!!!读出的温度一直显示0度。

必须要上拉一个4.7K的电阻,如图接线:

也就是说,需要在VCC(5V)和接D4的线之间接一个4.7K上拉电阻才行,但我家里没4.7K的,只能并联两个10K电阻来解决问题,接上拉电阻后,成功读到温度数据。

参考:

在Arduino中使用DS18B20温度传感器(基于OneWire和DallasTemperature库)

ESP8266--驱动DS18B20

标签:VCC,读取,DS18B20,sensors,ESP32,Serial,void
来源: https://www.cnblogs.com/codeit/p/15664816.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有