0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将DHT11与树莓派连接在16x2 LCD屏幕上显示温度和湿度的值

科技观察员 来源:circuitdigest 作者:阿斯文斯·拉吉 2022-11-14 16:53 次阅读

温度和湿度是在任何环境中被监控的最常见参数。有大量的传感器可供选择来测量温度和湿度,但最常用的是DHT11,因为它具有不错的测量范围和精度。它还可以与单引脚通信配合使用,因此非常容易与微控制器微处理器连接。在本教程中,我们将学习如何将流行的DHT11传感器与Raspberry Pi连接,并在16x2 LCD屏幕上显示温度和湿度的值。

DHT11传感器概述:

DHT11传感器可以测量具有以下规格的相对湿度和温度

Temperature Range: 0-50°C

Temperature Accuracy: ±2 °C

Humidity Range: 20-90% RH

Humidity Accuracy: ±5 %

pYYBAGNyAg-AfdPQAACCHoW3vQ8682.jpg

DHT11传感器有模块形式或传感器形式。在本教程中,我们使用传感器的模块形式,两者之间的唯一区别是,在模块形式中,传感器有一个滤波电容器和一个连接到传感器输出引脚的上拉电阻。因此,如果您单独使用传感器,请确保添加这两个组件。

DHT11传感器的工作原理

DHT11传感器配有蓝色或白色外壳。在这个外壳内,我们有两个重要的组件,可以帮助我们感知相对湿度和温度。第一个组件是一对电极;这两个电极之间的电阻由保湿基板决定。因此,测得的电阻与环境的相对湿度成反比。相对湿度越高,电阻值越低,反之亦然。另请注意,相对湿度与实际湿度不同。相对湿度测量空气中的含水量相对于空气中的温度。

另一个元件是表面贴装的NTC热敏电阻。术语NTC代表负温度系数,温度升高时电阻值将减小

先决条件:

假设您的树莓派已经使用操作系统刷新并能够连接到互联网。如果没有,请先按照树莓派入门教程进行操作,然后再继续。

还假设您可以通过终端窗口或其他应用程序访问您的 pi,通过这些应用程序您可以编写和执行 python 程序并使用终端窗口。

在Raspberry Pi上安装Adafruit LCD库:

温度和湿度值将显示在16 * 2 LCD显示屏上。Adafruit 为我们提供了一个库,可以在 4 位模式下轻松操作此 LCD,因此让我们通过打开终端窗口 Pi 并按照以下步骤将其添加到我们的树莓派中。

第 1 步:使用以下行在树莓派上安装 git。Git允许您克隆 Github 上的任何项目文件,并在 Raspberry pi 上使用它。我们的库在 Github 上,所以我们必须安装 git 才能将该库下载到 pi 中。

apt-get install git

第 2 步:以下行链接到存在库的 GitHub 页面,只需执行该行即可克隆 Pi 主目录上的项目文件

git clone git://github.com/adafruit/Adafruit_Python_CharLCD

第 3 步:使用以下命令更改目录行,进入我们刚刚下载的项目文件。命令行如下

cd Adafruit_Python_CharLCD

第 4 步:目录中会有一个名为 setup.py 的文件,我们必须安装它,以安装库。使用以下代码安装库

sudo python setup.py install

也就是说,库应该已成功安装。现在同样,让我们继续安装同样来自Adafruit的DHT库。

在Raspberry Pi上安装Adafruit DHT11库:

DHT11传感器采用单线制原理。温度和湿度值由传感器检测,然后作为串行数据传输通过输出引脚传输。然后,我们可以通过使用MCU/MPU上的I/O引脚来读取这些数据。要了解如何读取这些值,您必须通读DHT11传感器的数据表,但现在为了简单起见,我们将使用一个库与DHT11传感器进行通信。

Adafruit 提供的 DHT11 库也可用于DHT11、DHT22和其他单线温度传感器。安装 DHT11 库的过程也类似于安装 LCD 库的步骤。

cd Adafruit_Python_DHTsudo apt-get install build-essential python-devsudo python setup.py install

完成后,您将在我们的树莓派上成功安装这两个库。现在我们可以继续进行硬件连接。

威廉希尔官方网站 图:

下面给出了将DH11与Raspberry Pi连接的完整威廉希尔官方网站 图,它是使用Fritzing构建的。遵循连接并建立威廉希尔官方网站

