这次学校短学期的课题是利用dht11与树莓派做一个温湿度监控平台,要求能实现实时显示,查询历史,定时浇灌,报警等功能。
硬件
dht11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度+-5%RH, 温度+-2°C,量程湿度20-90%RH, 温度0~50°C。
首先我们要从dht11上读出温湿度,dht11分别有3个引脚,分别为VCC、GND和DOUT,DOUT为数据输出的引脚。
树莓派引脚图
我们将DOUT接在物理引脚7脚上,代码如下
因为我们选了BCM模式,所以代码中的引脚编号是4
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
70import time
import RPi.GPIO as GPIO
def ():
channel = 4
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
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