最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助。总的来说操作很简单,但很容易出现细节方面的问题,我也把我遇到的问题进行了简单整理,如果有其他问题可以直接在评论区提出,我看到了就会回答。文章有什么用词不当或表述不清的问题(由于研究生在海外读,所以用英语较多,很多硬件的术语可能并不专业,抱歉啦~),期待大家在评论区为我批评指正。本篇文章纯手打,如需转载,请注明出处,感谢。

本篇文章主要对DHT11进行了简单梳理,主要分为四大模块,分别为:

一、DHT11温湿度传感器

二、实验所需设备与连线方式

三、Python代码实现

四、常见问题

对哪个模块感兴趣也直接翻到相应部分阅读即可。

一、DHT11温湿度传感器

DHT11温湿度传感器是一个性能很棒的模块,它提供温度和湿度读数。价格低廉,精准度高使用简单,并且有python库可以直接导入使用,应用也很广泛,在远程气象站、土壤监测器和家庭自动化系统都可以看见它的身影。

在日常工作学习中,我们接触到的DHT11主要有两种形式。一种是三引脚的焊有PCB的模块,另一款是是四引脚的独立模块。如下图所示:

第一种传感器从左到右分别是信号引脚,VCC引脚(连接电源正极),ground接地引脚(连接电源负极)。需要注意的是,关于三引脚传感器,不同厂商的传感器引脚的顺序可能不同,大家在连接之前需要看准传感器上标的符号来进行判断,比如我的传感器就是这样的,从左到右的第一个引脚(+)是连接电源正极的。

二、实验所需设备与连线方式

(一)实验所需设备

1. DHT11 温室度传感器

2. 树莓派 3 B+/树莓派 4 B

3. 三根杜邦线(母对母)

(二)DHT11与树莓派连线方式

根据DHT11传感器两种形式不同,连线不太相同,却也大同小异。你有哪一种都可以,按照

此处的连线与后面的代码相关,第一次直接按照图示方式连接即可。

1.三针引脚DHT11温湿度传感器与树莓派的连接方式(我也把树莓派的引脚功能图放到下方了,不熟悉树莓派引脚功能的同学可以直接在本页面进行比对查看。)

2.四针引脚DHT11温湿度传感器与树莓派的连接方式

注意:

1.一定要看好传感器引脚的顺序再进行连接。(vcc-树莓派pin2,ground-树莓派pin6,signal-树莓派pin7(gpio4))

2.关于传感器引脚的连接是很随意的,vcc只要连接的是树莓派上标有“5v”标识的引脚(pin2或pin4),ground连接树莓派上标有“GND”标识的引脚(pin6,pin9,pin14,pin25,pin30,pin39),signal连接任意标有“GPIO”的引脚,但最后连接pin7,这样后面的代码直接复制粘贴的即可,建议第一次连接的同学直接按照我的方式连接即可,避免后期不必要的错误。

三、Python代码实现

就我而言,在树莓派的编程中我使用Python较多,代码简单,易懂,也有很多现成的库可供使用,拿本次的DHT11来说,可以直接导入Adafruit DHT11库,最后写出的代码也就只有几行。在写代码之前,先把python和Adafruit DHT11库下载下来。

sudo apt-get install git-core

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

cd Adafruit_Python_DHT

sudo apt-get install build-essential python-dev

sudo python3 setup.py install

1.sudo apt-get install git-core

(注意:如果下载失败,则先运行sudo apt-get update并且再试一遍,其实不管下载什么,都可以先update到最新)

2.安装Adafruit DHT11库

(1)下载库: git clone https://github.com/adafruit/Adafruit_Python_DHT.git

(2)使用cd命令进到 Adafruit_Python_DHT文件夹: cd Adafruit_Python_DHT

(3)sudo apt-get install build-essential python-dev

(4)下载python3:sudo python3 setup.py install

新建py文件