poYBAGNyAhKAPqKMAADtar2ET4s918.png

LCD和DHT11传感器均采用+5V电源供电,因此我们使用Raspberry Pi上的5V引脚为两者供电。DHT11传感器的输出引脚上使用值为1k的上拉电阻,如果您使用的是模块,则可以避免使用此电阻。

在LCD的Vee引脚上增加了一个10k的微调器电位器,以控制LCD的对比度水平。除此之外,所有连接都非常简单。但是记下您使用哪些 GPIO 引脚来连接引脚,因为我们的程序将需要。下面的图表应该允许您计算出 GPIO 引脚编号。

pYYBAGNyAhSAZJYoAACdZFT2UWU965.png

使用图表并根据威廉希尔官方网站 图进行连接。我使用面包板和跳线进行连接。由于我使用了DHT11模块,因此我将其直接连接到Raspberry Pi。我的硬件如下所示

poYBAGNyAhWAQAOzAAD4-DhPH5M444.jpg

DHT11传感器的Python编程

我们必须编写一个程序来从DHT11传感器读取温度和湿度值,然后在LCD上显示相同的值。由于我们已经下载了LCD和DHT11传感器的库,因此代码应该非常简单。python 完整程序可以在本页末尾找到,但您可以进一步阅读以了解该程序的工作原理。

我们必须将LCD库和DHT11库导入我们的程序才能使用与之相关的功能。由于我们已经将它们下载并安装在我们的 Pi 上,因此我们可以简单地使用以下行来导入它们。我们还导入时间库以使用延迟功能。

import time #import time for creating delay

import Adafruit_CharLCD as LCD #Import LCD library

import Adafruit_DHT #Import DHT Library for sensor

接下来,我们必须指定传感器连接到哪些引脚以及使用哪种类型的温度传感器。变量sensor_name分配给Adafruit_DHT。DHT11,因为我们在这里使用 DHT11 传感器。传感器的输出引脚连接到树莓派的 GPIO 17,因此我们将 17 分配给sensor_pin变量,如下所示。

sensor_name = Adafruit_DHT.DHT11 #we are using the DHT11 sensor

sensor_pin = 17 #The sensor is connected to GPIO17 on Pi

同样,我们还必须定义LCD连接到哪些GPIO引脚。在这里,我们在4 位模式下使用 LCD,因此我们将有四个数据引脚和两个控制引脚连接到 pi 的 GPIO 引脚。此外,如果我们也希望控制背光,您可以将背光引脚连接到 GPIO 引脚。但是现在我不使用它,所以我为它分配了 0。

lcd_rs = 7 #RS of LCD is connected to GPIO 7 on PI

lcd_en = 8 #EN of LCD is connected to GPIO 8 on PI

lcd_d4 = 25 #D4 of LCD is connected to GPIO 25 on PI

lcd_d5 = 24 #D5 of LCD is connected to GPIO 24 on PI

lcd_d6 = 23 #D6 of LCD is connected to GPIO 23 on PI

lcd_d7 = 18 #D7 of LCD is connected to GPIO 18 on PI

lcd_backlight = 0 #LED is not connected so we assign to 0

我们从 Adafruit 下载的 LCD 库可用于所有类型的特色 LCD 显示器。在我们的项目中,我们使用 16*2 LCD 显示屏,因此我们在变量中提到了行数和列数,如下所示。

lcd_columns = 16 #for 16*2 LCD

lcd_rows = 2 #for 16*2 LCD

现在,我们已经声明了LCD引脚以及LCD的行数和列数,我们可以使用以下行初始化LCD显示,该行将所有必需的信息发送到库。

lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,

lcd_columns, lcd_rows, lcd_backlight) #Send all the pin details to library

为了启动程序,我们使用 lcd.message() 函数显示一条小的介绍消息,然后延迟 2 秒以使消息可读。用于在 2 上打印德·行命令 n 可以使用如下所示

lcd.message('DHT11 with Pi n -CircuitDigest') #Give a intro message

time.sleep(2) #wait for 2 secs

最后,在我们的while循环中,我们应该从传感器读取温度和湿度的值,并每2秒在LCD屏幕上显示一次。while循环中的完整程序如下所示

while 1: #Infinite Loop

