树莓派从 DHT11 温度湿度传感器读取数据

时序图参考厂家说明书:DHT11数字湿温度传感器的原理和应用范例
四个阵脚连接:VCC接3.3伏电源,Dout接GPIO口,我接的是物理12针脚,NC留空,GND接地。
波折1:电阻被错接进了VCC,于是看了无数遍时序图,改了无数遍的驱动无论怎么改都是读不出数据。
波折2:偶然看了网上的DHT11上拉电阻电路图才发现错误,于是果断去掉电阻。但为了显示传感器工作正常在电源和VCC间接了个发光二极管进去,数据倒是读出来了,但各种错误。(原因不明)
去掉了电阻,去掉了led,优化了写的python,读数正常。再一次赞一个python。
写DHT11的驱动需要注意时序之间很紧密,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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# -*- coding: utf-8 -*-"""Created on Sun Jan 26 14:24:43 2014@author: pi"""import RPi.GPIO as gpioimport timegpio.setwarnings(False)gpio.setmode(gpio.BOARD)time.sleep(1)data=[]def delay(i): #20*i usdelay a=0 for j in range(i): a+1j=0#start workgpio.setup(12,gpio.OUT)#gpio.output(12,gpio.HIGH)#delay(10)gpio.output(12,gpio.LOW)time.sleep(0.02)gpio.output(12,gpio.HIGH)i=1i=1 #wait to responsegpio.setup(12,gpio.IN)while gpio.input(12)==1: continuewhile gpio.input(12)==0: continuewhile gpio.input(12)==1: continue#get datawhile j<40: k=0 while gpio.input(12)==0: continue while gpio.input(12)==1: k+=1 if k>100:break if k<3: data.append(0) else: data.append(1) j+=1print "Sensor is working"#get temperaturehumidity_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=0humidity_point=0temperature=0temperature_point=0check=0for 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_pointif check==tmp: print "temperature is ", temperature,"wet is ",humidity,"%"else: print "something is worong the humidity,humidity_point,temperature,temperature_point,check is",humidity,humidity_point,temperature,temperature_point,check |
测试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
|
# -*- coding: utf-8 -*-"""Created on Sun Jan 26 16:01:59 2014@author: pi"""import timedef delay(i): k=0 for j in range(i): k+=1n=5000j=0a=time.time()i=1c=time.time()d=c-aprint da=time.time()for i in range(n): j+=1c=time.time()d=c-aprint da=time.time()delay(n)c=time.time()d=c-aprint d |
只想当咸鱼的程序员

浙公网安备 33010602011771号