基于TCP/IP協(xié)議的智能家居控制系統(tǒng)設(shè)計
掃描二維碼
隨時隨地手機看文章
引言
物聯(lián)網(wǎng)是多網(wǎng)融合時代的必然產(chǎn)物,它將人與人之間的 溝通連接擴展到了人與物、物與物之間的溝通連接,智能化、 網(wǎng)絡(luò)化的生活將讓人們工作、生活更加便捷和人性。智能家居 是物聯(lián)網(wǎng)的一個重要應(yīng)用,智能家居控制系統(tǒng)主要實現(xiàn)了家庭 智能網(wǎng)關(guān)對家庭各種設(shè)備的控制及設(shè)定。用戶可以通過手持 控制器或各種控制面板在家庭內(nèi)部進行家電設(shè)備控制,完成 家庭內(nèi)部的閉環(huán)控制,也可以通過手機、上網(wǎng)等方式實現(xiàn)對 家電的遠程控制。用戶可以根據(jù)自己的需求自由地增加/刪 減家電控制節(jié)點并可通過全圖形化向?qū)гO(shè)置家電,使用方便、 操作簡單。
用戶利用手機、電腦等終端登錄網(wǎng)絡(luò)服務(wù)器,輸入用戶 名和密碼后,通過互聯(lián)網(wǎng)連接到家中的智能控制器(控制中心)。 智能控制器調(diào)用相關(guān)的程序,將控制信息或查詢信息通過RF 無線通信網(wǎng)絡(luò)傳送給家電微控制器,家電微控制器收到數(shù)據(jù) 后,進行相應(yīng)的處理,產(chǎn)生接口數(shù)據(jù),然后將接口數(shù)據(jù)上傳至 網(wǎng)絡(luò)服務(wù)器,最終實現(xiàn)用戶通過瀏覽器可以看到家里各種家 電設(shè)備的狀態(tài)信息,并可以通過點擊瀏覽器頁面上的各種與家 電設(shè)備相關(guān)聯(lián)的按鈕來控制。
1系統(tǒng)總體設(shè)計
本系統(tǒng)基于物聯(lián)網(wǎng)而設(shè)計,系統(tǒng)可分為感知層、網(wǎng)絡(luò)層 和應(yīng)用層等三層。系統(tǒng)的層次結(jié)構(gòu)如圖1所示。
本系統(tǒng)的感知層采用STM8S103單片機作為微控芯片,CC1101芯片作為RF無線收發(fā)芯片,該層功能是對終端電器 進行數(shù)據(jù)采集、數(shù)據(jù)收發(fā)以及狀態(tài)監(jiān)控,將電器的實時監(jiān)控 數(shù)據(jù)通過RF無線網(wǎng)絡(luò)傳送到家庭控制中心。具體工作流程 為:CC1101無線收發(fā)芯片收到控制中心的數(shù)據(jù)后,對其進行 解調(diào),格式正確則存入接收FIFO,通知MCU有新數(shù)據(jù)到達。 STM8S103微控芯片讀取數(shù)據(jù)并進行解碼,然后進行相應(yīng)操 作,上傳家電狀態(tài)數(shù)據(jù)或則控制家電并更新數(shù)據(jù)上報控制中心。 STM8S103采集到家電狀態(tài)信息后,將數(shù)據(jù)進行編碼,將一定 格式的數(shù)據(jù)通過SPI寫入CC1101的發(fā)送FIFO,由CC1101芯 片負(fù)責(zé)將數(shù)據(jù)發(fā)送給控制中心。
網(wǎng)絡(luò)層采用STM32F103VCT6單片機作為核心處理芯 片,DM9000AEP芯片作為網(wǎng)絡(luò)接口控制芯片,該層功能主 要是處理來自應(yīng)用層的TCP/IP數(shù)據(jù)包和來自感知層的RF 無線數(shù)據(jù)包。網(wǎng)卡芯片DM9000AEP實現(xiàn)接收和發(fā)送TCP/ IP數(shù)據(jù)包,CC1101無線通信模塊實現(xiàn)RF無線數(shù)據(jù)的收發(fā), STM32F103VCT6負(fù)責(zé)將收到的數(shù)據(jù)進行處理。DM9000AEP 收到來自應(yīng)用層TCP/IP數(shù)據(jù)包后,STM32F103VCT6對數(shù)據(jù) 進行解調(diào)、解碼。再將數(shù)據(jù)封裝成一定格式的RF數(shù)據(jù)包, 傳給CC1101無線通信模塊,發(fā)送給感知層。反之為逆過程。
應(yīng)用層包括網(wǎng)站應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,其功能是接 收用戶請求,以實現(xiàn)對電器的遠程控制。其中網(wǎng)站應(yīng)用程序 主要實現(xiàn)人機對話接口,是用戶進行帳戶管理和家電控制的 綜合系統(tǒng),按照ASP的MVC模式進行開發(fā),網(wǎng)站用戶名密 碼通過MD5不可逆加密算法進行處理,目前世界上仍不能對 MD5加密后的數(shù)據(jù)進行解密,以確保對家電控制的安全操作。 網(wǎng)絡(luò)應(yīng)用程序則是使用線程池處理來自多個網(wǎng)絡(luò)層通信芯片的 TCP/IP數(shù)據(jù)包,同時將網(wǎng)站用戶請求通過TCP協(xié)議發(fā)送給網(wǎng) 絡(luò)層的網(wǎng)卡芯片DM9000AEP。這種分層結(jié)構(gòu)將大量用戶的控 制請求轉(zhuǎn)由服務(wù)器CPU進行處理,從而大大降低了網(wǎng)絡(luò)層單 片機STM32F103VCT6的負(fù)荷。
2系統(tǒng)硬件電路設(shè)計
2.1網(wǎng)絡(luò)接口電路設(shè)計
主控芯片選用增強型的STM32F103VCT6單片機,內(nèi)置 256 KB FLASH 和 48 KB SRAM,工作頻率為 72 MHz,完 全可以滿足TCP/IP數(shù)據(jù)包發(fā)送速度和接收速度的要求。采 用外部SPI FLASH來保存需要斷電保存的數(shù)據(jù),例如IP地 址、子網(wǎng)掩碼、網(wǎng)關(guān)、客戶賬號及密碼等。STM32F103VCT6 內(nèi)部有20 KB的運行空間(48 KB的SRAM),完全可以滿 足處理TCP/IP數(shù)據(jù)包所需要的10 KB左右的內(nèi)存空間,無 需外部RAM,這樣保證了數(shù)據(jù)的接收速度與發(fā)送速度。 STM32F103VCT6集成了 FSMC模塊,具有四個片選輸出, 支持 PC 卡 /CF 卡,SRAM, PSRAM,NOR 和 NAND。
網(wǎng)卡芯片采用DM9000AEP以太網(wǎng)控制器,該芯片具有 快速以太網(wǎng)MAC控制器、10M/100M自適應(yīng)的PHY和4K DWORD值的SRAM, IO管腳兼容3.3 V/5.0 V電壓,支持8位、 16位和32位接口訪問內(nèi)部存儲器。
本設(shè)計為STM32F103VCT6單片機通過高速FSMC與 DM9000AEP網(wǎng)卡芯片進行通信,最高速度可達100 Mb/s。 DM9000AEP 的數(shù)據(jù)引腳 SD0-SD15 連接 STM32F103VCT6 的數(shù)據(jù)總線(FSMC_D0~FSMC_D15),通過CMD引腳區(qū)分 數(shù)據(jù)總線和地址總線,IOW引腳接單片機的寫信號引腳 (FSMC_NOE), IOR引腳接單片機的讀信號引腳(FSMC_ NEW),CMD引腳接單片機的PD11引腳(FSMC_A16),CS 引腳接單片機的片選信號引腳(LAN_NCS),PWRST引腳接 單片機的復(fù)位引腳(NREST),INT引腳接單片機的中斷引腳 (PB0/LANINT),RX+,RX-,TX+,TX-兩對差分信號線接 帶有隔離變壓器的RJ45座,LED2/LinkAct引腳和 LED1/Speed引腳用于顯示各種狀態(tài)。單片機通過FSMC總線 可以對DM9000AEP實現(xiàn)讀控制寄存器、寫控制寄存器、讀 緩沖器、寫緩沖器、位域置1、位域清零和軟件復(fù)位。網(wǎng)卡芯 片的連接電路如圖2所示。
2.2 RF無線通信電路設(shè)計
本文采用低成本、超高頻無線收發(fā)器CC1101作為RF無 線收發(fā)芯片,工作在433 MHz頻率上,可編程控制的數(shù)據(jù)傳 輸率最高可達500 Kb/s。CC1101芯片的接收或發(fā)送模式可通 過微控制器STM8S103F3編程配置。CC1101芯片處于接收狀 態(tài)時,首先對收到的RF信號進行放大處理,然后通過混頻 器將高頻信號轉(zhuǎn)換為中頻信號,中頻信號再被ADC轉(zhuǎn)換為數(shù) 字信號,解調(diào)后的信號經(jīng)前向糾錯和數(shù)據(jù)包處理,正確無誤 的數(shù)據(jù)存人接收FIFO,產(chǎn)生脈沖信號通知MCU收到新數(shù)據(jù), MCU通過SPI 口讀取數(shù)據(jù)。在發(fā)射模式下,MCU將待發(fā)送 的數(shù)據(jù)寫入CC1101的發(fā)送FIFO, CC1101把需要發(fā)送出去的 數(shù)據(jù)通過GFSK載波的形式發(fā)送出去。
3系統(tǒng)軟件設(shè)計
3.1終端程序設(shè)計
終端系統(tǒng)執(zhí)行兩個任務(wù):CC1101無線收發(fā)信息、四線制 查詢或控制家電狀態(tài)。上電初始化時設(shè)置T0定時器和開啟外 部中斷。微控制器周期性采集家電狀態(tài)信息,通過與存儲信 息比較,發(fā)現(xiàn)家電工作狀態(tài)異?;騽t改變,則將數(shù)據(jù)封裝成固 定格式幀,通過CC1101發(fā)射數(shù)據(jù),上報網(wǎng)絡(luò)層。當(dāng)外部中斷0 接收到來自網(wǎng)絡(luò)層的控制命令時,微控制器解包后對家電進行 控制,并且回發(fā)狀態(tài)信息。
3.2網(wǎng)關(guān)(控制中心)程序設(shè)計
網(wǎng)關(guān)系統(tǒng)的功能主要有:通過DM9000AEP連接以太網(wǎng), 實現(xiàn)網(wǎng)關(guān)與服務(wù)器通信;通過CC1101無線收發(fā)模塊,實現(xiàn)網(wǎng) 關(guān)與終端通信;通過STM32F103VCT6實現(xiàn)數(shù)據(jù)處理、協(xié)議 轉(zhuǎn)換。網(wǎng)關(guān)系統(tǒng)初始化包括ARP初始化、TCP初始化、內(nèi) 存初始化、定時器初始化和網(wǎng)卡芯片初始化。初始化完成后,設(shè)置網(wǎng)卡芯片的IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)和本地監(jiān)聽的 端口。接著就開啟中斷,以便主動連接服務(wù)器,其中IO外部 中斷之一用來處理來自DM9000AEP的請求,以便收發(fā)來互聯(lián) 網(wǎng)的數(shù)據(jù)包;外部中斷之二則處理來自CC1101的請求以便接 收來自感知層的RF信號,若中斷沒有發(fā)生則進入節(jié)電模式。 網(wǎng)絡(luò)層的單片機控制流程如圖3所示。
3. 3應(yīng)用層程序設(shè)計
在應(yīng)用層,系統(tǒng)采用MVC模式進行系統(tǒng)設(shè)計??刂破?的Servlet程序分為兩部分:一部分與網(wǎng)站程序一起處理來自 瀏覽器的業(yè)務(wù)邏輯,包括用戶注冊、登錄和控制電器等操作; 另外一部分構(gòu)建一個獨立的線程池,以便監(jiān)聽到指定端口, 等待來自網(wǎng)絡(luò)層中各個設(shè)備的TCP連接,完成與網(wǎng)絡(luò)層的會 話。ASP頁面是人機接口,完成顯示任務(wù),其數(shù)據(jù)由Servlet 和JavaBean程序產(chǎn)生。JavaBean程序是處理用戶請求和電器 控制的事務(wù)邏輯程序,讀取數(shù)據(jù)庫中的數(shù)據(jù)并給予存儲和查 詢。
4通信協(xié)議設(shè)計
控制器通過RF無線通信技術(shù)與終端節(jié)點通信,考慮無 線通信的干擾以及保密,RF通信采用特定的幀格式,以確保 通信可靠。無線數(shù)據(jù)包的幀格式如表1所列,其無線數(shù)據(jù)包 包含的會話序號為控制通信流程;目的ID和源ID是判斷發(fā) 送方和接受方;節(jié)點類型用于判斷終端節(jié)點功能;控制命令用 于控制家電的工作狀態(tài);數(shù)據(jù)字段用于攜帶家電的工作狀態(tài)信 息;校驗字段用于校驗數(shù)據(jù)包是否收發(fā)正確。
本系統(tǒng)通信會話流程如圖4所示。系統(tǒng)上電初始化后, 網(wǎng)絡(luò)層的網(wǎng)關(guān)主動連接服務(wù)器,建立一個基于TCP協(xié)議的 Socket連接來進行會話,并發(fā)送自身設(shè)備的序列號和密碼。 服務(wù)器監(jiān)聽到來自網(wǎng)絡(luò)層通信MCU的請求后,驗證序列號 和密碼是否在數(shù)據(jù)庫中存在,并將驗證后的狀態(tài)返回給通信 MCU,若驗證通過后將進行會話。若感知層有新的節(jié)點,控 制中心收到入網(wǎng)申請后,根據(jù)節(jié)點功能分配ID,并且儲存節(jié)點 信息。當(dāng)控制中心收到外部中斷,首先判斷中斷來自應(yīng)用層還 是感知層,進行數(shù)據(jù)處理和協(xié)議轉(zhuǎn)換后轉(zhuǎn)發(fā)出去。當(dāng)感知層 接到外部中斷后,則根據(jù)信息直接報告當(dāng)前工作狀態(tài),或則改 變工作狀態(tài)后再上報新的工作狀態(tài)。服務(wù)器收到信息后,將工 作狀態(tài)與用戶請求比對:若狀態(tài)相同則報告處理完畢,反之則 重新發(fā)送控制命令。若任務(wù)完成,服務(wù)器端斷開此條TCP連接, 則一次通信完成。用戶可在遠端通過手機或者電腦上網(wǎng)登錄自 己的客戶端,就可以完成對家電的遠程控制。
圖4通信流程圖
5系統(tǒng)測試
5.1測試環(huán)境
控制器與服務(wù)器通信測試使用已配置好IP的商用電腦進 行測試,控制器與路由器連接,路由器與商用電腦連接,上電 自動完成測試。
5.2遠程控制系統(tǒng)測試
5.2.1連通性測試
在網(wǎng)絡(luò)設(shè)備端,采用Windows XP系統(tǒng)的Ping命令對 網(wǎng)絡(luò)設(shè)備進行連通性測試。網(wǎng)絡(luò)層精簡的TCP/IP協(xié)議中同時 實現(xiàn)了 ARP和TCP協(xié)議,所以也可以使用APR、Telnet或 PathPing命令測試網(wǎng)絡(luò)層設(shè)備的連通性。網(wǎng)絡(luò)層設(shè)備能夠被 Ping通,說明設(shè)備協(xié)議實現(xiàn)正確。通過以上各種方法進行測 試都表明網(wǎng)絡(luò)層設(shè)備與互聯(lián)網(wǎng)連通性良好,能夠穩(wěn)定進行局域 網(wǎng)通信。
5.2.2監(jiān)聽測試
在服務(wù)器端使用SocketTest工具軟件監(jiān)聽服務(wù)器1000端口,開啟接收數(shù)據(jù)提示。網(wǎng)絡(luò)層微控制器STM32F103VCT6 主動向廣域網(wǎng)服務(wù)器1000端口發(fā)起TCP連接請求,并將此設(shè) 備的ID和Password封包發(fā)送給服務(wù)器。能夠?qū)?shù)據(jù)包準(zhǔn)確 發(fā)送到服務(wù)器,說明網(wǎng)絡(luò)層設(shè)備與互聯(lián)網(wǎng)連通性良好,能夠與 廣域網(wǎng)通信。
6參數(shù)測試
微控制器STM32F103VCT6在使用8 MHz晶振時,用 Sniffer抓包軟件測得其與服務(wù)器最高通信速度可達25 KB/s。 使用Ping命令,向192.168.1.101發(fā)送500個包,無丟包現(xiàn)象。 這500個數(shù)據(jù)包當(dāng)中,返回速度最快耗時為41 ms,最慢耗 時為93 ms,平均耗時為53 ms,完全能滿足家電遠程控制的 實時性要求。
通過瀏覽器瀏覽家電狀態(tài)信息,點擊頁面電燈、風(fēng)扇的 開關(guān)按鍵,實現(xiàn)了遠程控制電燈、風(fēng)扇的開關(guān)狀態(tài)。
7結(jié)語
隨著物聯(lián)網(wǎng)技術(shù)的深入發(fā)展,智能家居前景廣泛并已 經(jīng)得到了世界著名廠商的關(guān)注并將被運用于實際生活中,它 能夠造福人類,讓人們的生活更舒適、更便捷。本文針對基 于物聯(lián)網(wǎng)技術(shù)的智能家居系統(tǒng)進行了研究,主要完成了系統(tǒng) 的總體設(shè)計,該智能家居系統(tǒng)以STM32F103VCT6單片機與 DM9000AEP網(wǎng)卡芯片為硬件平臺,設(shè)計了 RF無線收發(fā)、家 電控制等模塊,通過無線網(wǎng)絡(luò)將各種家電設(shè)備連接在一起, 從而實現(xiàn)信息家電的網(wǎng)絡(luò)化和遠程監(jiān)控。家庭數(shù)字化道路在 我國還有漫長的路要走,智能家居系統(tǒng)具有廣闊的應(yīng)用前景, 值得更深入地研究和探討。
20211222_61c2f12773ff9__基于TCP