湿度, 温度 = Adafruit_DHT.read_retry(sensor_name, sensor_pin) 从传感器#read并将各自的值保存在温度和湿度变量中

lcd.clear() #Clear the LCD screen

lcd.message ('Temp = %.1f C' % temperature) # Display the value of temperature

lcd.message ('nHum = %.1f %%' % humidity) #Display the value of Humidity

time.sleep(2) #Wait for 2 sec then update the values

我们可以使用下面的这一行轻松地从传感器获取温度和湿度值。如您所见,它返回两个存储在可变湿度和温度中的值。sensor_name和sensor_pin详细信息作为参数传递;这些值在程序开始时更新

湿度,温度 = Adafruit_DHT.read_retry(sensor_name, sensor_pin)

要在LCD屏幕上显示变量名称,我们可以使用&d,%c等标识符。在这里,由于我们显示的浮点数在小数点后只有一个数字,我们使用标识符 %.1f 来显示可变温度和湿度中的值

lcd.message ('Temp = %.1f C' % temperature)

lcd.message ('nHum = %.1f %%' % humidity)

使用树莓派测量湿度和温度:

按照威廉希尔官方网站 图进行连接并安装所需的库。然后启动本页末尾给出的 python 程序。您的LCD应显示介绍消息,然后显示当前温度和湿度值,如下图所示。

poYBAGNyAhiAZyjwAAEskrSOEiA898.jpg

如果您发现LCD没有显示任何内容,请检查python shell窗口是否显示任何错误,如果没有显示错误,请再次检查您的连接并调整电位计以改变LCD的对比度水平,并检查屏幕上是否有任何内容。

#Program to read the values of Temp and Hum from the DHT11 sensor and display them on the LCD

import time #import time for creating delay

import Adafruit_CharLCD as LCD #Import LCD library

import Adafruit_DHT #Import DHT Library for sensor


sensor_name = Adafruit_DHT.DHT11 #we are using the DHT11 sensor

sensor_pin = 17 #The sensor is connected to GPIO17 on Pi



lcd_rs = 7 #RS of LCD is connected to GPIO 7 on PI

lcd_en = 8 #EN of LCD is connected to GPIO 8 on PI

lcd_d4 = 25 #D4 of LCD is connected to GPIO 25 on PI

lcd_d5 = 24 #D5 of LCD is connected to GPIO 24 on PI

lcd_d6 = 23 #D6 of LCD is connected to GPIO 23 on PI

lcd_d7 = 18 #D7 of LCD is connected to GPIO 18 on PI

lcd_backlight = 0 #LED is not connected so we assign to 0


lcd_columns = 16 #for 16*2 LCD

lcd_rows = 2 #for 16*2 LCD


lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,

lcd_columns, lcd_rows, lcd_backlight) #Send all the pin details to library


lcd.message('DHT11 with Pi n -CircuitDigest') #Give a intro message


time.sleep(2) #wait for 2 secs


while 1: #Infinite Loop



humidity, temperature = Adafruit_DHT.read_retry(sensor_name, sensor_pin) #read from sensor and save respective values in temperature and humidity varibale

lcd.clear() #Clear the LCD screen

lcd.message ('Temp = %.1f C' % temperature) # Display the value of temperature

lcd.message ('nHum = %.1f %%' % humidity) #Display the value of Humidity


time.sleep(2) #Wait for 2 sec then update the values


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2551

    文章

    51084

    浏览量

    753412
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4426

    浏览量

    167458
  • DHT11
    +关注

    关注

    19

    文章

    277

    浏览量

    57589
