輕松打造智能家庭衛(wèi)士系統(tǒng)(原理,軟硬件實(shí)現(xiàn),器件選型)
1.3軟件設(shè)計(jì)
1.3.1中斷
為了更好的提高系統(tǒng)效率,本系統(tǒng)充分的利用了AVR32單片機(jī)的中斷功能。
(1)定時(shí)器中斷
在定時(shí)中斷服務(wù)函數(shù)里面利用AD采集各種傳感器數(shù)據(jù)是一種常用的手段,本設(shè)計(jì)就是利用1.8s定時(shí)來(lái)采集各種室內(nèi)數(shù)據(jù)
定時(shí)器后臺(tái)中斷程序流程: 定時(shí)器前臺(tái)主程序流程:
(2)串口中斷
在設(shè)計(jì)中,AVR單片機(jī)與GSM模塊的通信是利用串口進(jìn)行的。由于用查詢方式接收串口數(shù)據(jù)會(huì)大大的降低系統(tǒng)性能實(shí)時(shí),故串口接收部分利用串口中斷。
遠(yuǎn)程用戶為了遠(yuǎn)程監(jiān)視家里的情況,只需要向目標(biāo)板GSM發(fā)送短信,GSM收到短信后會(huì)向核心板AVR32串口發(fā)送數(shù)據(jù),當(dāng)AVR32串口接受到數(shù)據(jù)后,在串口中斷中把標(biāo)志位flag置1,同時(shí)把串口接受到得數(shù)據(jù)儲(chǔ)存到緩存中,主程序在定時(shí)器控制下,每隔1.8s檢測(cè)flag,當(dāng)檢測(cè)到flag等于1的時(shí)候,讀取緩存中的數(shù)據(jù),根據(jù)讀取到得不同數(shù)據(jù),作不用的處理,然后單片機(jī)AVR32通過(guò)串口向GSM發(fā)送相應(yīng)的室內(nèi)信息代碼,然后GSM通過(guò)短信向遠(yuǎn)程用戶發(fā)送室內(nèi)檢測(cè)到的信息,例如溫度、濕度等等,從而高效的查詢家里的情況,達(dá)到遠(yuǎn)程控制的功能,流程如下圖16。
圖 16
1.3.2語(yǔ)音部分
作為人機(jī)交互的重要平臺(tái),語(yǔ)音處理部分主要是將各種傳感器采集到的參數(shù),通過(guò)語(yǔ)音提示用戶,語(yǔ)音部分的軟件框圖如下圖17所示,并通過(guò)發(fā)出警告的方式,提醒用戶改善居住環(huán)境。
圖 17
2 總結(jié)
本次項(xiàng)目設(shè)計(jì)時(shí)間相對(duì)緊迫,離最初的要求有一定的距離,但是總體效果還算令人滿意,實(shí)現(xiàn)了遠(yuǎn)程用戶實(shí)時(shí)監(jiān)視家里環(huán)境,在家里環(huán)境發(fā)生異常的情況下,如有外人闖入,溫度、濕度、可燃?xì)怏w濃度發(fā)生異常時(shí),及時(shí)的做出報(bào)警,同時(shí)通過(guò)GSM發(fā)送短信向遠(yuǎn)程用戶發(fā)出警告,其語(yǔ)音模塊能夠準(zhǔn)備的根據(jù)當(dāng)時(shí)環(huán)境測(cè)得的情況,做出語(yǔ)音提示。
本次設(shè)計(jì)加強(qiáng)了我們動(dòng)手、思考和解決問(wèn)題的能力。在設(shè)計(jì)過(guò)程中,是心里老想著這樣的方法可以行得通的,但實(shí)際上,總是實(shí)現(xiàn)不了,因此耗費(fèi)在這上面的時(shí)間也挺多的。但是到后面,我們又會(huì)換換方案,解決問(wèn)題。感觸最深的就是:無(wú)論多么簡(jiǎn)單的事情,一定要親自去做了才能做評(píng)價(jià)。想象中的簡(jiǎn)單不等于實(shí)現(xiàn)的簡(jiǎn)單。在本次設(shè)計(jì)當(dāng)中,我們的模塊調(diào)試用了相當(dāng)長(zhǎng)的時(shí)間。本來(lái)以為很簡(jiǎn)單,但是在實(shí)際調(diào)試過(guò)程中卻總是會(huì)遇到這樣那樣的問(wèn)題。最后連調(diào)的時(shí)候,本來(lái)以為模塊調(diào)試通過(guò)了,連調(diào)就容易了,但是當(dāng)所有模塊連接在一起的時(shí)候就會(huì)因?yàn)橄嗷サ臎_突而不能同時(shí)工作。所以又話了很長(zhǎng)時(shí)間來(lái)調(diào)試系統(tǒng),經(jīng)過(guò)幾天不分晝夜的努力,我們終于完成了我們的系統(tǒng)。
在調(diào)試系統(tǒng)的過(guò)程中,遇到的問(wèn)題真的很麻煩,比如在調(diào)試GSM SIM300模塊的過(guò)程中,需要通過(guò)avr單片機(jī)控制短信的接收和發(fā)送,但是,短信的接收過(guò)程中對(duì)于數(shù)據(jù)的采集,判斷,分析都是異常艱難的,需要從眾多的信息中提取出短信中的有效信息,就需要不斷地判斷,不斷地選擇。所以,在這個(gè)過(guò)程中會(huì)有很多莫名其妙的死機(jī),但是,我們還是堅(jiān)持了下來(lái),通過(guò)串口,分別調(diào)試gsm和avr部分。不斷優(yōu)化我們的程序,最后達(dá)到了我們想要的結(jié)果。另外,在語(yǔ)音模塊的控制上面,我們選擇使用三線spi控制過(guò)程中,仍然遇到了不少的問(wèn)題,比如,由于wt588d模塊上面的輸出,有busy信號(hào),這對(duì)于實(shí)時(shí)查詢語(yǔ)音的播報(bào)情況十分重要,所以在調(diào)試這個(gè)語(yǔ)音模塊的過(guò)程中,始終想把這個(gè)忙信號(hào)用起來(lái),但是,通過(guò)反復(fù)地調(diào)試,發(fā)現(xiàn)busy信號(hào)并不是隨語(yǔ)音的實(shí)時(shí)播報(bào)而一直顯示為高電平,反而只是在開始播報(bào)時(shí)會(huì)產(chǎn)生一個(gè)上升沿而已,所以,我們最后修改方案,不使用這跟信號(hào)線了。
評(píng)論