在本教程中,我们将学习如何接口DS18B20与ESP32 DevKit开发板。如果你想使用ESP32构建一个基于Web的温度监测系统,那么DS18B20是温度传感器的最佳选择。了解ESP32 DS18B20温度传感器接口工作原理,安装Arduino IDE,在LCD上显示温度。此外,还可以设计一个简单的ESP32 Web服务器,连续显示温度。
DS18B20温度传感器简介
我们已经在Arduino、Raspberry Pi和ESP8266等早期项目中使用了DS18B20温度传感器。DS18B20是Maxim Integrated公司的数字温度传感器,可以测量-55范围内的温度0C + 1250C。
不像其他数字传感器,通常通过I2C或SPI, DS18B20温度传感器使用单线通信与微控制器交互。
如果你不熟悉1- wire总线,它是由Dallas Semiconductor开发的一种通信总线,顾名思义,它只需要一条线与处理器通信(好吧,1数据线和1 GND线)。
此外,DS18B20温度传感器可以从数据线本身获得电源(称为寄生电源),而不需要提供任何外部电源(通过VDD销)。
由于DS18B20是数字温度传感器,温度数据存储在片上EEPROM中。DS18B20的其他一些重要特性是:
- 用户可配置的分辨率之间的9位和12位。
- 一个64位串行代码,它是每个DS18B20传感器唯一的。
DS18B20引脚图和引脚说明
下图显示了DS18B20的引脚图,下表显示了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。
准备Arduino IDE
要正确地与DS18B20通信,需要下载几个库。首先与单线总线有关。进入Arduino IDE的Tools -> Manage Libraries…
在搜索栏中,输入“onewire”。浏览选项并安装由Jim Studt, Paul Stoffregan Et Al编写的“OneWire”库。
下一个库与DS18B20设备本身相关联。搜索“dallas”,安装Miles Burton Et Al的“dallasttemperature”。
在串行显示器显示温度
在进行了正确的连接并安装了上面提到的必要的库之后,我们现在将看到如何使用ESP32从DS18B20读取温度数据并在串行监视器上显示结果。
代码
我写了一个简单的代码,它将初始化GPIO 16上的单线通信,将这个单线通信分配给DS18B20传感器,并读取温度数据。
为了查看结果,我简单地使用了串行监视器来打印以摄氏度为单位的温度值。
下面的图片显示了串行监视器的屏幕截图,它是连续打印温度读数每3秒。
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接口的代码非常简单。传感器的初始化部分类似于前面的代码。只增加了LCD相关代码。
结论
DS18B20温度传感器与ESP32接口的入门教程在这里实现。学习了一些关于DS18B20的基本知识,ESP32 DS18B20接口的工作原理,与DS18B20通信的必要库,如何在Serial Output上显示温度,以及如何将I2C LCD与ESP32连接显示温度读数。
至于考虑使用ESP32和DS18B20的基于Web的温度监测系统,我将很快用Web服务器的代码更新这个页面。
一个回应
亲爱的朋友,
在上面的草图中,它不应该是“#define DS18B20PIN 21”?
最好的
日光反射信号器。