在本教程中,我们将学习如何使用ESP32 Devkit开发板接口DS18B20。如果要使用ESP32构建基于Web的温度监控系统,则DS18B20是温度传感器的绝佳选择。了解ESP32 DS18B20温度传感器接口的工作原理,设置Arduino IDE,显示LCD上的温度。此外,您可以设计一个简单的ESP32 Web服务器,该Web服务器连续显示温度。
关于DS18B20温度传感器的简要说明
我们已经在几个早期的项目中使用了DS18B20温度传感器,涉及Arduino,Raspberry PI和ESP8266。DS18B20是来自Maxim集成的数字温度传感器,可以测量-55的温度0.c至+1250.C。[ESP32初学者的项目]
与其他数字传感器不同,这些传感器经常通过我沟通2C或SPI,DS18B20温度传感器使用1线通信与微控制器交互。
如果您不熟悉1线总线,它是由达拉斯半导体开发的通信总线,并且顾名思义,它只需要一根电线与处理器(井,1个数据线和1个GND线)通信。
此外,DS18B20温度传感器可以从数据线本身(称为寄生电源)导出其电力,而无需提供任何外部电源(通过VDD.别针)。
由于DS18B20是数字温度传感器,因此温度数据存储在片上EEPROM中。DS18B20的其他一些重要特征是:
- 用户可配置分辨率在9位和12位之间。
- 一个64位串行代码,对每个DS18B20传感器是唯一的。
DS18B20的针图和引脚描述
下图显示了PIN图,表下表显示了DS18B20的引脚描述。
DS18B20的PIN | 描述 |
GND. | 地面 |
DQ. | 输入/输出数据。必须拉高。 |
V.DD. | 电源供应 |
电源DS18B20的不同方式
我已经在Arduino DS18B20教程中讨论过这一点。有几种方法可以在其中通电DS18B20:
- 正常方式(使用vDD.的)
- 寄生电力
参考Arduino DS18B20教程了解更多信息。我将在此ESP32 DS18B20教程中正常电源为DS18B20。
ESP32 DS18B20接口
既然我们已经看过关于DS18B20的一点点,现在让我们继续了解如何使用ESP32接口DS18B20。首先要记住的是DS18B20是数字传感器。要记住的下一个重要事项是它使用1线通信。
这对ESP32的意思是什么?这意味着我们可以使用ESP32的任何数字GPIO引脚发送和接收DS18B20的数据,我们只需要一根电线进行适当的通信。
所需的组件
- ESP32 Devkit开发板
- DS18B20温度传感器
- 16×2 LCD
- PCF8574 I2C LCD模块
- 面包板
- 连接电线
- 微USB电缆
电路原理图
以下图像显示了ESP32和DS18B20之间的连接。首先,我发电DS18B20具有正常功率。所以,vDD.DS18B20连接到ESP32板的VIN。
笔记:DS18B20的电源范围为3 V至5.5 V.因此,您还可以使用ESP32板的3.3V电源供电DS18B20。
接下来,GND引脚连接到ESP32的任何GND引脚。最后,DQ引脚。首先,该引脚应拉高。因此,我在DQ引脚和3.3V之间连接了4.7kΩ电阻。
笔记:上拉电压可以在3V至5.5 V之间的任何位置。
现在,DQ引脚连接到ESP32的GPIO 16,在ESP32 Devkit板上标记为Rx2。
准备Arduino IDE
您需要下载几个库,以正确地与DS18B20通信。首先与1线总线有关。转到工具 - >管理库......在Arduino IDE中。
在搜索栏中,输入“OneWire”。滚动选项并通过Jim Studt,Paul Stoffregan等人安装“OneWire”库。
下一个库与DS18B20设备本身相关联。搜索“达拉斯”并将“Dallastemperature”乘Miles Burton等人。
在串行监视器上显示温度
在制作适当的连接和如上所述安装必要的库后,我们现在将看到如何使用ESP32从DS18B20读取温度数据并显示串行监视器上的结果。
代码
我写了一个简单的代码,它将初始化GPIO 16上的1线通信,将该一个线通信分配给DS18B20传感器并读取温度数据。
要查看结果,我只是使用串行监视器在摄氏度中打印温度值。
以下图像显示串行监视器的屏幕截图,该屏幕截图每3秒连续打印温度读数。
ESP32 DS18B20与i2C LCD.
在串行监视器上显示温度值仅用于测试连接和代码本身。如果您想要更实用的“嵌入式系统”应用程序,那么使用任何类型的显示模块(OLED,16×2字符LCD,诺基亚5110 LCD,图形LCD等)以查看温度读数是最简单的方法。
为了保持简单,我使用常规的16×2字符LCD显示模块与PCF8574 I2C LCD模块相结合,从ESP32 DS18B20接口显示温度读数。
我做了一个专门的教程,了解如何使用一世2C液晶显示屏与ESP32。查看用于深入信息的教程。我还讨论了您下载的必要库,以在该教程中成功将I2C LCD与ESP32连接。
笔记:我还解释了如何获得我的从地址2C的CLCD模块在该教程中。这一步非常重要。
电路原理图
您需要的附加组件是16×2 LCD显示器和I2C LCD模块(基于PCF8574)。插件在16×2 LCD显示屏后面的I2C LCD模块。I2C LCD模块仅需要四个连接(其中两个是电源,两个用于数据)。
在以下电路图中显示了ESP32和I2C LCD模块以及ESP32和DS18B20温度传感器之间的所有必要连接。
代码
具有I2C LCD的ESP32 DS18B20接口的代码非常简单。传感器的初始化部分类似于先前的代码。另外添加LCD相关代码。
结论
在此处实施了初学者关于接口DS18B20温度传感器的教程。您学习了关于DS18B20的一些基本信息,ESP32 DS18B20接口的工作原理,用于与DS18B20通信的必要库,如何在串行输出上显示温度,以及如何将I2C LCD与ESP32连接并显示温度读数。
只要考虑使用ESP32和DS18B20的基于Web的温度监控系统,我将使用Web服务器的代码不久更新此页面。
一个反应
亲爱的朋友,
在上面的草图中它不应该是“#define ds18b20pin 21”?
最好的,
赫里奥。