如何同时用两个dht11测量出来基于dht11的温湿度度

9被浏览2,030分享邀请回答11 条评论分享收藏感谢收起写回答积硅步以至千里,积懈怠以致深渊。
一、首先,简单介绍下DHT11:
DHT11是一个温湿度传感器,分为3个接口,分别为:VCC, DATA, GND
&引脚号名称类型说明
+级,输入3V-5.5V
之前看网上说,需要在DHT11VCC和DATA之间加一个电阻,经试验完全不需要。
二、引脚连接:
1.VCC接上3V,可以选择1口或者17口
2.DATA接上GPIO口,我选的是GPIO4,第7口
3.GND接上接地口,我选的是第14口
三、Python获取温湿度:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel =4
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:
while GPIO.input(channel) == GPIO.HIGH:
while j & 40:
while GPIO.input(channel) == GPIO.LOW:
while GPIO.input(channel) == GPIO.HIGH:
if k & 100:
data.append(0)
data.append(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
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, "%"
print "wrong"
print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp
GPIO.cleanup()
四、展示结果:
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 : 23 *C, humidity : 93 %
为了测试结果是否准确,我把手指放到传感器上,测试的数据为:
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]
temperature : 36 *C, humidity : 95 %
测试无误~
PS: 如果你用的是DS18B20,需要做以下动作:
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/
阅读(...) 评论()如何同时用两个dht11测量出来的温度_百度知道
如何同时用两个dht11测量出来的温度
我有更好的答案
DHT11是数字输出的,不接模拟口直接接数字IO,就可以了每次输出40bit数据,数据格式如下:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据还有8bit为校验位
采纳率:94%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。树莓派控制温湿度传感器DHT11
好久没有更新Blog了,终于有时间可以折腾下了。
小π因为好几次断电之前没有关掉系统,导致系统老是起不来。无奈只好重写了SD卡。装好后前天晚上把一个温湿度传感器(DHT11)接到了小π上,顺利读出数据来了。废话不多说了,进入正题:
首先,简单介绍下DHT11:
DHT11是一个温湿度传感器,分为3个接口,分别为:VCC, DATA, GND
+级,输入3V-5.5V
配一个DHT11的图片:
之前看网上说,需要在DHT11VCC和DATA之间加一个电阻,经试验完全不需要。
引脚连接:
关于树莓派二代的引脚可以看下上篇Blog:
VCC接上3V3,可以选择1口或者17口
DATA接上GPIO口,我选的是GPIO4,第7口
GND接上接地口,我选的是第14口
Python获取温湿度:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel =4 //GPIO4
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:
while GPIO.input(channel) == GPIO.HIGH:
while j & 40:
while GPIO.input(channel) == GPIO.LOW:
while GPIO.input(channel) == GPIO.HIGH:
if k & 100:
data.append(0)
data.append(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
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, &%&
print &wrong&
print &temperature :&, temperature, &*C, humidity :&, humidity, &% check :&, check, &, tmp :&, tmp
GPIO.cleanup()
展示结果:
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 %
为了测试结果是否准确,我把手指放到传感器上,测试的数据为:
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]
temperature : 36 *C, humidity : 38 %
备注: 如果你用的是DS18B20,需要做以下动作:
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/
查看下有没有对应的设备文件,具体请移步 &>
参考资料:
由 Gavin 发表,药品服务许可证(京)-经营-违法不良信息举报: 电话、邮箱youkujubao@service.alibaba.com请使用者仔细阅读优酷、、、、和Copyright(C)2018 优酷 youku.com 版权所有

我要回帖

更多关于 dht11如何读温湿度 的文章

 

随机推荐