自古以來,隨著人類現(xiàn)代社會和科技的飛速進步、電子信息技術(shù)、控制技術(shù)等技術(shù)的不斷增加,社會信息逐漸加速,它使人們的生活、工作、學習和交流變得越來越相互關(guān)聯(lián)與密切。信息以及大數(shù)據(jù)的社會正在改變?nèi)藗兊姆N種生活習慣和各種工作方法。與此同時我們發(fā)現(xiàn),它也挑戰(zhàn)了我們傳統(tǒng)的許多家用電器,經(jīng)過調(diào)查,我們知道了如今人們對家用電器的需求不再只是一個簡單的物質(zhì)需求與簡單的功能,更多關(guān)注和需求的是一種高度安全,令人感到舒適、美觀、并且易于操作的智能家電。因此,智能家電已成為一種令人向往的發(fā)展趨勢。
我們也知道:在炎熱的夏天,常見普通的風扇為人們的生活帶來了很多便利,并且一般的電風扇只有手動去調(diào)速和機械檔的手動開關(guān)來調(diào)速。在夏季和夜晚溫度下降后,人們有時候會因熟睡而忘記關(guān)閉電風扇,當溫度緩慢降低時,普通風扇卻不能依據(jù)溫度的變化而改變其轉(zhuǎn)速,然而智能溫控電風扇可以做到這一點,根據(jù)室內(nèi)環(huán)境溫度自動控制風扇轉(zhuǎn)速。為了讓風扇更貼近人們的生活,開發(fā)一種以柔和的聲音和新型智能電風扇控制系統(tǒng)是非常迫切的。通過數(shù)字溫度傳感器對外界環(huán)境溫度進行數(shù)據(jù)采集,從而建立一個控制系統(tǒng),使電風扇隨溫度的變化而自動調(diào)節(jié)檔位,實現(xiàn)“溫度高、風力大、溫度低、風力弱”的性能。另外,通過紅外發(fā)射和接收裝置及按鍵實現(xiàn)各種功能的啟動與關(guān)閉,并且可對各種功能實現(xiàn)遙控,用戶可以在一定范圍內(nèi)設(shè)置電風扇的最低工作溫度,當溫度低于所設(shè)置溫度時,電風扇將自動關(guān)閉,當高于此溫度時電風扇又將重新啟動。
1系統(tǒng)總體設(shè)計
1.1功能介紹
(1)風速設(shè)為從低到高共2個檔位,可由用戶通過鍵盤設(shè)定。
(2)每當溫度低于下限值時,則電風扇風速關(guān)閉。
(3)每當溫度在下限和上限之間時,則電風扇轉(zhuǎn)速緩慢。
(4)每當溫度高于上限值時,則電風扇風速全速運轉(zhuǎn)。
1.2整體設(shè)計思路
利用溫度傳感器DSI8B20檢測環(huán)境溫度并直接輸出數(shù)字溫度信號給樹莓派或單片機進行處理,在LED數(shù)碼管上顯示當前環(huán)境溫度值以及預設(shè)溫度值。其中預設(shè)溫度值只能為整數(shù)形式,檢測到的當前環(huán)境溫度可精確到小數(shù)點后一位。同時采用PWM脈寬調(diào)制方式來改變直流風扇電機的轉(zhuǎn)速。并通過兩個按鍵改變預設(shè)溫度值,一個提高預設(shè)溫度,另一個降低預設(shè)溫度值。
1.3可行性分析
傳統(tǒng)電風扇以及其轉(zhuǎn)機最致命的缺陷是不能依據(jù)外界環(huán)境溫度的變化來實施自動調(diào)節(jié)風機的轉(zhuǎn)速。所以說智能風扇的發(fā)展將有效解決傳統(tǒng)風機的不足,真正實現(xiàn)風機的運行受外部環(huán)境的控制,實現(xiàn)低耗能、高性能的智能風機,節(jié)約了很多的電力等資源,減少了許多人工消耗。這款智能風扇適合所有家庭,特別適合老人和兒童,當室內(nèi)溫度低于系統(tǒng)設(shè)定的一個閾值時,它會強制并且自動關(guān)閉此功能,從而實現(xiàn)保護老人和兒童的健康。智能風扇控制系統(tǒng)開發(fā)的成本低,開發(fā)時間短,好上手。簡單地說,它不僅可以彌補傳統(tǒng)風扇的缺點和不足,還可以在某些方面上增添新思路,新方向。如果可以大量投產(chǎn),將大大提高人們的生活質(zhì)量。因此,智能風扇將具有非常良好的發(fā)展空間和前景,如果實現(xiàn)了這個技術(shù),將是一個很大的進步。這個系統(tǒng)總的來說,主要從技術(shù)可行性和經(jīng)濟可行性的角度分析設(shè)計,這確實可行。因此,該程序被開發(fā)用于根據(jù)室溫的溫度控制風扇的旋轉(zhuǎn),并且還根據(jù)固定的溫度值與沒有溫度傳感器的風扇旋轉(zhuǎn)調(diào)節(jié)方案兼容。
傳統(tǒng)電風扇的直流風讓人感到十分僵硬,人們很容易因長時間地吹而感冒,而自然風又軟又寬,變化無常,讓人感到十分舒適,是既涼爽又舒適,人們很容易接受。與人工DC風不同,自然風速舒適,不規(guī)則變化,它不會讓人體表面的濕熱狀態(tài)一直處于加速流失狀態(tài),在經(jīng)過長時間對自然風數(shù)字數(shù)據(jù)的采集,可以用一些腳本語言模擬自然風的這種無規(guī)律變化,吹出讓人心曠神怡的徐徐清風。
2系統(tǒng)硬件設(shè)計
2.1實施計劃
使用自動識別溫度傳感器DS18B20的位置可以獲取溫度。
根據(jù)溫差控制風扇轉(zhuǎn)動等的功能。
日志文件(temperature_log)保存在python文件相同的目錄下。
raspberrypie的操作系統(tǒng)以及我們熟悉的2012年12月之后產(chǎn)生的Raspbian系統(tǒng)已經(jīng)能夠非常完美的支持DS18B20單總線(1-wire)溫度傳感器。該傳感器由一個半導體封裝頭裝置和三個ping(引腳)組成,現(xiàn)在是一個非常精確并且成熟的數(shù)字設(shè)備。眾所周知,由于RaspberryPi沒有ADC(模數(shù)轉(zhuǎn)換器),所以說我們無法直接讀取TMP36等模擬信號溫度傳感器。因此,DS18B20是非常適合這個場景的。
2.2硬件材料
數(shù)字溫度傳感器加上一根延長線,它們也可以是濕度或高溫型號的其中一種。4.7K或10K歐姆電阻,一小塊面包板,一把跳線,擴展板。
DS18B20單線傳感器可通過非并聯(lián)連接進行訪問,這與其他市售傳感器幾乎完全相同!所有傳感器共用相同的ping,所以說一個4.7K的電阻十分適合這里。
這里的電阻我們來做的功能:拉出數(shù)據(jù)輸出線(數(shù)據(jù)線)和保持數(shù)據(jù)傳輸過程中的穩(wěn)定。
如果我們必須要使用DS18B20的防水版,則需要連接3個ping,它們分別是:紅色,黑色,黃色,并且未連接下一個ping(也就是引腳)。
如果可以的話,利用高溫版本的防水版,需要橙色針腳(ping)連接到3.3V上面,白色接地線,藍色針腳連接到針腳4(4ping)。
在3.3V和數(shù)據(jù)引腳之間也需要4.7K-10K的電阻。
雖然DS18B20看起來像一般市面上的普通傳感器,但它卻有許多復雜的內(nèi)部組件。
它的芯片包括這塊板專用的單總線串行接口、邏輯控制部分單元和核心部分溫度傳感器。
它的輸出針腳輸出數(shù)字信息,以便Raspbian/ococentalis可以在某一個針上。在運行項目之前,使用SSH工具來進行一次測試是最穩(wěn)妥的。
sudomodprobew1-gpio
sudomodprobew1-thermcd/sys/bus/w1/devices
cd28-xxxx(changethistomatchwhatserialnumberpopsup)
catw1_slave
系統(tǒng)會告訴我們有一個可供讀取的溫度數(shù)據(jù)。它也許像一個文個個文件,所以我們需要將這個數(shù)據(jù)讀取出來。
在返回消息的第一行的結(jié)尾,將出現(xiàn)True或者是False,如果是,則第二行后面我們需要跟著溫度數(shù)據(jù)來結(jié)尾。
如果主板連接了多個傳感器單元,我們將可以了解并看到多個28-xxxfile(文件),插入傳感器,校檢新生成的文件名,然后標記,將他們一一對應(yīng)給傳感器。這樣,我們就可以區(qū)分每一個傳感器對應(yīng)于的確定文件。
3系統(tǒng)軟件設(shè)計
下面的Python腳本處理一些異?;蛘咤e誤信息并且反饋給用戶界面,同時還會返回每秒的華氏和攝氏溫度數(shù)據(jù)。
importos
importglobimporttime
os.system(‘modprobew1-gpio’)os.system(‘modprobew1-therm’)base_dir=‘/sys/bus/w1/devices/’
device_folder=glob.glob(base_dir+‘28*’)[0]device_file=device_folder+‘/w1_slave’
Defread_temp_raw():
f=open(device_file,‘r’)lines=f.readlines()f.close()
returnlines
defread_temp():
lines=read_temp_raw()
whilelines[0].strip()[-3:]!=‘YES’:time.sleep(0.2)
lines=read_temp_raw()equals_pos=lines.find(‘t=’)ifequals_pos!=-1:
temp_string=lines[equals_pos+2:]temp_c=float(temp_string)/1000.0temp_f=temp_c*9.0/5.0+32.0returntemp_c,temp_f
whileTrue:
print(read_temp())time.sleep(1)
在開始運行腳本時,需要先運行modprobe命令以使得api運行。
接下來的腳本用于查找可以從哪些文件中讀取消息。
現(xiàn)在有一個問題是有時候溫度會在在樹莓派下讀取??梢杂靡韵麓a替換read-temp-ray方法。然后在程序開始時添加一行“導入子進程”。
defread_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’)returnlines
讀取溫度有兩種不同的方式。read_temp_ray通過接口交檢message的前兩行。read_temp封裝它并添加error消息檢測和重試,直到出現(xiàn)“True”為止。在第一行的末尾此方法返回兩個值,第一個是Celsius,第二個是Fahrenheit。
可以像下面這樣把兩個值分開
deg_c,deg_f=read_temp()
主要的function只是一個循環(huán)體,用來讀取溫度數(shù)據(jù),(print)打印出來,然后sleep一秒鐘。然后繼續(xù)一次循環(huán)。
要把這個程序傳到樹莓派上,你可以通過SSH
在命令行里打開一個文本編輯器運行thermometer.py
測試與配置
運行這個程序需要超級用戶權(quán)限,所以在命令行里運行下面的命令
sudopythonthermometer.py
設(shè)置項:
T_HIGH=48
溫度^48度開始轉(zhuǎn)動,在溫度傳感器失效/沒有傳感器時使用
T_LOW=42
溫度^42度停止轉(zhuǎn)動,在溫度傳感器失效/沒有傳感器時使用
T_DIFF_HIGH=24
溫差^24度開始轉(zhuǎn)動
T_DIFF_LOW=18
溫差^18度停止轉(zhuǎn)動
T_SENOR_DIFF=0
溫度傳感器和真實環(huán)境溫度矯正值,真實環(huán)境溫度傳感器實測溫度+校正值
fan_pin=12
控制風扇IO針腳BOARD編號
NPN=真
控制風扇用的是NPN三極管,PNP三極管時改為假
IS_LOG_FILE=True
是否輸出溫度信息到文件
IS_LOG_CONSOLE=True
是否輸出溫度信息到控制臺
time_interval=5
檢測溫度間隔時間單位秒
log_file_duration=12
日志記錄保留時間長度,單位小時
4結(jié)束語
本系統(tǒng)最大的優(yōu)點是解決了傳統(tǒng)風扇不能實時根據(jù)外界溫度變化自動調(diào)節(jié)風扇轉(zhuǎn)速的缺點,智能風扇將有效改變傳統(tǒng)風扇高功耗,低性能的缺點。該智能風扇適用于所有家庭,尤其針對老人小孩設(shè)計的當室內(nèi)溫度低于系統(tǒng)設(shè)置的閾值時自動關(guān)閉這一功能,保護了老人和小孩的身體健康,更貼近于人們生活。
評論
查看更多