彭歡歡 張琛松 陳雪
摘 ?要: 在炎熱的夏天,電風扇給人們的生活帶來了很多的方便,一般的電風扇只有機械檔的人工調速和手動開關,夏夜溫度下降后人們容易因熟睡忘關風扇而受涼,當溫度升高時,它又不能根據溫度的變化改變轉速。而智能溫控調速風扇可自動根據室內環境溫度控制風扇轉速。為了使風扇更貼近人們的生活,開發一種新型溫感語音喚醒的智能電風扇控制系統迫在眉睫。
關鍵詞: 單智能溫控;樹莓派;單片機;控制系統
中圖分類號: TP368.1 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.01.014
本文著錄格式:彭歡歡,張琛松,陳雪,等. 基于單片機智能風扇的設計[J]. 軟件,2020,41(01):6669
【Abstract】: In hot summer, the electric fan brought a lot of convenience for people's life, the general electric fan only mechanical file manual speed regulation and manual switch. In the evening night, after temperature dropping, people easy to forget to turn off the fan and catch cold, when the temperature rises, it can not change the speed according to the change of temperature. The intelligent temperature control speed fan can automatically control the fan speed according to the indoor environment temperature. In order to make the fan closer to people's life, it is urgent to develop a new intelligent electric fan control system which can wake up by voice temperature sensing.
【Key words】: Single intelligent temperature control; Raspberry PI; MCU; Control system
0 ?引言
自古以來,隨著人類現代社會和科技的飛速進步、電子信息技術、控制技術等技術的不斷增加,社會信息逐漸加速,它使人們的生活、工作、學習和交流變得越來越相互關聯與密切。信息以及大數據的社會正在改變人們的種種生活習慣和各種工作方法[1]。與此同時我們發現,它也挑戰了我們傳統的許多家用電器,經過調查,我們知道了如今人們對家用電器的需求不再只是一個簡單的物質需求與簡單的功能,更多關注和需求的是一種高度安全,令人感到舒適、美觀、并且易于操作的智能家電。因此,智能家電已成為一種令人向往的發展趨勢[2]。我們也知道:在炎熱的夏天,常見普通的風扇為人們的生活帶來了很多便利,并且一般的電風扇只有手動去調速和機械檔的手動開關來調速。在夏季和夜晚溫度下降后,人們有時候會因熟睡而忘記關閉電風扇,當溫度緩慢降低時,普通風扇卻不能依據溫度的變化而改變其轉速,然而智能溫控電風扇可以做到這一點,根據室內環境溫度自動控制風扇轉速。為了讓風扇更貼近人們的生活,開發一種以柔和的聲音和新型智能電風扇控制系統是非常迫切的。
通過數字溫度傳感器對外界環境溫度進行數據采集,從而建立一個控制系統,使電風扇隨溫度的變化而自動調節檔位,實現“溫度高、風力大、溫度低、風力弱”的性能。另外,通過紅外發射和接收裝置及按鍵實現各種功能的啟動與關閉,并且可對各種功能實現遙控,用戶可以在一定范圍內設置電風扇的最低工作溫度,當溫度低于所設置溫度時,電風扇將自動關閉,當高于此溫度時電風扇又將重新啟動[3]。
1 ?系統總體設計
1.1 ?功能介紹
(1)風速設為從低到高共2個檔位,可由用戶通過鍵盤設定。
(2)每當溫度低于下限值時,則電風扇風速關閉。
(3)每當溫度在下限和上限之間時,則電風扇轉速緩慢。
(4)每當溫度高于上限值時,則電風扇風速全速運轉。
1.2 ?整體設計思路
利用溫度傳感器DSI8B20檢測環境溫度并直接輸出數字溫度信號給樹莓派或單片機進行處理,在LED數碼管上顯示當前環境溫度值以及預設溫度值。其中預設溫度值只能為整數形式,檢測到的當前環境溫度可精確到小數點后一位。同時采用PWM脈寬調制方式來改變直流風扇電機的轉速。并通過兩個按鍵改變預設溫度值,一個提高預設溫度,另一個降低預設溫度值[4-5]。
可行性分析
傳統電風扇以及其轉機最致命的缺陷是不能依據外界環境溫度的變化來實施自動調節風機的轉速。所以說智能風扇的發展將有效解決傳統風機的不足,真正實現風機的運行受外部環境的控制,實現低耗能、高性能的智能風機,節約了很多的電力等資源,減少了許多人工消耗。這款智能風扇適合所有家庭,特別適合老人和兒童,當室內溫度低于系統設定的一個閾值時,它會強制并且自動關閉此功能,從而實現保護老人和兒童的健康。智能風扇控制系統開發的成本低,開發時間短,好上手。簡單地說,它不僅可以彌補傳統風扇的缺點和不足,還可以在某些方面上增添新思路,新方向。如果可以大量投產,將大大提高人們的生活質量。因此,智能風扇將具有非常良好的發展空間和前景,如果實現了這個技術,將是一個很大的進步。這個系統總的來說,主要從技術可行性和經濟可行性的角度分析設計,這確實可行。因此,該程序被開發用于根據室溫的溫度控制風扇的旋轉,并且還根據固定的溫度值與沒有溫度傳感器的風扇旋轉調節方案 ?兼容。
傳統電風扇的直流風讓人感到十分僵硬,人們很容易因長時間地吹而感冒,而自然風又軟又寬,變化無常,讓人感到十分舒適,是既涼爽又舒適,人們很容易接受。與人工DC風不同,自然風速舒適,不規則變化,它不會讓人體表面的濕熱狀態一直處于加速流失狀態,在經過長時間對自然風數字數據的采集,可以用一些腳本語言模擬自然風的這種無規律變化,吹出讓人心曠神怡的徐徐清風。
2 ?系統硬件設計
2.1 ?實施計劃
使用自動識別溫度傳感器DS18B20的位置可以獲取溫度。
根據溫差控制風扇轉動等的功能。
日志文件(temperature_log)保存在python文件相同的目錄下。
raspberry pie的操作系統以及我們熟悉的2012年12月之后產生的Raspbian系統已經能夠非常完美的支持DS18B20單總線(1-wire)溫度傳感器。該傳感器由一個半導體封裝頭裝置和三個ping(引腳)組成,現在是一個非常精確并且成熟的數字設備。
眾所周知,由于Raspberry Pi沒有ADC(模數轉換器),所以說我們無法直接讀取TMP36等模擬信號溫度傳感器。因此,DS18B20是非常適合這個場景的。
2.2 ?硬件材料
數字溫度傳感器加上一根延長線,它們也可以是濕度或高溫型號的其中一種。4.7K或10K歐姆電阻,一小塊面包板,一把跳線,擴展板。
DS18B20單線傳感器可通過非并聯連接進行訪問,這與其他市售傳感器幾乎完全相同!所有傳感器共用相同的ping,所以說一個4.7K的電阻十分適合這里。
這里的電阻我們來做的功能:拉出數據輸出線(數據線)和保持數據傳輸過程中的穩定。
如果我們必須要使用DS18B20的防水版,則需要連接3個ping,它們分別是:紅色,黑色,黃色,并且未連接下一個ping(也就是引腳)。
如果可以的話,利用高溫版本的防水版,需要橙色針腳(ping)連接到3.3V上面,白色接地線,藍色針腳連接到針腳4(4 ping)。
在3.3V和數據引腳之間也需要4.7K-10K的 ?電阻。
雖然DS18B20看起來像一般市面上的普通傳感器,但它卻有許多復雜的內部組件。
它的芯片包括這塊板專用的單總線串行接口、邏輯控制部分單元和核心部分溫度傳感器。
它的輸出針腳輸出數字信息,以便Raspbian/ ococentalis可以在某一個針上。在運行項目之前,使用SSH工具來進行一次測試是最穩妥的。
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
cd 28-xxxx (change this to match what serial number pops up)
cat w1_slave
系統會告訴我們有一個可供讀取的溫度數據。它也許像一個文個個文件,所以我們需要將這個數據讀取出來。
在返回消息的第一行的結尾,將出現True或者是False,如果是,則第二行后面我們需要跟著溫度數據來結尾。
如果主板連接了多個傳感器單元,我們將可以了解并看到多個28-xxx file(文件),插入傳感器,校檢新生成的文件名,然后標記,將他們一一對應給傳感器。這樣,我們就可以區分每一個傳感器對應于的確定文件。
3 ?系統軟件設計
下面的Python腳本處理一些異常或者錯誤信息并且反饋給用戶界面,同時還會返回每秒的華氏和攝氏溫度數據。
import os
import glob
import time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
Def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
在開始運行腳本時,需要先運行modprobe命令以使得api運行。
接下來的腳本用于查找可以從哪些文件中讀取消息。
現在有一個問題是有時候溫度會在在樹莓派下讀取。可以用以下代碼替換read-temp-ray方法。然后在程序開始時添加一行“導入子進程”。
def read_temp_raw():
catdata = subprocess.Popen(['cat',device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = catdata.communicate()
out_decode = out.decode('utf-8')
lines = out_decode.split('\n')
return lines
讀取溫度有兩種不同的方式。read_temp_ray通過接口交檢message的前兩行。read_temp封裝它并添加error消息檢測和重試,直到出現“True”為止。在第一行的末尾此方法返回兩個值,第一個是Celsius,第二個是Fahrenheit。
可以像下面這樣把兩個值分開
deg_c, deg_f = read_temp()
主要的function只是一個循環體,用來讀取溫度數據,(print)打印出來,然后sleep一秒鐘。然后繼續一次循環。
要把這個程序傳到樹莓派上,你可以通過SSH在命令行里打開一個文本編輯器
運行 thermometer.py
測試與配置
運行這個程序需要超級用戶權限,所以在命令行里運行下面的命令
sudo python thermometer.py
設置項:
T_HIGH = 48
溫度^ 48度開始轉動,在溫度傳感器失效/沒有傳感器時使用
T_LOW = 42
溫度^42度停止轉動,在溫度傳感器失效/沒有傳感器時使用
T_DIFF_HIGH = 24
溫差^ 24度開始轉動
T_DIFF_LOW = 18
溫差^18度停止轉動
T_SENOR_DIFF = 0
溫度傳感器和真實環境溫度矯正值,真實環境溫度傳感器實測溫度+校正值
fan_pin = 12
控制風扇IO針腳BOARD編號
NPN =真
控制風扇用的是NPN三極管,PNP三極管時改為假
IS_LOG_FILE = True
是否輸出溫度信息到文件
IS_LOG_CONSOLE = True
是否輸出溫度信息到控制臺
time_interval = 5
檢測溫度間隔時間單位秒
log_file_duration = 12
日志記錄保留時間長度,單位小時
4 ?結束語
本系統最大的優點是解決了傳統風扇不能實時根據外界溫度變化自動調節風扇轉速的缺點,智能
風扇將有效改變傳統風扇高功耗,低性能的缺點。該智能風扇適用于所有家庭,尤其針對老人小孩設計的當室內溫度低于系統設置的閾值時自動關閉這一功能,保護了老人和小孩的身體健康,更貼近于人們生活。
參考文獻
[1] 李麗, 大數據時代的意識形態話語權: 挑戰及應對, 2018-07-15.
[2] 周技鋒. 嵌入式Linux平臺實現家電物聯網方案的研究與應用[J]. 數字通信世界, 2017(09): 205.
[3] 廖曉娟. 智能溫控風扇設計[J]. 2016(22): 54-55.
[4] 張寧子. 基于ITU總線的智能干濕球溫濕度測試系統研究[D]. 寧夏大學, 2013.
[5] 文海瓊, 卓朝松. 藍牙數據傳輸智能溫控風扇系統的設計[J]. 電子世界, 2018, No.544(10): 145-146.
[6] 曹巧媛. 單片機原理及應用. 北京: 電子工業出版社, 2002. 2.
[7] 王倫. 電風扇原理與維修技術[M]. 北京: 新時代出版社, 1999.
[8] 張毅剛. 新編MCS-51單片機應用設計. 哈爾濱工業大學出版社, 2006, 10.
[9] 梁廷貴, 王裕琛. 可控硅觸發電路語音電路分冊[M]. 北京: 科學技術文獻出版社, 2003.
[10] 王倫. 電風扇原理與維修技術[M]. 北京: 新時代出版社, 1999.