文档章节

树莓派控制温湿度传感器DHT11

沉淀岁月
 沉淀岁月
发布于 2017/03/22 16:02
字数 763
阅读 27
收藏 0

小π因为好几次断电之前没有关掉系统,导致系统老是起不来。无奈只好重写了SD卡。装好后前天晚上把一个温湿度传感器(DHT11)接到了小π上,顺利读出数据来了。废话不多说了,进入正题:

  • 首先,简单介绍下DHT11:

    DHT11是一个温湿度传感器,分为3个接口,分别为:VCCDATAGND

    引脚号 名称 类型 说明
    1 VCC 电源 +级,输入3V-5.5V
    2 DATA 数据输出 输出引脚
    3 GND 接地 接地引脚

    配一个DHT11的图片:

    DHT11

    DHT11说明书200808修订版.pdf

    之前看网上说,需要在DHT11VCCDATA之间加一个电阻,经试验完全不需要。

  • 引脚连接:

    关于树莓派二代的引脚可以看下上篇Blog:树莓派控制有源蜂鸣器

    1. VCC接上3V3,可以选择1口或者17

    2. DATA接上GPIO口,我选的是GPIO4,第7

    3. GND接上接地口,我选的是第14

  • Python获取温湿度:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/python
import RPi.GPIO as GPIO
import time

channel =4 //GPIO4
data = []
j = 0

GPIO.setmode(GPIO.BCM)

time.sleep(1)

GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)

while GPIO.input(channel) == GPIO.LOW:
  continue
while GPIO.input(channel) == GPIO.HIGH:
  continue

while j < 40:
  k = 0
  while GPIO.input(channel) == GPIO.LOW:
    continue
  while GPIO.input(channel) == GPIO.HIGH:
    k += 1
    if k > 100:
      break
  if k < 8:
    data.append(0)
  else:
    data.append(1)

  j += 1

print "sensor is working."
print data

humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]

humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0

for i in range(8):
  humidity += humidity_bit[i] * 2 ** (7-i)
  humidity_point += humidity_point_bit[i] * 2 ** (7-i)
  temperature += temperature_bit[i] * 2 ** (7-i)
  temperature_point += temperature_point_bit[i] * 2 ** (7-i)
  check += check_bit[i] * 2 ** (7-i)

tmp = humidity + humidity_point + temperature + temperature_point

if check == tmp:
  print "temperature :", temperature, "*C, humidity :", humidity, "%"
else:
  print "wrong"
  print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp

GPIO.cleanup()
  • 展示结果:
1
2
3
4
root@raspberrypi:/data/basedata# python/dht11.py
sensor is working.
[0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0]
temperature : 20 *C, humidity : 38 %

为了测试结果是否准确,我把手指放到传感器上,测试的数据为:

1
2
3
4
5
root@raspberrypi:/data/basedata/python# python dht11.py
sensor is working.
[0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1]
wrong
temperature : 36 *C, humidity : 38 %

确认正确~

 

 

备注: 如果你用的是DS18B20,需要做以下动作:

1
2
3
4
5
6
7
root@raspberrypi:/# apt-get update
root@raspberrypi:/# apt-get upgrade #更新内核
root@raspberrypi:/# reboot
root@raspberrypi:/# vi /boot/config.txt #在最后一行手动添加:dtoverlay=w1-gpio-pullup,gpiopin=4 来支持新系统读取w1总线设备
root@raspberrypi:/# modprobe w1-gpio #确认设备是否生效
root@raspberrypi:/# modprobe w1-therm
root@raspberrypi:/# cd /sys/bus/w1/devices/

本文转载自:http://guojianxiang.com/posts/2015-11-26-RP_Controle_DHT11.html

共有 人打赏支持
沉淀岁月
粉丝 25
博文 257
码字总数 91615
作品 0
朝阳
高级程序员
树莓派使用DHT11温湿度传感器

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

李鱼跃龙门
2014/06/07
0
18
基于树莓派如何开发机器人(附PPT+视频) | 硬创公开课

导语:树莓派是为学习计算机编程教育而设计的一种微型电脑,其系统是基于Linux的, 虽然只有信用卡大小,但视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。因此自问世以来,受到了...

金红
2017/03/09
0
0
云中树莓派(4):利用声音传感器控制Led灯

云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感器控制Led...

SammyLiu
08/12
0
0
用树莓派通过Java实现远程控制电灯

用树莓派通过Java实现远程控制电灯 本文章由 亓根火柴 原创,转载请注明出处:http://blog.csdn.net/qigenhuochai/article/details/17661845 传说,女娲娘娘炼就七根火柴,来帮助人类度过第一个...

亓根火柴
2014/01/02
0
0
预告:基于树莓派如何开发机器人 | 硬创公开课

此前我们收到读者反馈,想听一节关于如何用树莓派开发机器人。树莓派为学习计算机编程教育设计的一种微型电脑,其系统基于Linux, 只有信用卡大小但视频、音频等功能通通皆有,可谓是“麻雀虽...

金红
2017/02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL数据库集群-PXC方案

网盘下载地址 MySQL数据库集群-PXC方案 PXC是开源的MySQL集群技术,如中国移动、阿里巴巴、腾讯、去哪网等企业均采用或者借鉴了PXC解决方案,可见该方案具有极佳的稳定性。本课程将在Linux环...

qq__2304636824
8分钟前
0
0
vue脚手架搭建项目

npm install -g vue-clivue init webpack my-projectcd my-projectnpm run dev

帝子兮
11分钟前
1
0
es6 字符串拓展方法

es6 include();返回Boolean,该字符串是否包含该字符 startWith() 返回Boolean,该字符串开头是否是该字符 endWith() 返回Boolean,该字符串结尾是否是该字符 repeat() 重复该字符串多少次,...

莫西摩西
11分钟前
0
0
Java语言实现word转PDF(10分钟解决)

前言: 经常做OA办公项目的同学一定和我一样被各种线上的office操作整疯了。基本上涉及到Java操作office的时候就会想到POI和openoffice.这两种方案都是需要找各种jar包,然后用里面繁杂的api。...

山里的红杏
13分钟前
0
0
Flask部分源码阅读

Flask主要依赖于Werkzeug和Jinja这两个库,是很简洁的Python Web框架。 Werkzeug 是一个WSGI的工具包,是Flask的核心库。 Jinja 则是一个模板渲染的库,主要负责渲染返回给客户端的html文件。...

Jian_Ming
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部