#!/usr/bin/python
import sys
import Adafruit_DHT while True: humidity,temperature = Adafruit_DHT.read_retry(11, 4) print ('Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature, humidity))

然后点运行就可以了

这是运行结果

代码解释:

(1)Adafruit_DHT.read_retry(11, 4)中的“11”代表你使用的是DHT11传感器,如果你使用的是DHT22传感器,则把数字改成“22”即可。数字“4”代表你的信号引脚连接的是gpio4所在的引脚,而不是“pin4”哦,这点要注意,如果你不想使用这个引脚,在连线方式改变的同时,改变这个数字接口。

(2)输出的温度以摄氏度为单位,相对湿度是以百分比的形式呈现。

(3)在shell框中会连续不断的输出温度和相对湿度,暂停点击右上角的stop即可。

四、 常见问题:

其实整个过程下来,连线方式或者代码的编写都是没有多大难度的,但是细节的问题一旦忽视,就会报错。结合其他网友的经验和我自己的问题总结如下。

(一)报错:

TypeError: unsupported format string passed to NoneType.__format__(这种情况一般是先没有读数,等一会后出现这个错误。这个是我一直以来最常见的报错,一开始出现的时候根本没有头脑,后来才发现是因为造成这个报错的原因比较多)

1. 杜邦线与树莓派的连线问题。连线没有插紧、线序有问题、线有损坏、代码对应信号引脚的数字有问题、没有查到树莓派5v电 源引脚上(树莓派与传感器的连接方式最好使用树莓派5v,电源,存在使用3.3v电源最后得到到数值的情况)

2. 传感器有问题(我上次的那个传感器有问题竟然也报错了,具体什么错我也记不清楚了,费半天劲一直查看代码排错,结果发现换了个传感器就好了,哭晕)

3. 电源问题(我这里是指树莓派引脚,在使用5V引脚和接地引脚给传感器供电时)

明明引脚分配没问题,也插在了树莓派5v电源引脚上还是报错,可能是你的树莓派上插了其他设备影响到供电了(我上次是插了一个用来控制水泵的继电器)。解决方法是接一个外接电源,保证电源电压的稳定。

(二)报错:

Traceback (most recent call last):
File "/home/pi/Desktop/temp.py", line 9
print 'Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature, humidity)
^
SyntaxError: invalid syntax

这句话的意思是python代码有问题,但当时的我找了好久也没有发现哪有问题。后来才发现我的python代码是这样的“print 'Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature, humidity)”,这在python3中是错误的语句格式,必须加上括号, 找了好久才发现是这个问题。

(三)报错:ModuleNotFoundError: No module named 'Adafruit_DHT'

“import Adafruit_DHT ”语句错误,提示找不到Adafruit_DHT模块,但是在terminal里输入“import Adafruit_DHT”不报错,并且已经下载了相关库。可能是你的python版本有问题,可以是python2,但使用的是python3。是否是之前的命令行“sudo python3 setup.py install”写错了,写成“sudo python setup.py install”从而下载的是python2了

部分图片来源于网络,侵删。

最后祝大家都玩派顺利~~

2020-06-09 12:46:38

在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)的更多相关文章

  1. STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载

    //为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750 ​ //************************** //程序说明:stc ...

  2. Arduino和C51开发DHT11温湿度传感器

    技术:51单片机.Arduino.DHT11.温湿度传感器.传感器   概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...

  3. DHT11温湿度传感器编程思路以及代码的实现(转载)

    源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...

  4. 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)

    本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...

  5. 树莓派连接DHT11温湿度传感器(python)

    介绍 DHT11作为一个廉价配件,同时包含了温度.湿度传感器,而且,编码使用也非常简单. 本文介绍如果在树莓派中使用 DHT11,代码是Python.如果有任何疑问,欢迎在下面留言. 接线 VCC接5 ...

  6. 树莓派使用DHT11温湿度传感器

    一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...

  7. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

  8. STM32驱动DHT11温湿度传感器

    DHT11 是一款湿温度一体化的数字传感器.该传感器包括一个电阻式测湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接.通过单片机等微处理器简单的电路连接就能够 实时的采集本地湿度和温 ...

  9. 玩转X-CTR100 l STM32F4 l DHT11温湿度传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] DHT11数字温湿度传感器是一款含有已校准数字信号输 ...

随机推荐

  1. PAT 1036 Boys vs Girls (25分) 比大小而已

    题目 This time you are asked to tell the difference between the lowest grade of all the male students ...

  2. Rocket - tilelink - AtomicAutomata

    https://mp.weixin.qq.com/s/O7VTHqpCFNJQi3EpucXkIw   简单介绍AtomicAutomata的实现.(细节问题太多,恕不完全表述.)   ​​   1. ...

  3. jchdl - GSL实例 - MulC2(有符号数的乘法)

      这里的实现,先把符号位取出来,使用两个正数相乘,然后在把符号加到乘积上.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jch ...

  4. Splay代码简化版

    皆さん.こんにちは.上一篇文章,我们讲了Splay如何实现.这一篇我们来让我们的伸展树短一点. 上一篇Splay讲解的链接:リンク. 首先还是变量的定义,在这里呢,我把一些小函数也用Define来实现 ...

  5. Java实现 LeetCode 767 重构字符串(ASCII的转换)

    767. 重构字符串 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = "aab&qu ...

  6. Java实现 LeetCode 593 有效的正方形(判断正方形)

    593. 有效的正方形 给定二维空间中四点的坐标,返回四点是否可以构造一个正方形. 一个点的坐标(x,y)由一个有两个整数的整数数组表示. 示例: 输入: p1 = [0,0], p2 = [1,1] ...

  7. Java GUI 键盘事件

    import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; import java.awt.event. ...

  8. github常用的协同开发流程

    github的实用之处 对于刚刚工作的小白来说,顺利完成工作任务是首要考虑的事情,业余时间多了解了解其他的技术将有利于自己对该领域的熟悉,比如我们都拥有的github,除了在网站里查看优秀的代码,其还 ...

  9. windows server2012在已有.net4.5框架的基础上安装.net3.5的方法

    我们在一台服务器运行各种程序的时候难免会用到一些好用的但是很老的软件.老软件也就难免需要以前的那种环境来运行,但是老的环境与新的环境往往不兼容.下面我就来讲一讲系统在已有.net4.5的情况下怎么安装 ...

  10. Jenkins job docker 没有权限

    问题描述 基于docker使用jenkins 构建cicd,在执行docker build 的时候出现了权限的问题.具体报错如下 + REPOSITORY=10.0.0.100/library/wen ...