文/彭銀橋 吳吉
隨著計算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,以及人們生活水平不斷提高,智能家居將成為人們生活方式的一種必然趨勢。智能家居的網(wǎng)絡(luò)化、互聯(lián)化,智能化,不僅為人們提供安全、方便和舒適的生活環(huán)境,而且能隨時隨地監(jiān)控自己的家居狀態(tài)和控制家庭電器設(shè)備。智能家居采用無線網(wǎng)絡(luò)技術(shù),解決了有線網(wǎng)絡(luò)布線麻煩、使用過多電纜及擴(kuò)展性差等問題,提高了安全性,降低了成本。本文設(shè)計了一種基于STM32上位機(jī)、ZigBee無線通信及紅外遙控通信技術(shù)的智能家居系統(tǒng),實現(xiàn)了遙控家電設(shè)備等智能家居的基本功能。
系統(tǒng)總體功能如圖1所示,用戶通過遙控器選擇不同的節(jié)點,被選中的節(jié)點led燈亮,以提示用戶該節(jié)點為當(dāng)前被選中的節(jié)點,用戶可以按下遙控器不同的按鍵,對連接在該節(jié)點上的設(shè)備進(jìn)行需要的操作。用戶可以通過遙控器調(diào)節(jié)照明燈的亮度、打開或關(guān)閉風(fēng)扇以及打開或者關(guān)閉窗簾。一個遙控器可以同時控制不同的節(jié)點;一個節(jié)點可以同時連接不同的設(shè)備。
系統(tǒng)工作原理框架如圖2所示,系統(tǒng)主要由STM32上位機(jī)和遙控器、Zigbee協(xié)調(diào)器以及節(jié)點和設(shè)備三部分組成。系統(tǒng)初始化時,ZigBee協(xié)調(diào)器組建網(wǎng)絡(luò),ZigBee節(jié)點加入網(wǎng)絡(luò),加入成功后,會把自己的地址發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器接收并保存全部節(jié)點的地址,以備之后解析地址。用戶用遙控器通過紅外接頭和STM32通信,STM32接收用戶命令,通過串口把要操作的節(jié)點和命令發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器接收消息后,判斷用戶是切換節(jié)點還是操作當(dāng)前節(jié)點,再轉(zhuǎn)換成命令消息,并轉(zhuǎn)發(fā)相應(yīng)的消息到對應(yīng)的節(jié)點,節(jié)點接收消息并解析消息,從而控制相應(yīng)的設(shè)備。
圖1:系統(tǒng)功能
圖2:系統(tǒng)工作原理框架圖
系統(tǒng)硬件組成如圖3所示,其中STM32上位機(jī)電路由STM32F103CBT6芯片、晶振電路、復(fù)位電路、電源電路和外圍的紅外接收模塊組成;協(xié)調(diào)器由cc2530芯片、晶振電路、復(fù)位電路、射頻電路組成;節(jié)點和設(shè)備通過繼電器、步進(jìn)電機(jī)組成第三部分電路。
紅外接收頭采用HS0038紅外接收探頭,紅外通信使用950納米的紅外線作為無線傳輸通道,進(jìn)行調(diào)試和解調(diào)。紅外通信一般有發(fā)送端和接收端。發(fā)送端把需要發(fā)送的數(shù)字信號作為基帶信號,按照采用脈沖位置(PPM)的方法,來調(diào)制按照數(shù)字信號發(fā)生變換的載波,最后通過發(fā)送端把載波轉(zhuǎn)換為紅外線,發(fā)送出去。接收端的接收二極管接收到信號,經(jīng)過放大、濾波,把光信號轉(zhuǎn)換為電信號傳給解調(diào)器,解調(diào)器也采用PPM方式,還原出原始的數(shù)字信號。
STM32的最小系統(tǒng)如圖 4所示。晶振電路能夠為最小系統(tǒng)提供一個穩(wěn)定的8MHz的外部時鐘源;電源電路能夠?qū)⑼獠康?V電壓轉(zhuǎn)換為3.3v的芯片工作電壓;復(fù)位電路提供用戶復(fù)位系統(tǒng);紅外模塊負(fù)責(zé)接收用戶用遙控器發(fā)來的信號,調(diào)制并換成數(shù)字信號,發(fā)送給STM32F103芯片進(jìn)行處理;STM32F103作為最小系統(tǒng)的核心,能夠解析信號,并通過串口發(fā)送信號給協(xié)調(diào)器。
ZigBee是基于IEE802.15.4無線標(biāo)準(zhǔn)協(xié)議的無線通信技術(shù),適用于短距離、低功耗的自動控制領(lǐng)域。ZigBee協(xié)調(diào)器能夠組建一個智能家居內(nèi)部局域網(wǎng),以便各個節(jié)點加入網(wǎng)絡(luò)。同時又起到承上啟下的作用,負(fù)責(zé)接收STM32通過串口傳來的消息,并將消息轉(zhuǎn)發(fā)到相應(yīng)的節(jié)點,實現(xiàn)用戶所希望的無線控制設(shè)備。系統(tǒng)選用TI公司的CC2530芯片作為ZigBee協(xié)調(diào)器的CPU。CC2530是廣泛應(yīng)用于2.4G片上系統(tǒng)解決方案,具有優(yōu)秀的接收器靈敏度和強(qiáng)干擾性,以及較低的成本。
圖3:系統(tǒng)硬件組成框圖
圖4:STM32最小系統(tǒng)電路框圖
圖5:節(jié)點窗簾電路
圖6:系統(tǒng)主程序流程圖
圖7:STM32程序流程圖
圖8:ZigBee協(xié)調(diào)器程序流程圖
圖9:ZigBee節(jié)點程序流程圖
ZigBee節(jié)點電路包括風(fēng)扇電路、調(diào)光電路和窗簾電路。風(fēng)扇的繼電器驅(qū)動電路和照明燈的調(diào)光電路相對比較簡單,本文不給出。窗簾電路主要由ULN2003的驅(qū)動板和4相5線的步進(jìn)電機(jī)組成,ULN2003驅(qū)動板主要作用是為電機(jī)放大電流,以驅(qū)動步進(jìn)電機(jī)。當(dāng)步進(jìn)電機(jī)工作于單相八拍模式時,步進(jìn)角度為5.625o,由于步進(jìn)電機(jī)的減速比為1:64,因此步進(jìn)電機(jī)的真正步進(jìn)角度為5.625/64。需要控制電機(jī)的轉(zhuǎn)動,通過計算把周期數(shù)換成節(jié)拍數(shù),實現(xiàn)想要控制步進(jìn)電機(jī)所需要旋轉(zhuǎn)的周數(shù)。窗簾電路如圖5所示。
系統(tǒng)軟件設(shè)計主要實現(xiàn)STM32上位機(jī)和紅外遙控的通信,協(xié)調(diào)器和節(jié)點的通信、節(jié)點控制設(shè)備三大功能。系統(tǒng)主程序流程如圖6所示,在系統(tǒng)初始化時,先由協(xié)調(diào)器組網(wǎng),節(jié)點加入網(wǎng)絡(luò),并向協(xié)調(diào)器發(fā)送自己的地址,協(xié)調(diào)器收到節(jié)點地址,并保存節(jié)點地址。系統(tǒng)初始化完后,用戶按下要控制的節(jié)點按鍵,STM32通過HS0038接頭接收到信號,并通過串口發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器接收到數(shù)據(jù)后,分配要發(fā)送消息節(jié)點的地址和信號,并向節(jié)點發(fā)送消息。對應(yīng)的節(jié)點接收到消息后,判斷消息類型,并執(zhí)行相應(yīng)的操作,控制對應(yīng)的設(shè)備。
STM32上位機(jī)模塊主要實現(xiàn)判斷信號、設(shè)置要發(fā)送的串口數(shù)據(jù)和向協(xié)調(diào)器發(fā)送數(shù)據(jù)功能。STM32程序流程如圖7所示,STM32通過HS0038接收頭接收到用戶從遙控器發(fā)來的信號,STM32判斷接收的信號是切換當(dāng)前節(jié)點,還是只是操作命令,然后設(shè)置要控制的節(jié)點(node)和要操作的命令(cmd),通過串口向協(xié)調(diào)器發(fā)送node和cmd。
圖7中,STM32接收信號是通過定時器捕獲中斷來識別。具體如下,STM32初始化時,設(shè)置紅外接收引腳為上邊沿捕獲,當(dāng)紅外接頭接收到紅外信號時,通過信號輸出腳向STM32輸出高電平,STM32通過邊沿捕獲進(jìn)入中斷,進(jìn)入中斷后,設(shè)置捕獲引腳為下邊沿捕獲,并清定時器,接收到低電平時,即信號結(jié)束,STM32捕獲到下邊沿,再次進(jìn)入中斷,讀取定時器的計數(shù)值,并根據(jù)定時器的頻率計算出高電平的時間,最后將得到的高電平時間進(jìn)行解碼,得到按鍵值返回給主函數(shù),進(jìn)入到鍵值的判斷信號過程。
協(xié)調(diào)器程序主要實現(xiàn)接收STM32數(shù)據(jù)、解析節(jié)點地址和命令和向相應(yīng)的節(jié)點發(fā)送操作消息功能。ZigBee協(xié)調(diào)器程序流程如圖8所示,協(xié)調(diào)器串口接收到STM32發(fā)來的消息后,判斷消息是切換當(dāng)前被選中節(jié)點,還是直接操作命令。如果是切換當(dāng)前節(jié)點,協(xié)調(diào)器向上個節(jié)點發(fā)送關(guān)閉led燈消息,并關(guān)閉上個節(jié)點的led燈,之后向要選中的節(jié)點發(fā)送點亮led燈消息;如果是直接操作命令,協(xié)調(diào)器向當(dāng)前被選中的節(jié)點發(fā)送對應(yīng)的消息。
ZigBee節(jié)點程序主要實現(xiàn)接收協(xié)調(diào)器發(fā)來的消息和控制相應(yīng)設(shè)備功能。ZigBee節(jié)點程序流程如圖9所示,節(jié)點接收到消息后,判斷是操作照明燈、風(fēng)扇還是窗簾,最后控制設(shè)備。
系統(tǒng)設(shè)計完成后進(jìn)行了測試,系統(tǒng)運行穩(wěn)定,對照明燈的亮度調(diào)節(jié)及風(fēng)扇和窗簾的開關(guān)控制準(zhǔn)確。該控制系統(tǒng)結(jié)構(gòu)簡單、控制準(zhǔn)確、擴(kuò)展方便、成本低廉,適合一般家庭使用,具有較高的推廣價值。
參考文獻(xiàn)
[1]王一棋,何麗莉,胡成全.基于ZigBee和Internet的無線智能家居網(wǎng)關(guān)系統(tǒng)[J].吉林大學(xué)學(xué)報,2015,53(02):303-304.
[2]童江松,李仁旺,錢小燕.基于ARM的智能家居紅外控制系統(tǒng)設(shè)計[J].浙江理工大學(xué)學(xué)報,2015,33(01):125-127.
[3]張逢雪,王香婷,王通生,徐廣瑞.基于STM32 單片機(jī)的無線智能家居控制系統(tǒng)[J].自動化技術(shù)與應(yīng)用,2011,30(08):98-101.
[4]尹紀(jì)庭,袁佳,焦志曼,吳斌,張在房,余建波.基于ARM和ZigBee的智能家居控制系統(tǒng)研究與開發(fā)[J].計算機(jī)測量與控制,2013,21(09):2451-2454.
[5]謝娟文,王串娥.基于CC2530與移動終端的測控網(wǎng)關(guān)設(shè)計[J].蘭州工業(yè)學(xué)院報,2015,22(06):85-87.
[6]藏恒星,章國寶,朱葉盛.基于CC2530的智能家居ZigBee模塊設(shè)計[J].工業(yè)控制計算機(jī),2016,29(02):29-30.