收藏 人收藏

    评论

    相关推荐

    STM32F103试用体验:LCD显示DHT11测量实验

    实验名称:LCD显示DHT11测量温湿度 实验目的:通过开发板连接DHT11模块实时测量环境
    发表于 11-09 10:41 1.1w次阅读

    如何将16x2 LCD与Atmega16 AVR连接显示简单的欢迎消息

    在本教程中,我们将了解如何将 16x2 LCD 与 Atmega16 AVR 微控制器连接显示
    的头像 发表于 11-11 17:29 3161次阅读
    <b class='flag-5'>如何将</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>与Atmega<b class='flag-5'>16</b> AVR<b class='flag-5'>连接</b>并<b class='flag-5'>显示</b>简单的欢迎消息

    MPU6050与Raspberry Pi连接显示16x2 LCD的步骤

    今天在本文中,我们将将此MPU6050与Raspberry Pi连接,并显示16x2 LCD
    的头像 发表于 11-17 16:42 3451次阅读
    <b class='flag-5'>将</b>MPU6050与Raspberry Pi<b class='flag-5'>连接</b>并<b class='flag-5'>显示</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b><b class='flag-5'>值</b>的步骤

    如何将柔性传感器与树莓连接并在LCD屏幕显示

    在这个项目中,我们学习如何将柔性传感器与树莓连接并在LCD
    的头像 发表于 12-31 09:33 3933次阅读
    <b class='flag-5'>如何将</b>柔性传感器与<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>连接</b>并在<b class='flag-5'>LCD</b><b class='flag-5'>屏幕</b><b class='flag-5'>上</b><b class='flag-5'>显示</b>其<b class='flag-5'>值</b>

    树莓派上装LCD 16x2显示

    16x2 液晶显示屏,它有16个数据引脚,但是我们只用6个就可以了。市面上的LCD 16x2 液晶显示
    发表于 01-15 10:53

    【STM32F103试用体验】LCD显示DHT11测量实验

    `近期家人生病, 忙于求医照料, 只能断断续续抽时间做实验.实验名称: LCD显示DHT11测量温湿度实验目的: 通过开发板连接
    发表于 10-22 08:40

    Arduino开发板使用DHT11湿度传感器的方法 精选资料分享

    计,并将其显示LCD。所需的组件● Arduino UNO开发板● 1602液晶屏● DHT11 /
    发表于 07-13 06:58

    使用DHT11和STM32单片机进行湿度温度监控

    测量0°C至50°C的温度,精度为1°C。 它可以测量20%至90%的湿度,精度为1%。我们将把DHT11湿度温度传感器与STM32f10
    发表于 03-01 06:24

    DHT11湿度传感器在12864LCD显示

    DHT11湿度传感器在12864LCD显示
    发表于 06-22 15:56 92次下载

    如何将DHT11湿度温度传感器与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口

    ,并将其显示16×2 LCD显示。我在这里也会做同样的事情,但是这次我将把
    的头像 发表于 05-14 10:47 1.2w次阅读

    DHT11与PIC16F877A连接进行温度湿度的测量

    在本文中,我们学习如何将DHT11 与 PIC16F87A连接,这是一个 8 位 PIC 微控制器。我们将使用这个微控制器通过
    的头像 发表于 08-22 16:07 2380次阅读
    <b class='flag-5'>将</b><b class='flag-5'>DHT11</b>与PIC<b class='flag-5'>16</b>F877A<b class='flag-5'>连接</b>进行<b class='flag-5'>温度</b>和<b class='flag-5'>湿度</b>的测量

    DHT11温度湿度传感器与STM32F103C8连接的方法

    今天在本教程中,我们学习如何将流行的 DHT11 温度湿度传感器与 STM32 微控制器连接
    的头像 发表于 08-31 15:59 2w次阅读
    <b class='flag-5'>将</b><b class='flag-5'>DHT11</b><b class='flag-5'>温度</b>和<b class='flag-5'>湿度</b>传感器与STM32F103C8<b class='flag-5'>连接</b>的方法

    FPGA在OLED显示DHT11数据

    这是FPGA之旅设计的第十三例啦,本例是一个综合性的例程,基于OLED屏幕显示,和DHT11湿度采集,
    的头像 发表于 09-09 10:33 1766次阅读

    DHT11温度湿度传感器打印到I2C 16x02 LCD

    电子发烧友网站提供《DHT11温度湿度传感器打印到I2C 16x02 LCD.zip》资料免费
    发表于 11-23 11:50 0次下载
    <b class='flag-5'>DHT11</b><b class='flag-5'>温度</b>和<b class='flag-5'>湿度</b>传感器打印到I<b class='flag-5'>2</b>C <b class='flag-5'>16x</b>02 <b class='flag-5'>LCD</b>

    如何将16x2 LCD与Raspberry pi4连接

    电子发烧友网站提供《如何将16x2 LCD与Raspberry pi4连接.zip》资料免费下载
    发表于 06-19 11:45 0次下载
    <b class='flag-5'>如何将</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>与Raspberry pi4<b class='flag-5'>连接</b>