树莓派连接DHT11

  • 介绍
DHT11作为一个廉价配件,同时包含了温度、湿度传感器,而且,编码使用也非常简单。 本文介绍如果在树莓派中使用DHT11,代码是Python。如果有任何疑问,欢迎在下面留言。
  • 接线
VCC接5V或者3.3V DATA接GPIO GND接GND
  • 代码
[codesyntax lang="python"]
#!/usr/bin/python

import RPi.GPIO as GPIO
import time

channel = 17
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, ", humidity : " , humidity
else:
	print "wrong"
	print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp

GPIO.cleanup()
[/codesyntax]
  • 测试
执行命令chmod u+x dht11.py && ./dht11.py
  • 参考
还想知道Arduino怎么连接DHT11呀,这里有文章啊。 树莓派的GPIO接口分布图,这里有。

转载于:https://my.oschina.net/surenpi/blog/481903

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值