- DHT11传感器概述:
- 先决条件:
- 在Raspberry Pi上安装Adafruit LCD库:
- 在Raspberry Pi上安装Adafruit DHT11库:
- 电路原理图:
- DHT11传感器的Python编程:
- 使用Raspberry Pi测量湿度和温度:
温度和湿度是在任何环境中要监视的最常见参数。有很多传感器可以测量温度和湿度,但是最常用的是DHT11,因为它的测量范围和精度都不错。它也可以通过一个引脚进行通信,因此很容易与微控制器或微处理器接口。在本教程中,我们将学习如何将流行的DHT11传感器与Raspberry Pi连接起来,以及如何在16x2的LCD屏幕上显示温度和湿度的值。我们已经使用它来构建IoT Raspberry Pi气象站。
DHT11传感器概述:
DHT11传感器可以按照以下规格测量相对湿度和温度
温度范围:0-50°C 温度精度:±2°C 湿度范围:20-90%RH 湿度精度:±5%
DHT11传感器有模块形式或传感器形式。在本教程中,我们使用传感器的模块形式,两者之间的唯一区别是,在模块形式中,传感器具有一个滤波电容器和一个连接到传感器输出引脚的上拉电阻。因此,如果仅使用传感器,请确保添加了这两个组件。还学习DHT11与Arduino的接口。
DHT11 Sensor如何工作:
DHT11传感器带有蓝色或白色外壳。在此外壳内,我们有两个重要组件,可帮助我们感应相对湿度和温度。第一个组件是一对电极;这两个电极之间的电阻由防潮基材决定。因此,测得的电阻与环境的相对湿度成反比。相对湿度越高,电阻值越低,反之亦然。另请注意,相对湿度与实际湿度不同。相对湿度测量相对于空气温度的空气中的水含量。
另一个组件是表面安装的NTC热敏电阻。NTC代表负温度系数,对于温度升高,电阻值将减小
先决条件:
假定您的Raspberry Pi已经使用操作系统进行了刷新,并且能够连接到Internet。如果不是这样,请在继续之前遵循Raspberry Pi入门教程。
还假定您可以通过终端窗口或通过其他应用程序访问pi,通过这些应用程序,您可以编写和执行python程序并使用终端窗口。
在Raspberry Pi上安装Adafruit LCD库:
温度和湿度的值将显示在16 * 2 LCD显示屏上。Adafruit为我们提供了一个库,可以轻松地以4位模式操作此LCD,因此,我们通过打开终端窗口Pi并按照以下步骤将其添加到Raspberry Pi中。
步骤1:使用以下代码行在您的Raspberry Pi上安装git。Git允许您在Github上克隆任何项目文件,并在Raspberry pi上使用它。我们的库位于Github上,因此我们必须安装git才能将该库下载到pi中。
apt-get安装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安装
就是说,该库应该已经成功安装。现在,类似地,让我们继续安装同样来自Adafruit的DHT库。
在Raspberry Pi上安装Adafruit DHT11库:
DHT11 Sensor采用单线系统原理。温度和湿度的值由传感器感测,然后作为串行数据通过输出引脚传输。然后,我们可以使用MCU / MPU上的I / O引脚读取这些数据。要了解如何读取这些值,您必须通读DHT11传感器的数据表,但是为了简化起见,我们现在将使用一个库与DHT11传感器进行通讯。
Adafruit提供的DHT11库可用于DHT11,DHT22和其他单线温度传感器。安装DHT11库的过程也类似于安装LCD库的过程。唯一会改变的行是保存DHT库的GitHub页面的链接。
在终端上一一输入四个命令行以安装DHT库
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py安装
完成后,您将在Raspberry Pi上成功安装两个库。现在我们可以进行硬件连接了。
电路原理图:
DH11与Raspberry pi接口的完整电路图如下所示,它是使用Fritzing构建的。遵循连接并进行电路
无论是LCD和DHT11传感器的作品与+ 5V电源,所以我们使用的树莓派的5V引脚功率两者。DHT11传感器的输出引脚上使用值1k的上拉电阻,如果使用模块,则可以避免使用该电阻。
将10k的微调电位计添加到LCD的Vee引脚,以控制LCD的对比度。除此之外,所有连接都非常简单。但是请记下您正在使用哪些GPIO引脚来连接这些引脚,因为我们的程序需要这样做。下表可以帮助您确定GPIO引脚号。
使用图表并根据电路图进行连接。我使用了一块面包板和跳线来建立连接。由于我使用了DHT11模块,因此将其直接连接到Raspberry Pi。我的硬件如下所示
DHT11传感器的Python编程:
我们必须编写一个程序以从DHT11传感器读取温度和湿度的值,然后在LCD上显示该值。由于我们已经下载了用于LCD和DHT11传感器的库,因此代码应该非常简单。该蟒蛇完整的程序可以在这个页面的末尾找到,但你可以阅读进一步理解程序是如何工作的。
我们必须将LCD库和DHT11库导入到我们的程序中才能使用与其相关的功能。由于我们已经在Pi上下载并安装了它们,因此我们可以简单地使用以下几行来导入它们。我们还导入时间库以使用延迟功能。
导入时间#导入创建延迟的时间 导入Adafruit_CharLCD作为LCD #导入LCD库导入Adafruit_DHT#导入传感器的DHT库
接下来,我们必须指定传感器连接到哪个引脚以及使用哪种类型的温度传感器。由于我们在这里使用DHT11传感器,因此将变量 sensor_name 分配给Adafruit_DHT.DHT11。传感器的输出引脚连接到Raspberry Pi的GPIO 17,因此我们将17分配给sensor_pin变量,如下所示。
sensor_name = Adafruit_DHT.DHT11#我们正在使用DHT11传感器 sensor_pin = 17#传感器已连接到Pi上的GPIO17
同样,我们还必须定义LCD连接到哪个GPIO引脚。在这里,我们以4位模式使用LCD,因此我们将有四个数据引脚和两个控制引脚连接到pi的GPIO引脚。另外,如果我们也想控制背光,则可以将背光引脚连接到GPIO引脚。但是现在我没有使用它,所以我给它分配了0。
lcd_rs = 7 #LCD的RS连接到PI上的GPIO 7 lcd_en = 8 #LCD的EN连接到PI上的GPIO 8 lcd_d4 = 25 #LCD的D4连接到PI上的GPIO 25 lcd_d5 = 24 #LCD的D5是已连接至PI lcd_d6的 GPIO 24 = LCD#D6已连接至PI lcd_d7 = 18的 GPIO 23 LCD已将D7连接至PI lcd_dlight的GPIO 18 lcd_backlight = 0 #LED未连接,因此我们将其分配给0
您也可以将8位模式的LCD与Raspberry pi连接起来,但是这样会减少自由引脚。
我们下载的Adafruit的LCD库可用于所有类型的特性LCD显示器。在我们的项目中,我们使用的是16 * 2 LCD显示屏,因此我们在变量中提到行数和列数,如下所示。
lcd_columns = 16#用于16 * 2 LCD lcd_rows = 2#用于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)#将所有引脚详细信息发送到库
要启动程序,我们使用 lcd.message() 函数显示一条 简短的 介绍性消息,然后给出2秒的延迟以使该消息可读。要在第二行上打印,可以如下所示使用命令\ n:
lcd .message('DHT11 with Pi \ n -CircuitDigest')#提供介绍性消息 time.sleep(2)#等待2秒
最后,在 while 循环内 , 我们应该每2秒钟从传感器读取温度和湿度的值并将其显示在LCD屏幕上。while循环内的完整程序如下所示
而1:#无限循环
湿度,温度= Adafruit_DHT.read_retry(sensor_name,sensor_pin)#从传感器读取并保存温度和湿度变量中的相应值
lcd.clear()#清除LCD屏幕上的 lcd.message('温度=%.1f C'%温度)#显示温度 lcd.message 的值('\ nHum =%.1f %%'%湿度)#显示Humidity time.sleep(2)#Wait 2秒钟,然后更新值
我们可以使用下面的这一行从传感器轻松获得温度和湿度的值。如您所见,它返回两个值,这些值存储在可变的湿度和温度中。该 传感器名称 和 sensor_pin 细节作为参数传递; 这些值在程序开始时已更新
湿度,温度= Adafruit_DHT.read_retry(sensor_name,sensor_pin)
要在LCD屏幕上显示变量名,我们可以使用&d,%c等标识符。在这里,由于我们显示的浮点数仅在小数点后一位,所以我们使用标识符%.1f来显示值。可变的温度和湿度
lcd .message('温度=%.1f C'%温度) lcd .message('\ nHum =%.1f %%'%湿度)
使用Raspberry Pi测量湿度和温度:
按照电路图进行连接并安装所需的库。然后启动本页末尾给出的python程序。LCD将显示一个简介消息,然后显示当前的温度和湿度值,如下图所示。
如果发现LCD上没有任何显示,请检查python shell窗口是否显示任何错误,如果未显示任何错误,请再次检查连接并调整电位器以改变LCD的对比度,并检查是否有任何东西屏幕。
如果您在完成此过程时遇到任何问题,请在注释部分进行报告或使用论坛寻求技术帮助,希望您理解该项目并喜欢构建它。我将尽力回复所有评论。
您还可以将DHT11与其他微控制器一起使用来检查我们的其他项目。