**用樹莓派實現根據溫度自動開關風扇**
阿新 • • 發佈:2018-11-10
樹莓派因為價格價格低,效能好的原因非常受極客推崇,最近入手了一個樹莓派3B,想用它做點東西玩玩,畢竟也是想通過樹莓派學習一些東西的。所以想到了用樹莓派做一個根據溫度自動開關風扇的作品。
材料準備:
溫度感測器 DH11 一個
樹莓派3B 一個
繼電器 一個
小風扇 一個
**成品如下:**
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
while True:
GPIO.setmode(GPIO.BCM) #以BCM編碼格式
GPIO.setup(24,GPIO.OUT)#clouth
channel = 19 #引腳號16
data = [] #溫溼度值
j = 0 #計數器
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 < 6:
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)
if temperature > 24:
print("開風扇")
GPIO.output(24,0)
else:
print("關風扇")
GPIO.output(24,1)
else: #錯誤輸出錯誤資訊,和校驗資料
print ("wrong")
print ("temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp)
GPIO.cleanup() #重置針腳
time.sleep(0.5)
第一次寫部落格,不好還請見諒。
如果想了解更多資訊請諮詢電話: 18460341801
微信同號,若想新增請請新增備註:CSDN
原始碼地址:https://github.com/mmlhy/-/tree/master