最近由于自己的课题需要,想要用在树莓派上使用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. RabbitMQ学习笔记一

    前 言 -解决问题  一.RabbitMQ安装  1.安装erlang 环境 a.下载erlang 版本,注意这里需要和安装的rabbitMq版本相配对,rabbitMQ官方网站上可以查到:https ...

  2. python常见面试题讲解(十)数字颠倒

    题目描述 描述: 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001 输入描述: 输入一个int整数 输出描述: 将 ...

  3. python3程序开发指南——第1章 笔记

    python文件的扩展名为.py ,但是python GUI程序的扩展名为.pyw 在python中,注释以#开始,作用范围为该行 IDLE提供了三个关键功能:输入python表达式与代码,并在pyt ...

  4. 运用惰性删除和定时删除实现可过期的localStorage缓存

    localStorage简介 使用localStorage可以在浏览器中存储键值对的数据.经常被和localStorage一并提及的是sessionStorage,它们都可以在当浏览器中存储键值对的数 ...

  5. 循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理

    在我们一般开发的系统界面里面,列表页面是一个非常重要的综合展示界面,包括有条件查询.列表展示和分页处理,以及对每项列表内容可能进行的转义处理,本篇随笔介绍基于Vue +Element基础上实现表格列表 ...

  6. 小谢第6问:js中,filter函数是怎么使用的

    数组的常用方法filter,今天在做数组筛选的时候用到需要将有重复的数组去除,因此用到这个函数,主要用到-- 选择需要的属性,最终留下想要的数组,如果刚开始的话可以看下下面代码 let nums = ...

  7. AUTOSAR-软件规范文档中的UML

    https://mp.weixin.qq.com/s/vm5vWNSpbNIYh25-LjJfYg   AUTOSAR软件规范文档中存在两种UML图: Sequence diagrams Config ...

  8. Java实现分割矩形

    给定平面内平行于坐标轴的一个矩形,从矩形内选 择一些点,从这些点向右和向上各射出一条射线, 请问:这些射线将矩形分成了多少份. 数据格式: 输入的第一行包含两个整数x, y,表示矩形是由(0, 0), ...

  9. Java 实现 蓝桥杯 等额本金

    标题:等额本金 小明从银行贷款3万元.约定分24个月,以等额本金方式还款. 这种还款方式就是把贷款额度等分到24个月.每个月除了要还固定的本金外,还要还贷款余额在一个月 中产生的利息. 假设月利率是: ...

  10. 一、kafka 介绍 && kafka-client

    一.kafka 介绍 1.1.kafka 介绍 Kafka 是一个分布式消息引擎与流处理平台,经常用做企业的消息总线.实时数据管道,有的还把它当做存储系统来使用. 早期 Kafka 的定位是一个高吞吐 ...