基于STM32智能家居系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
智能家居(又稱智能住宅)是以住宅為平臺(tái),兼?zhèn)浣ㄖ?、網(wǎng)絡(luò)通信、信息家電、設(shè)備自動(dòng)化,集系統(tǒng)、結(jié)構(gòu)、服務(wù)、管理為一體的安全、高效、舒適、便利、環(huán)保的居住環(huán)境。利用綜合布線技術(shù)、網(wǎng)絡(luò)通信技術(shù)、智能家居一系統(tǒng)設(shè)計(jì)方案安全防范技術(shù)、自動(dòng)控制技術(shù)、音視頻技術(shù)將家居生活有關(guān)的設(shè)施集成,構(gòu)建高效的住宅設(shè)施與家庭日程事務(wù)的管理系統(tǒng)。對(duì)比普通家居系統(tǒng),智能家居不僅滿足了人們對(duì)居住環(huán)境的基本要求,提供舒適安全且宜人的家庭生活空間.還能夠主動(dòng)提供全方位的信息服務(wù),聯(lián)合外部資源,做出智能化響應(yīng)。但這類系統(tǒng)通常代價(jià)昂貴,控制方式單一,且易受到干擾。因此,在設(shè)計(jì)實(shí)現(xiàn)智能控制的同時(shí),研制一個(gè)成本低、實(shí)用性強(qiáng)并能普及尋常百姓家的智能家居系統(tǒng)成為必然趨勢(shì)。
本設(shè)備可使使用者置身千里之外也能輕松地全方位掌握家中各方面的情況,很方便的遠(yuǎn)程控制各類家用電器設(shè)備,提高了家居的安全性、方便性、舒適性,實(shí)現(xiàn)了環(huán)境保護(hù)和節(jié)約能源,讓人們享受家居生活更輕松。
1 系統(tǒng)整體結(jié)構(gòu)
系統(tǒng)整體結(jié)構(gòu)如圖1所示,主要由微控制器及多個(gè)子模塊組成,微控制器主要用于分析和處理用戶操作信息、傳感器信息、控制手機(jī)模塊的接收和發(fā)送,并按優(yōu)先級(jí)執(zhí)行相應(yīng)的任務(wù)。子模塊部分包括:門禁/安防、人機(jī)界面、CAN—BUS通信網(wǎng)絡(luò)、無(wú)線通信網(wǎng)絡(luò)、視頻監(jiān)控模塊、語(yǔ)音識(shí)別、開窗電動(dòng)機(jī)驅(qū)動(dòng)控制器、多路傳感器接口、開關(guān)電源電路等。
系統(tǒng)主機(jī)通過一個(gè)運(yùn)行OpenWRT的路由器連入Internet。設(shè)置好網(wǎng)絡(luò)端口,通過Internet訪問時(shí),本系統(tǒng)提供一個(gè)用戶體驗(yàn)良好的界面,用戶只需輸入域名登陸到運(yùn)行在家中的服務(wù)器即可對(duì)家中的設(shè)備進(jìn)行遠(yuǎn)程控制。
2 智能家居系統(tǒng)硬件平臺(tái)
本智能家居系統(tǒng)主要由主控芯片和功能外設(shè)組成。主控芯片STM32F103RBT6是以ARM 32的Cortex—M3為內(nèi)核的處理器,最高工作頻率可達(dá)72 MHz,內(nèi)置大容量高速存儲(chǔ)器,輕易容納智能家居系統(tǒng)所需的空間;具備FSMC靈活的靜態(tài)存儲(chǔ)器控制器,用其來(lái)驅(qū)動(dòng)液晶屏極大地提高了刷新率;同時(shí),它內(nèi)嵌有支持CAN 2.0B的控制器,無(wú)需外擴(kuò)專用芯片便可以組成CAN網(wǎng)絡(luò)。
LD3320是一款語(yǔ)音識(shí)別及合成芯片,集成了高精度A/D和D/A接口,不需要任何外接輔助芯片,如Flash閃存、RAM、解碼、功放芯片等,可以直接地實(shí)現(xiàn)語(yǔ)音識(shí)別/語(yǔ)音/交互式功能的語(yǔ)音識(shí)別功能。主控芯片通過四線SPI數(shù)字接口傳送適合的數(shù)據(jù)到該芯片對(duì)應(yīng)的寄存器,設(shè)置好識(shí)別關(guān)鍵詞、識(shí)別時(shí)間長(zhǎng)度、麥克風(fēng)增益等后,語(yǔ)音識(shí)別功能便開始運(yùn)行了。當(dāng)系統(tǒng)產(chǎn)生需要語(yǔ)音應(yīng)答條件時(shí),MCU可以把以mp3編碼的數(shù)據(jù)發(fā)送到該芯片,配置音量等參數(shù)后,隨即運(yùn)行語(yǔ)音合成功能,片內(nèi)自帶的功率放大器推動(dòng)揚(yáng)聲器發(fā)聲。
nRF24L01是一款新型單片高度集成的射頻收發(fā)器件,工作于2.4~2.5 GHz ISM頻段之間。內(nèi)置頻率合成器、功率放大器、晶體振蕩器以及調(diào)制器等功能模塊,并融合了增強(qiáng)型ShockBurst技術(shù),其中輸出功率和通信頻道可通過程序進(jìn)行配置。其多種低功耗模式和40bit超長(zhǎng)器件地址保證了它通信的安全性,傳輸速率高的特點(diǎn),適合應(yīng)用在本系統(tǒng)。
CAN總線通信具有較高的通信速率、高可靠性、便于連接和性價(jià)比高的優(yōu)勢(shì),它因?yàn)楦咚倬W(wǎng)絡(luò)以及作為較低成本的各種網(wǎng)絡(luò)而普及應(yīng)用。由于智能家居系統(tǒng)的通信是在家庭供電線路的復(fù)雜電磁干擾中,本系統(tǒng)采用一種CAN雙絞線轉(zhuǎn)換器,組成一個(gè)家電通信網(wǎng)絡(luò),足夠可靠地應(yīng)用于強(qiáng)干擾的惡劣環(huán)境中。
3 智能家居系統(tǒng)軟件設(shè)計(jì)
智能家居其中一個(gè)重要目的是為了實(shí)現(xiàn)舒適便捷的家居生活,因此必須設(shè)計(jì)一套用戶體驗(yàn)良好的上位機(jī)操作界面,包括電腦端對(duì)智能家電的詳細(xì)設(shè)置,以及能體現(xiàn)出手機(jī)便捷性對(duì)家電基本控制需求的Android客戶端應(yīng)用程序。其主要軟件設(shè)計(jì)流程如圖2所示。系統(tǒng)任務(wù)的實(shí)現(xiàn)由兩個(gè)不同的線程實(shí)現(xiàn):網(wǎng)絡(luò)通信用的NetStream程序和本地?cái)?shù)據(jù)處理的程序。
本地?cái)?shù)據(jù)處理程序根據(jù)任務(wù)又分為以下兩部分:用戶操作響應(yīng)部分,視頻流數(shù)據(jù)處理部分。用戶操作響應(yīng)部分主要負(fù)責(zé)采集用戶對(duì)上位機(jī)軟件按下的按鈕、輸入的命令等數(shù)
據(jù),并將這些采集到的數(shù)據(jù)進(jìn)行運(yùn)算和處理,得到結(jié)果后再進(jìn)行加密并編碼,最后加載到網(wǎng)絡(luò)流上,自動(dòng)通過網(wǎng)絡(luò)發(fā)送到下位機(jī)。視頻流數(shù)據(jù)處理部分則是智能家居安防監(jiān)控功能的承載,上位機(jī)的軟件定時(shí)器產(chǎn)生一定時(shí)間間隔的溢出中斷后,通過TCP連接到路由器,賬號(hào)和密碼驗(yàn)證無(wú)誤后,即可獲取監(jiān)控?cái)z像頭每一幀JPEG格式的圖像信息,經(jīng)過處理,可將這些JPEG圖像信息合成24幀每秒顯示在上位機(jī)界面上,由于人眼的視覺暫留效益(Persistence of vision),這些連續(xù)的圖像可以被看成是達(dá)到了流暢的視頻效果。
NetStream部分則主要是解決上位機(jī)與下位機(jī)通信的問題。智能家居系統(tǒng)的安全是一個(gè)很重要的問題,建立一個(gè)穩(wěn)定安全的連接就顯得尤為重要。本系統(tǒng)采用一種SSL加密的TCP/IP協(xié)議。SSL又叫“安全套接層(Secure Sockets Layer)協(xié)議”,是一種在客戶端和服務(wù)器端之間建立安全通道的協(xié)議,充分保證了系統(tǒng)通信過程的安全。
4 智能家電網(wǎng)絡(luò)的構(gòu)建
為了實(shí)現(xiàn)對(duì)智能家電控制的目的,就必須要將各個(gè)家電進(jìn)行聯(lián)網(wǎng),本系統(tǒng)的下位機(jī)家電網(wǎng)絡(luò)包括CAN總線網(wǎng)絡(luò),2.4G射頻無(wú)線網(wǎng)絡(luò)以及視距紅外無(wú)線網(wǎng)絡(luò)。同時(shí)應(yīng)用了這3種通信網(wǎng)絡(luò),同時(shí)具備了智能家居網(wǎng)絡(luò)的可靠性好,連接方便,通用性強(qiáng)等優(yōu)點(diǎn),彌補(bǔ)了單一通信方式的局限性,若能合理安排組建網(wǎng)絡(luò),將會(huì)有效地降低系統(tǒng)成本。
下位機(jī)軟件部分最重要的一個(gè)功能,就是接收到上位機(jī)發(fā)送過來(lái)的帶有加密的數(shù)據(jù)后進(jìn)行處理。數(shù)據(jù)解密后,是一個(gè)帶有功能描述與對(duì)應(yīng)參數(shù)的字符串,為了方便程序的編寫,需要將字符串中的參數(shù)部分由連續(xù)且未知長(zhǎng)度的數(shù)字轉(zhuǎn)化為整形變量?jī)?chǔ)存在內(nèi)存中,實(shí)現(xiàn)的代碼如下:
這段函數(shù)調(diào)用了IAR Embedded公司提供的標(biāo)準(zhǔn)庫(kù)函數(shù)stdlib.h中的atoi函數(shù),atoi函數(shù)功能的描述是/*convert string to int*/,即把字符串直接強(qiáng)制轉(zhuǎn)成整形數(shù)據(jù)。本系統(tǒng)上位機(jī)與下位機(jī)之間的通信協(xié)議由我們專門針對(duì)性地設(shè)計(jì),其中字符串頭部帶有長(zhǎng)度不能預(yù)知的命令字節(jié),因此調(diào)用atoi函數(shù)前還需要判斷該數(shù)據(jù)包之中的參數(shù)是從字符串的第幾位開始的,得到正確的指向字符串參數(shù)位置的指針。
如圖3是智能家居下位機(jī)主控芯片的流程圖,主控芯片上運(yùn)行了μC/OS輕量級(jí)嵌入式實(shí)時(shí)操作系統(tǒng),采用的是可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核,意味著處理器在任何時(shí)候都是運(yùn)行
優(yōu)先級(jí)最高的任務(wù),這樣就很方便地實(shí)現(xiàn)了整個(gè)下位機(jī)各種任務(wù)的調(diào)度,同時(shí)也保證了系統(tǒng)的實(shí)時(shí)性。主控芯片啟動(dòng)μC/OS后,分別建立語(yǔ)音識(shí)別任務(wù)、串口接收任務(wù)、液晶顯示任務(wù)、入侵檢測(cè)任務(wù)4個(gè)任務(wù)。在語(yǔ)音識(shí)別中,首先查詢LD3320狀態(tài)寄存器的識(shí)別完成位是否置位,然后做出應(yīng)答,執(zhí)行相應(yīng)的動(dòng)作,語(yǔ)音播報(bào)執(zhí)行結(jié)果,并發(fā)送一個(gè)信號(hào)量表明屋內(nèi)電器狀態(tài)有變化,需要更新顯示;串口接收任務(wù)的工作是對(duì)上位機(jī)發(fā)送過來(lái)的數(shù)據(jù)準(zhǔn)確無(wú)誤地接收,解密解碼,并根據(jù)指令對(duì)電器進(jìn)行相應(yīng)操作;液晶顯示屏顯示任務(wù)會(huì)一直檢測(cè)是否有更新顯示的信號(hào)量,若有信號(hào)量則執(zhí)行整屏刷新,同時(shí)對(duì)應(yīng)的信號(hào)量自動(dòng)清空;啟動(dòng)安防系統(tǒng)后,便會(huì)運(yùn)行實(shí)時(shí)監(jiān)控,根據(jù)數(shù)量密集的傳感器網(wǎng)絡(luò)狀態(tài)判斷家中的安全指數(shù),智能的軟件決定何時(shí)應(yīng)該發(fā)出警報(bào)信號(hào)。
5 上位機(jī)控制軟件,PC端以及安卓手機(jī)端的設(shè)計(jì)
服務(wù)器(一臺(tái)運(yùn)行openwrt系統(tǒng)的路由器)運(yùn)行起來(lái)后,USB攝像頭自動(dòng)掛載,在PC端上的位機(jī)設(shè)置窗口設(shè)置好IP與密碼信息后,上位機(jī)通過TCP連接到服務(wù)器,獲取視頻/圖片信息,顯示在上位機(jī)的GUI界面上。界面中的其他控件同樣是利用TCP連接到服務(wù)器上,發(fā)送或者獲取信息,服務(wù)器接收到請(qǐng)求后則通過ser2net進(jìn)程,將tcpserver的信息轉(zhuǎn)發(fā)到串口上,與下位機(jī)進(jìn)行通信。手機(jī)端上位機(jī)設(shè)計(jì)得比較簡(jiǎn)單,如圖4所示,大按鈕方便控制家庭中各種電器。
6 結(jié)束語(yǔ)
文中設(shè)計(jì)了一種基于STM32F1系列的智能家居系統(tǒng),詳細(xì)地介紹了系統(tǒng)的整體架構(gòu)并給出了幾種重要的硬件裝置和服務(wù)器軟件的實(shí)現(xiàn)方法。
實(shí)現(xiàn)了室內(nèi)實(shí)時(shí)功率、室內(nèi)溫度、天氣的監(jiān)測(cè),和內(nèi)/外網(wǎng)遠(yuǎn)程控制家中的電器,遠(yuǎn)程視頻監(jiān)控功能以及安防設(shè)施,語(yǔ)音識(shí)別正確率達(dá)88%,網(wǎng)絡(luò)服務(wù)器部分采用了路由器代替PC機(jī)的方案,系統(tǒng)整體待機(jī)功耗≤5 W。手機(jī)控制端的設(shè)計(jì)按鍵清晰易操作,可以方便地控制部分家電的工作狀態(tài)。最終實(shí)現(xiàn)了智能家居需求的功能。