DHT11温湿度传感器

DTH11针脚



DHT11引脚有格子空的为正面,引脚朝下,从左数4个引脚分别为

DHT11引脚名称 DHT11引脚功能
VCC 正极,连接3.3V或5V
DATA 数据输入输出
NC 悬空(就是不连任何地方)
GND 负极

参考文档下载,请详细阅读参考文档

code

# -*- coding: utf-8 -*-
"""
This is the code for DTH11 to get the humidity and temperature
"""

import RPi.GPIO as gpio
import time
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
time.sleep(1)
#用来接收收到的数据
data=[]
pin = 26
j=0
#start work
gpio.setup(pin,gpio.OUT)
#先给个低电平
gpio.output(pin,gpio.LOW)
time.sleep(0.02)
#再给个高电平
gpio.output(pin,gpio.HIGH)
i=1
i=1

#wait to response
#设置成in模式,即板子读这个pin脚的数据
gpio.setup(pin,gpio.IN)

while gpio.input(pin)==0:
    continue
while gpio.input(pin)==1:
        continue
#get data
#数据是40bit的
while j<40:
    k=0
    while gpio.input(pin)==0:
        continue
    #根据1的个数(即高电平的时间来判断是0还是1)
    while gpio.input(pin)==1:
        k+=1
        if k>100:break
    if k<3:
        data.append(0)
    else:
        data.append(1)
    j+=1

print "Sensor is working"
#get temperature
#下面就是处理接收到的数据
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 is ", temperature,"wet is ",humidity,"%"
    print "something is successful the humidity,humidity_point,temperature,temperature_point,check is",humidity,humidity_point,temperature,temperature_point,check
else:
    print "something is worong the humidity,humidity_point,temperature,temperature_point,check is",humidity,humidity_point,temperature,temperature_point,check

如手册中的图

首先,程序设置为26为out,然后发一个低电平,再发一个高电平,表示我想要你的数据,然后DHT回一个低电平,一个高电平,表示我要发送给你数据了,接下来的就是数据部分,一共40bit,0和1的区分就在于高电平的延时不同。所以通过统计1的数量来区分延时大小。
接收到的数据:

Sensor is working
temperature is  24 wet is  21 %
something is successful the humidity,humidity_point,temperature,temperature_point,check is 21 0 24 0 45

不过程序并不稳定,经常会出现数据分析错误的情况。还在分析中。

Reference

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

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/1521

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindSpace博客)QQ群:不安分的Coder(375670127) 不安分的Coder

1 条回复

  1. 酸菜粉条说道:

    可以考虑做个小的智能温度计。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*