首页

ESP32 DS18B20 Tutorial |带ESP32的DS18B20温度传感器

在本教程中,我们将学习如何接口DS18B20与ESP32 DevKit开发板。如果你想使用ESP32构建一个基于Web的温度监测系统,那么DS18B20是温度传感器的最佳选择。了解ESP32 DS18B20温度传感器接口工作原理,安装Arduino IDE,在LCD上显示温度。此外,还可以设计一个简单的ESP32 Web服务器,连续显示温度。

ESP32-DS18B20-Image-1

DS18B20温度传感器简介

我们已经在Arduino、Raspberry Pi和ESP8266等早期项目中使用了DS18B20温度传感器。DS18B20是Maxim Integrated公司的数字温度传感器,可以测量-55范围内的温度0C + 1250C。

不像其他数字传感器,通常通过I2C或SPI, DS18B20温度传感器使用单线通信与微控制器交互。

Arduino DS18B20温度传感器

如果你不熟悉1- wire总线,它是由Dallas Semiconductor开发的一种通信总线,顾名思义,它只需要一条线与处理器通信(好吧,1数据线和1 GND线)。

此外,DS18B20温度传感器可以从数据线本身获得电源(称为寄生电源),而不需要提供任何外部电源(通过VDD销)。

由于DS18B20是数字温度传感器,温度数据存储在片上EEPROM中。DS18B20的其他一些重要特性是:

  • 用户可配置的分辨率之间的9位和12位。
  • 一个64位串行代码,它是每个DS18B20传感器唯一的。

DS18B20引脚图和引脚说明

下图显示了DS18B20的引脚图,下表显示了DS18B20的引脚描述。

Arduino DS18B20温度传感器引脚

DS18B20的销 描述
接地 地面
DQ 输入/输出数据。必须拉高。
VDD 电力供应

DS18B20的不同供电方式

我已经在Arduino DS18B20教程中讨论过了。有几种方法可以使DS18B20启动:

  • 正常方式(使用VDD
  • 寄生虫的权力

Arduino DS18B20教程为更多的信息。我将在这篇ESP32 DS18B20教程中正常开机DS18B20。

ESP32 DS18B20接口

现在我们已经了解了一点DS18B20,现在让我们继续了解如何将DS18B20与ESP32接口。首先要记住的是DS18B20是一个数字传感器。要记住的下一件重要的事情是它使用的是单线通信。

这对ESP32来说意味着什么?这意味着我们可以使用ESP32的任何数字GPIO管脚来发送和接收DS18B20的数据,我们只需要一条线来进行正确的通信。

组件的要求

  • ESP32 DevKit开发板
  • DS18B20温度传感器
  • 16×2液晶
  • PCF8574 I2C LCD模块
  • 电路试验板
  • 连接电线
  • 微型USB电缆

线路图

ESP32与DS18B20的连接方式如下图所示。首先,我用正常电源给DS18B20供电。所以,VDDDS18B20的接口连接ESP32 Board的VIN。

注意:DS18B20的电源范围从3v到5.5 V。因此,您也可以使用来自ESP32板的3.3V电源为DS18B20供电。

然后将GND引脚连接到ESP32的任意一个GND引脚上。最后,DQ引脚。首先,这个引脚应该拉高。所以,我连接了一个4.7 KΩ电阻之间的DQ引脚和3.3V。

注意:上拉电压可以在3v到5.5 V之间的任何地方。

现在DQ引脚已经连接到ESP32的GPIO 16上,该GPIO 16在ESP32 DevKit Board上被标记为RX2。

ESP32-DS18B20-Circuit

准备Arduino IDE

要正确地与DS18B20通信,需要下载几个库。首先与单线总线有关。进入Arduino IDE的Tools -> Manage Libraries…

ESP32-DS18B20-Arduino-1

在搜索栏中,输入“onewire”。浏览选项并安装由Jim Studt, Paul Stoffregan Et Al编写的“OneWire”库。

ESP32-DS18B20-Arduino-2

下一个库与DS18B20设备本身相关联。搜索“dallas”,安装Miles Burton Et Al的“dallasttemperature”。

ESP32-DS18B20-Arduino-3

在串行显示器显示温度

在进行了正确的连接并安装了上面提到的必要的库之后,我们现在将看到如何使用ESP32从DS18B20读取温度数据并在串行监视器上显示结果。

代码

我写了一个简单的代码,它将初始化GPIO 16上的单线通信,将这个单线通信分配给DS18B20传感器,并读取温度数据。

为了查看结果,我简单地使用了串行监视器来打印以摄氏度为单位的温度值。

ESP32-DS18B20-Image-3

下面的图片显示了串行监视器的屏幕截图,它是连续打印温度读数每3秒。

ESP32-DS18B20-Arduino-4

ESP32 DS18B20带I2C液晶

在串行监视器上显示温度值对于测试连接和代码本身是有用的。如果你想要一个更实用的“嵌入式系统”应用,那么使用任何类型的显示模块(OLED, 16×2字符液晶,诺基亚5110液晶,图形液晶等)查看温度读数是最简单的方法。

为了简单起见,我使用了一个常规的16×2字符液晶显示模块和PCF8574 I2C液晶显示模块来显示来自ESP32 DS18B20接口的温度读数。

我做了一个专门的教程如何使用2C液晶显示器,ESP32.查看该教程以获得深入的信息。在该教程中,我还讨论了成功连接I2C LCD和ESP32所需的库。

注意:我还解释了如何获取I的Slave地址2C LCD模块。这一步非常重要。

线路图

您需要的附加组件是16×2液晶显示器和I2C液晶模块(基于PCF8574)。在16×2 LCD显示屏背面插入I2C LCD模块。I2C LCD Module只需要4路连接(2路供电,2路数据)。

ESP32与I2C液晶显示模块、ESP32与DS18B20温度传感器之间的所有必要连接如下图所示。

ESP32-DS18B20-I2C-LCD-Circuit

代码

ESP32 DS18B20与I2C LCD接口的代码非常简单。传感器的初始化部分类似于前面的代码。只增加了LCD相关代码。

ESP32-DS18B20-Image-2

结论

DS18B20温度传感器与ESP32接口的入门教程在这里实现。学习了一些关于DS18B20的基本知识,ESP32 DS18B20接口的工作原理,与DS18B20通信的必要库,如何在Serial Output上显示温度,以及如何将I2C LCD与ESP32连接显示温度读数。

至于考虑使用ESP32和DS18B20的基于Web的温度监测系统,我将很快用Web服务器的代码更新这个页面。

一个回应

  1. 亲爱的朋友,

    在上面的草图中,它不应该是“#define DS18B20PIN 21”?

    最好的
    日光反射信号器。

留下一个回复

您的电子邮件地址将不会被公布。必填字段已标记

Electronicshub图标
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu