【教程】树莓派获取温湿度

树莓派获取dht11温湿度


代码

# -*- coding: UTF-8 -*-
#!/usr/bin/python

import RPi.GPIO as GPIO
import time

channel = 2
data = []
j = 0

#I/O口使用BCM编号方式
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
    #数据转换成JSON格式
    mytemp = '{"value":%f}' %temperature
    myhumi = '{"value":%f}' %humidity

    #打开文件
    tmp_output = open('/home/pi/Desktop/0/tmp_data.txt', 'w')
    hud_output = open('/home/pi/Desktop/0/hud_data.txt', 'w')

    #写数据到文本文件中
    tmp_output.write(mytemp)
    hud_output.write(myhumi)

    #关闭文件
    tmp_output.close
    hud_output.close
else:
     print "wrong"
     print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp

GPIO.cleanup()
如果不需要保存数据可以把打开文件到关闭文件那段删除

运行

sudo python demo.py

接线

树莓派        dht11
3.3 ----------- vcc
GND --------- GND
GPIO2 ------- DATA

本博客所有文章如无特别注明均为原创。作者:KING复制或转载请以超链接形式注明转自 千世博客
原文地址《【教程】树莓派获取温湿度
分享到:更多

相关推荐

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)