基于STM32的智能家居系統(tǒng)應(yīng)用研究
摘要 系統(tǒng)以STM32F103為控制核心,用戶通過手機或其它手持設(shè)備經(jīng)藍牙模塊發(fā)送數(shù)據(jù)到STM32上,STM32接收到指令處理后經(jīng)紅外模塊發(fā)送到終端設(shè)備上。實現(xiàn)家居的智能控制,整個系統(tǒng)具有較強的抗干擾能力及可靠性,可適用于智能家居應(yīng)用領(lǐng)域。
關(guān)鍵詞 智能家居;藍牙模塊;紅外模塊
智能家居是以住宅為平臺,利用綜合布線、網(wǎng)絡(luò)通信、智能家居系統(tǒng)設(shè)計方案、安全防范、自動控制、音視頻技術(shù)將家居生活有關(guān)的設(shè)施集成,構(gòu)建高效的住宅設(shè)施與家庭日程事務(wù)的管理系統(tǒng),提升家居安全性、便利性、舒適性、藝術(shù)性,并實現(xiàn)環(huán)保節(jié)能的居住環(huán)境。
1 智能家居系統(tǒng)硬件平臺
STM32的智能家居的系統(tǒng)拓撲結(jié)構(gòu)如圖1所示,STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M3內(nèi)核。該系統(tǒng)采用STM32F103“增強型”系列的STM32芯片,設(shè)計的總體思路通過手機或其它手持設(shè)備的藍牙通信模塊與STM32上的藍牙模塊進行通信,接收到的數(shù)據(jù)進行處理,再通過紅外模塊發(fā)送到受控終端上。受控終端接收到紅外指令后執(zhí)行指定的操作,如電視、風扇、空調(diào)等電器設(shè)備的開關(guān)等操作。紅外模塊可以學習到各種遙控器的指令,通過學習遙控器的指令儲存到QT軟件所編寫的界面中,解決了遙控器過多的煩惱,從而實現(xiàn)家居的智能化控制。通過報警模塊可以實現(xiàn)火災(zāi)時的報警,保障了家居安全。
1.1 藍牙模塊
藍牙HC05是主從一體的藍牙串口模塊,即當藍牙設(shè)備與藍牙設(shè)備配對連接成功后,可以忽視藍牙內(nèi)部的通信協(xié)議,直接將藍牙當作串口用。當建立連接,兩設(shè)備共同使用一通道也就是同一個串口,一個設(shè)備發(fā)送數(shù)據(jù)到通道中,另外一個設(shè)備便可以接收通道中的數(shù)據(jù)。當然,對于建立這種通道連接有一定條件,那就是對藍牙設(shè)置好能進行配對連接的AT模式。
HC05藍牙模塊與STM32的串口3相連接。HC05的RDX與STM32芯片的第55管腳USART3-TX連接,TXD與第56管腳USART3-RX連接,GND與Vcc連接到相應(yīng)的GND與Vcc上,KEY與第65管腳PC8連接。模塊上電后,通過KEY接Vcc,使模塊進入AT指令,模塊的波特率設(shè)置為38400。
1.2 紅外模塊
BC7210芯片由海外知名廠商制造,比高公司擁有版權(quán)的紅外遙控解碼專用芯片。BC7210可以完成目前國內(nèi)市場上常用的飛利浦RC5和NEC兩種紅外編碼信號的解碼。BC7210的輸出可以設(shè)置為并行輸出或者串行輸出,串行輸出方式兼容SPI和UART兩種接口,可以輕松完成與各種MCU的接口相連接,完成與MCU的通信。BC7210與STM32連接的硬件設(shè)計方法如圖2所示。
BC7210的串行輸出兼容于“波特率9 600 bit·s-1,1個起始位,1個停止位,無奇偶校驗”的USART,只需D7與STM32的87管腳USART2-RX連接。MOD與S/P分別與PB3和PB5相連接。這種接口方式只需占用1根口線,微處理器的數(shù)據(jù)接收可以由硬件完成,占用CPU資源少。
1.3 報警模塊
無線收發(fā)模組,采用射頻技術(shù),也叫RF433射頻小模塊,采用全數(shù)字科技生產(chǎn)的單IC射頻前段與ATMEL的AVR單片機組成,可高速傳輸數(shù)據(jù)信號的微型收發(fā)信機,無線傳輸?shù)臄?shù)據(jù)進行打包、檢錯、糾錯處理。元器件都采用工業(yè)級標準,工作穩(wěn)定可靠,體積小便于安裝。適用于安全報警、無線自動抄表、家居及工業(yè)自動化、遠端遙控、無線數(shù)傳等領(lǐng)域,433報警模塊與STM32的串口1相連接。
SM30型433MHz微功率無線串口通信模塊,是上海上志電子信息技術(shù)有限公司生產(chǎn),可以動態(tài)管理無線通信方式:將STM32和無線模塊JP1引腳的1(GND),2(Vcc),3(RXD/TTL),4(TXD/TTL),9(RESET)共5個引腳連接好,1腳接GND,2腳接VCC,3和4兩腳分別接STM32的串口上,通過串口發(fā)送給模塊設(shè)置命令,設(shè)置完成以后,置SETEN為高電平或與地斷開,上電復(fù)位或RST(如果8腳接在用戶STM32的I/O口上)低電平(10 ms)復(fù)位,及可以用新的參數(shù)工作。
2 軟件系統(tǒng)設(shè)計
整個智能家居系統(tǒng)以STM32微處理器為控制核心,使用C語言編寫。智能家居系統(tǒng)的軟件可分為手機、STM32系統(tǒng)2個部分,主要由藍牙驅(qū)動程序、紅外驅(qū)動程序和433報警程序組成。QT的軟件控制流程如圖3所示。當一個特定事件發(fā)生時,一個信號被發(fā)射。QT的窗口部件有多種預(yù)定義的信號,但可以通過繼承來加入自己的信號。槽就是一個可以被調(diào)用處理特定信號的函數(shù)。信號與槽是寬松地聯(lián)系在一起:一個發(fā)射信號的類無需已知哪個槽要接收這個信號。QT信號和槽可以保證如果將一個信號與一個槽連接起來,槽會在正確的時間使用信號的參數(shù)而被調(diào)用。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。
2.1 手機軟件設(shè)計
通過調(diào)用Qobject對象的connect函數(shù)來將某個對象的信號與另一個對象的沐曹函數(shù)相關(guān)聯(lián),這樣當發(fā)射者發(fā)射信號時,接收者的槽函數(shù)將被調(diào)用,該函數(shù)的定義為:
boolQObjeet::eonnect(eonstQOb—ieet*sender,eonstchar*signal,
eonstQObjeet*reeeiver,eonstehar*mexnber)
conneet函數(shù)將sender對象中的信號signal與reeeiver中的member槽函數(shù)相關(guān)聯(lián),這里的sender和receiver都是指向QObject類型對象的指針。QT的宏signal()用于指定信號signal;宏slot()用于指定槽函數(shù)。
當對象內(nèi)部發(fā)生某些事件時,它有可能發(fā)出信號。如果這個信號連接到槽,那么相應(yīng)的槽函數(shù)就被執(zhí)行??梢詫⒍鄠€槽連接到同一個信號,那么這些槽就將一一被執(zhí)行,其執(zhí)行順序是任意的。
2.2 STM32系統(tǒng)軟件設(shè)計
STM32系統(tǒng)軟件設(shè)計首先對STM32系統(tǒng)的初始化,采用Rtthread系統(tǒng)并創(chuàng)建了3個子進程,分別為藍牙模塊子進程、紅外模塊子進程、報警模塊子進程,設(shè)定任務(wù)的優(yōu)先級并初始化各子進程。編寫相應(yīng)的初始化及數(shù)據(jù)處理函數(shù)實現(xiàn)系統(tǒng)的正常運行,通過Rtthread進行系統(tǒng)的線程調(diào)度。
STM32的軟件控制流程如圖4所示。
(1)藍牙子進程程序設(shè)計,KEY位置高電平進入AT指令模式,通過發(fā)送AT指令進行藍牙模塊的設(shè)置,例如USART_Send_Cmd(“%s\r\n”,atstr);設(shè)置完成后KEY位置低進入數(shù)據(jù)透傳模式,進行數(shù)據(jù)傳輸。接受到指令后返回數(shù)據(jù),手機端對返回數(shù)據(jù)進行分析,如果接受錯誤數(shù)據(jù),則手機端重新發(fā)送數(shù)據(jù)。接收到正確數(shù)據(jù)后發(fā)送給相應(yīng)的模塊,執(zhí)行相應(yīng)的操作。藍牙軟件設(shè)計流程如圖5所示。
(2)紅外子進程程序設(shè)計,先初始化紅外模塊,對要發(fā)送的數(shù)據(jù)解碼后編碼再經(jīng)過紅外模塊發(fā)送出去。判斷是否發(fā)送結(jié)束,未發(fā)送完整則繼續(xù)發(fā)送。紅外軟件設(shè)計流程如圖6所示。
(3)報警子進程程序設(shè)計,初始化報警模塊,將一個家用煙感探測器與報警模塊相連,一旦超過設(shè)定值報警模塊通過STM32系統(tǒng)將報警信息,發(fā)送送到手機或其他終端設(shè)備上實現(xiàn)智能報警。判斷是否有報警信息,如果有報警信息則通過串口1將數(shù)據(jù)發(fā)送給STM32芯片,再執(zhí)行報警函數(shù)。
2.3 該系統(tǒng)在智能家居系統(tǒng)中的應(yīng)用
要控制紅外設(shè)備必須先學習控制該設(shè)備的紅外碼。首先,通過半口工具連接到該模塊,將該設(shè)備的遙控器對準紅外接收頭,通過半口工具發(fā)送對應(yīng)的報文,按下需要學習的鍵,然后就可以收到該控制鍵對應(yīng)的紅外碼。將學習到的紅外碼保存在QT的槽函數(shù)內(nèi)。實現(xiàn)了一個手機或終端設(shè)備智能的控制家電,并且實現(xiàn)了智能報警。
3 結(jié)束語
綜上所述,可知基于STM32的智能家居系統(tǒng)實現(xiàn)簡單,應(yīng)用廣泛。而藍牙技術(shù)的成熟和普及,可以將各種遙控器由一個Android手機軟件所代替,實現(xiàn)了智能化的控制電視、風扇、空調(diào)等設(shè)備。通過在室內(nèi)安裝多個STM32系統(tǒng),可以實現(xiàn)對每間房間的控制。基于STM32的智能家居系統(tǒng)綜合了多門技術(shù),主要包括視藍牙通信、紅外遙控技術(shù)、433報警等,隨著這些技術(shù)的發(fā)展,該智能家居系統(tǒng)將擁有更為廣闊的發(fā)展空間。