前面作过一个智能风扇,主要功能是经过温度来控制风扇的自动开关以及经过软件来进行控制风扇开关,功能都能实现可是python
软件并无作完,因此就不了了之。app
我使用的树莓派,以下图附上引脚的注释:spa
注:树莓派的版本不一样,引脚的意思会有一些差异,请注意!code
个人温度传感器是DHT11温度模块,附实物图:blog
VCC接5V或者3.3Vinput
DATA接GPIO口(我接的是BCM的17号针脚,物理针脚是11号) it
GND接GNDclass
根据上面引脚分布图,就能够轻松链接成功。import
import RPi.GPIO as GPIO import time channel = 17 //引脚的引号 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 "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//输出获取的温度和湿度 else: print "wrong" print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp GPIO.cleanup()
注:代码的位置有些错乱,须要本身调一下,可是代码自己是没有问题的。软件