zoukankan      html  css  js  c++  java
  • 树莓派从 DHT11 温度湿度传感器读取数据

    DHT11_Pins

    时序图参考厂家说明书: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 gpio
    import time
    gpio.setwarnings(False)
    gpio.setmode(gpio.BOARD)
    time.sleep(1)
    data=[]
    def delay(i): #20*i usdelay
        a=0
        for in range(i):
            a+1
    j=0
    #start work
    gpio.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=1
    i=1
      
    #wait to response
    gpio.setup(12,gpio.IN)
     
     
    while gpio.input(12)==1:
        continue
     
     
    while gpio.input(12)==0:
        continue
     
    while gpio.input(12)==1:
            continue
    #get data
     
    while 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+=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 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,"%"
    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 time
    def delay(i):
        k=0
        for in range(i):
            k+=1
    n=5000
    j=0
     
    a=time.time()
    i=1
    c=time.time()
    d=c-a
    print d
     
    a=time.time()
    for in range(n):
        j+=1
    c=time.time()
    d=c-a
    print d
     
    a=time.time()
    delay(n)
    c=time.time()
    d=c-a
    print d

    via

    本文来自:树莓派实验室
    链接地址:http://shumeipai.nxez.com/2014/10/10/raspberry-dht11-get-temperature-data.html
  • 相关阅读:
    ARTS-S mac终端ftp命令行上传下载文件
    tensorflow SavedModelBuilder用法
    linux限定用户目录及权限
    软件测试准入准出规则
    weblogic 12c重置console密码
    linux exec和xargs的区别
    linux加域退域
    centos 6.6 配置xdmcp远程桌面
    shell数组中“和@的妙用
    【原创】Centos 7利用软件Raid搭建ISCSI过程
  • 原文地址:https://www.cnblogs.com/Pond-ZZC/p/6680463.html
Copyright © 2011-2022 走看看