之前以为烧坏掉的温湿度传感器竟然还是好的。并且我已经把它成功驱动了。
DHT11是一个温湿度传感器,分为3个接口,分别为:VCC, DATA, GND。
配一个DHT11的图片:
引脚连接 1. VCC接上3V3,可以选择1口或者17口 2. DATA接上GPIO口,我选的是GPIO4,第7口 3. GND接上接地口,我选的是第14口
Python获取温湿度:
#!/usr/bin/python #coding=utf-8 import RPi.GPIO as GPIO import time channel =4 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 "温湿度计运行中..." 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, "°C \n湿度 :", humidity, "%" else: print "错误!!!" print data print "温度 :", temperature, "°C \n湿度 :", humidity, "% check :", check, ", tmp :", tmp GPIO.cleanup()
展示结果:
pi@raspberrypi:~$ python sensor.py 温湿度计运行中... 温度 : 19 °C 湿度 : 62 %
为了测试结果是否准确,我把树莓派放到室外,测试的数据为:
pi@raspberrypi:~$ python sensor.py 温湿度计运行中... 温度 : 5 °C 湿度 : 88 %
由此可见传感器正常。~~(巨冷的魔都)~~
bear是一款非常好用并且非常好看的笔记app
<b> </b>
IPhone 的一次开盖维修记录
解决 依赖未满足 的问题
简要介绍如何使用workflow小工具,并且用它查看DHT11传感器数据。
目录
热门标签
页面
更多语言
站点信息