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