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