基于TCP/IP協(xié)議的全自動(dòng)電飯煲遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)
近年來,隨著控制技術(shù)、計(jì)算機(jī)技術(shù)和寬帶網(wǎng)絡(luò)技術(shù)的快速發(fā)展,測(cè)控技術(shù)和通信領(lǐng)域的結(jié)合應(yīng)用已經(jīng)成為大勢(shì)所趨。傳統(tǒng)的控制系統(tǒng)都是專用網(wǎng)絡(luò),控制設(shè)備及軟件也是專用的,開放程度不夠,給系統(tǒng)維護(hù)及升級(jí)帶來不便[1]。在因特網(wǎng)遍布全球,各種先進(jìn)網(wǎng)絡(luò)技術(shù)日新月異的今天,使用網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)遠(yuǎn)程控制自然成為首選。
本文以全自動(dòng)電飯煲為例,設(shè)計(jì)一種基于TCP/IP協(xié)議的全自動(dòng)電飯煲遠(yuǎn)程控制系統(tǒng),該系統(tǒng)分為三個(gè)部分:一是利用網(wǎng)卡芯片實(shí)現(xiàn)網(wǎng)絡(luò)通信接口與因特網(wǎng)服務(wù)器之間的通信;二是紅外通信電路的設(shè)計(jì),實(shí)現(xiàn)網(wǎng)卡芯片與電飯煲微控制器的通信;三是電飯煲的改造,利用微控制器實(shí)現(xiàn)電飯煲機(jī)電一體化。該系統(tǒng)的實(shí)現(xiàn),為家用電器全面接入因特網(wǎng)進(jìn)行遠(yuǎn)程控制奠定了基礎(chǔ)。
1設(shè)計(jì)方案
本文設(shè)計(jì)的全自動(dòng)電飯煲遠(yuǎn)程控制系統(tǒng)參照物聯(lián)網(wǎng)模型將系統(tǒng)分為三層:感知層、網(wǎng)絡(luò)層和應(yīng)用層[2],每層執(zhí)行特定的任務(wù)。該系統(tǒng)的整體結(jié)構(gòu)如圖1所示。應(yīng)用層包含網(wǎng)站應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,其功能是用戶利用計(jì)算機(jī)或手機(jī)通過因特網(wǎng)遠(yuǎn)程控制電飯煲或擴(kuò)展的其他電器[3]。其中,網(wǎng)站應(yīng)用程序主要實(shí)現(xiàn)人機(jī)接口,是用戶進(jìn)行賬戶管理和電飯煲控制的綜合系統(tǒng)。網(wǎng)絡(luò)應(yīng)用程序使用線程池處理來自網(wǎng)絡(luò)層通信芯片的TCP/IP數(shù)據(jù)包,同時(shí)將用戶請(qǐng)求通過TCP協(xié)議發(fā)送給網(wǎng)絡(luò)層的網(wǎng)卡芯片ENC28J60。這種分層結(jié)構(gòu)將大量用戶的控制請(qǐng)求轉(zhuǎn)由服務(wù)器CPU進(jìn)行處理,從而大大降低了網(wǎng)絡(luò)層MCU的負(fù)荷。網(wǎng)絡(luò)層處理來自應(yīng)用層的TCP/IP數(shù)據(jù)包和來自感知層的紅外數(shù)據(jù)包。該層以單片機(jī)STC89C58RD+為核心處理芯片,構(gòu)建TCP/IP協(xié)議棧,并用網(wǎng)卡芯片ENC28J60收發(fā)來自應(yīng)用層的TCP/IP數(shù)據(jù)包,最后將此數(shù)據(jù)進(jìn)行調(diào)制解調(diào)。感知層的功能是對(duì)電飯煲進(jìn)行狀態(tài)監(jiān)控,并將其實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)傳送到網(wǎng)絡(luò)層。具體地說,該層是以AT89S52單片機(jī)作為微控制器,用紅外一體化接收頭接收網(wǎng)絡(luò)層的紅外載波信號(hào),并對(duì)該信號(hào)解調(diào)以控制電飯煲,同時(shí)將電飯煲的狀態(tài)信息調(diào)制后通過紅外一體化的發(fā)送頭傳送給網(wǎng)絡(luò)層;感知層還可以連接多個(gè)擴(kuò)展電器,從而實(shí)現(xiàn)多用戶控制多電器的方案。
2 硬件設(shè)計(jì)
全自動(dòng)電飯煲遠(yuǎn)程控制系統(tǒng)的核心是網(wǎng)絡(luò)層接口電路和電飯煲機(jī)械系統(tǒng)的設(shè)計(jì)。網(wǎng)卡芯片與現(xiàn)場(chǎng)控制單片機(jī)AT89S52的數(shù)據(jù)通信利用紅外傳輸,采用NEC編碼方式[4],接收端通過一體化紅外接收頭HS0038,對(duì)信號(hào)進(jìn)行放大、檢波、整形和解調(diào)等,得到TTL電平的編碼信號(hào)。HS0038將此編碼信號(hào)傳送至AT89S52的P3.2(INT0)引腳,經(jīng)AT89S52解碼后依據(jù)指令執(zhí)行相關(guān)的控制程序。全自動(dòng)電飯煲系統(tǒng)包括控制系統(tǒng)和機(jī)械系統(tǒng)[5]。以AT89S52單片機(jī)為核心構(gòu)建全自動(dòng)電飯煲的控制系統(tǒng)。用戶通過網(wǎng)站用戶程序輸入控制命令,通過網(wǎng)絡(luò)傳輸?shù)浆F(xiàn)場(chǎng),現(xiàn)場(chǎng)控制單片機(jī)AT89S52接收到這些指令后,判斷指令的具體需求,再調(diào)用相關(guān)程序以控制機(jī)械裝置及電飯煲執(zhí)行相應(yīng)動(dòng)作。
2.1 接口電路設(shè)計(jì)
網(wǎng)絡(luò)層選用增強(qiáng)型的STC89C58RD+單片機(jī)作為微控芯片。STC89C58RD+內(nèi)部?jī)H有1.28 KB的存儲(chǔ)空間,不能滿足處理TCP/IP數(shù)據(jù)包所需的10 KB左右的存儲(chǔ)空間。因此使用數(shù)據(jù)存儲(chǔ)器62256將其外部存儲(chǔ)器外擴(kuò)至32 KB,這樣也有利于提高數(shù)據(jù)的接收與發(fā)送速度。
在網(wǎng)絡(luò)層中,紅外信號(hào)的接收、發(fā)送與感知層的設(shè)計(jì)類似,其不同點(diǎn)在于采用STC89C58RD+的INT1引腳的中斷方式處理來自外部的紅外信號(hào),見圖2。網(wǎng)卡芯片ENC28J60是由Microchip推出的以太網(wǎng)控制器,使用串行外設(shè)接口(SPI)的引腳(SO、SI、SCK、CS)和兩個(gè)中斷引腳(INT和WOL)與主控制器進(jìn)行通信,最高速度可達(dá)到10 Mb/s。該芯片內(nèi)部有一個(gè)DMA模塊,可以實(shí)現(xiàn)數(shù)據(jù)的快速吞吐和硬件支持IP校驗(yàn)和的計(jì)算。該芯片的兩個(gè)引腳LEDA、LEAB用于連接LED,用于顯示連接、發(fā)送、接收、沖突和全/半雙工等狀態(tài)。STC89C58RD+內(nèi)部不帶SPI接口,使用4個(gè)I/O引腳模擬SPI輸入輸出時(shí)序與ENC28J60進(jìn)行通信。ENC28J60的SPI有7條指令集用以實(shí)現(xiàn)讀控制寄存器、寫控制寄存器、讀緩沖器、寫緩沖器、位域置1、位域清零和軟件復(fù)位。ENC28J60中有控制寄存器、以太網(wǎng)緩沖器和PHY寄存器。SPI接口是STC89C58RD+與ENC28J60的通信通道,由總線接口對(duì)其接收的數(shù)據(jù)和命令進(jìn)行解析,可以直接對(duì)控制寄存器進(jìn)行讀寫,并對(duì)ENC28J60進(jìn)行配置、控制和狀態(tài)獲取。以太網(wǎng)緩沖器包含供以太網(wǎng)控制器使用的發(fā)送和接收存儲(chǔ)器,該緩沖器大小為 8 KB,分成獨(dú)立的接收和發(fā)送緩沖空間。PHY寄存器用于對(duì) PHY模塊進(jìn)行配置、控制和狀態(tài)獲取。ENC28J60需要通過MCU的中斷處理來控制事件中斷INT和LAN,觸發(fā)中斷時(shí)會(huì)占用STC89C58RD+的外部中斷口INT0。ENC28J60的差分輸入、輸出引腳(TPIN+/-和TPOUT+/-)在以太網(wǎng)變壓器作用下經(jīng)RJ45接口與因特網(wǎng)通信,以實(shí)現(xiàn)網(wǎng)絡(luò)層以太網(wǎng)控制器與應(yīng)用層服務(wù)器物理線路的聯(lián)通。
2.2 電飯煲機(jī)械系統(tǒng)設(shè)計(jì)
為了實(shí)現(xiàn)電飯煲機(jī)電一體化,在傳統(tǒng)電飯煲的基礎(chǔ)上,增加設(shè)計(jì)了電飯煲機(jī)械系統(tǒng),包括儲(chǔ)米裝置、取米裝置、淘米裝置、放米裝置以及加水裝置。機(jī)械系統(tǒng)總體設(shè)計(jì)如圖3所示。儲(chǔ)米裝置為框架頂端的儲(chǔ)米漏斗,直徑30 cm,高10 cm,可一次性存放7.5 kg大米。取米裝置由儲(chǔ)米漏斗底端的電磁鐵實(shí)現(xiàn),電磁鐵選用直流電磁鐵HCNE1-1039,由于卡槽采用45°傾斜設(shè)計(jì),大大減小了電磁鐵啟閉時(shí)米粒的摩擦阻力。淘米裝置由攪拌電機(jī)和淘米漏斗構(gòu)成。其中攪拌電機(jī)選用TN-40.180/HC685G100618。放米裝置由電磁鐵和旋轉(zhuǎn)臂構(gòu)成,電磁鐵同樣選用HCNE1-1039。旋轉(zhuǎn)臂由兩個(gè)可逆電機(jī)控制,可以升降和旋轉(zhuǎn),采用行程開關(guān)限位,實(shí)現(xiàn)電飯煲鍋蓋的開閉。加水裝置由電磁閥和進(jìn)水管構(gòu)成,電磁閥選用2W160-15。
3 軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)包括應(yīng)用層的網(wǎng)站程序和網(wǎng)絡(luò)程序、網(wǎng)絡(luò)層的TCP/IP數(shù)據(jù)包收發(fā)程序和紅外通信程序,以及感知層的紅外收發(fā)程序和全自動(dòng)電飯煲控制程序。在應(yīng)用層,系統(tǒng)采用MVC模式[6]進(jìn)行軟件設(shè)計(jì)。控制器的Servlet程序分為兩部分:一部分與網(wǎng)站程序一起處理來自瀏覽器的業(yè)務(wù)邏輯,包括用戶注冊(cè)、登錄和控制電器等操作;另外一部分構(gòu)建一個(gè)獨(dú)立的線程池,以便監(jiān)聽到指定端口,等待來自網(wǎng)絡(luò)層中各個(gè)設(shè)備的TCP連接,完成與網(wǎng)絡(luò)層的會(huì)話。在感知層,考慮到紅外通信的不穩(wěn)定性, 服務(wù)器和微控制器之間的通信數(shù)據(jù)采用自定義的特殊格式,以避免因數(shù)據(jù)丟失或冗余而造成的系統(tǒng)錯(cuò)誤[7]。因此在對(duì)電飯煲進(jìn)行控制時(shí),采用自定義協(xié)議對(duì)電飯煲信息進(jìn)行封包解包。此協(xié)議的設(shè)計(jì)包括兩方面:電飯煲數(shù)據(jù)包和通信會(huì)話流程。全自動(dòng)電飯煲控制程序按照取米、淘米、放米、加水、煮飯的流程進(jìn)行,實(shí)現(xiàn)電飯煲工作全自動(dòng)化。
本文重點(diǎn)闡述網(wǎng)絡(luò)層的軟件設(shè)計(jì)。如圖4所示,微控制器首先進(jìn)行系統(tǒng)初始化,包括ARP、TCP、內(nèi)存、定時(shí)器和網(wǎng)卡芯片初始化。初始化完成后,設(shè)置網(wǎng)卡芯片ENC28J60的IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)和本地監(jiān)聽的端口。接著開啟中斷,以便主動(dòng)連接服務(wù)器,其中外部中斷0處理來自ENC28J60的請(qǐng)求,以便收發(fā)來自因特網(wǎng)的數(shù)據(jù)包;外部中斷1則處理來自HS0038的請(qǐng)求以便接收來自感知層的紅外信號(hào),若中斷沒有發(fā)生則進(jìn)入節(jié)電模式。
微控制器與服務(wù)器之間的通信需要在單片機(jī)內(nèi)部實(shí)現(xiàn)TCP/IP協(xié)議,當(dāng)8位MCU接入以太網(wǎng)時(shí),由于系統(tǒng)資源的有限性很難實(shí)現(xiàn)完整的TCP/IP協(xié)議。網(wǎng)絡(luò)層微控制器的功能主要包括傳輸現(xiàn)場(chǎng)數(shù)據(jù)和接收遠(yuǎn)程控制命令,數(shù)據(jù)量較少且格式簡(jiǎn)單,故對(duì)TCP/IP協(xié)議進(jìn)行裁減。精簡(jiǎn)協(xié)議棧時(shí)只保留鏈路層的地址解析協(xié)議、網(wǎng)絡(luò)層的IP協(xié)議、差錯(cuò)報(bào)文控制協(xié)議和傳輸層的TCP協(xié)議,且對(duì)需要實(shí)現(xiàn)的協(xié)議只實(shí)現(xiàn)必需的算法部分。TCP/IP協(xié)議采用了4層結(jié)構(gòu):應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層。圖5描述了輸入輸出數(shù)據(jù)包流程和精簡(jiǎn)的TCP/IP協(xié)議[8]。
4 系統(tǒng)測(cè)試
全自動(dòng)電飯煲遠(yuǎn)程控制系統(tǒng)硬件和軟件設(shè)計(jì)完成后,需要對(duì)系統(tǒng)進(jìn)行測(cè)試,以驗(yàn)證本設(shè)計(jì)方案的有效性 [9]。網(wǎng)絡(luò)層ENC28J60芯片的RJ45接口通過網(wǎng)線與路由器連接。網(wǎng)卡設(shè)置IP為192.168.1.101,子網(wǎng)掩碼為255.255.255.0,網(wǎng)關(guān)為192.168.1.1,本地端口1001。計(jì)算機(jī)使用網(wǎng)線與路由器連接,設(shè)置為自動(dòng)獲取IP,保證網(wǎng)絡(luò)層設(shè)備IP與計(jì)算機(jī)IP處于同一網(wǎng)段。路由器WAN端口連接類型設(shè)置為動(dòng)態(tài)IP,LAN端口IP設(shè)置為192.168.1.1。目的服務(wù)器設(shè)置B類IP為202.115.176.195,操作系統(tǒng)為Windows Server 2003服務(wù)器。微控制器STC89C58RD+在使用12 MHz晶振時(shí),用Sniffer抓包軟件測(cè)得其與服務(wù)器最高通信速度可達(dá)25 KB/s。使用ping命令,向192.168.1.101發(fā)送500個(gè)包,無丟包現(xiàn)象。這500個(gè)數(shù)據(jù)包中,返回速度最快為41 ms,最慢為93 ms,平均速度為53 ms,完全能滿足電飯煲遠(yuǎn)程控制的實(shí)時(shí)性要求。
感知層的被控對(duì)象為經(jīng)過改造的全自動(dòng)電飯煲。通過網(wǎng)站選擇控制電器為全自動(dòng)電飯煲,并設(shè)置米量和水量,發(fā)送啟動(dòng)指令。感知層的單片機(jī)AT89S52收到控制指令后,完成取米、淘米、放米、加水及煮飯的全部流程,并把控制流程中每一個(gè)運(yùn)行狀態(tài)反饋給應(yīng)用層的計(jì)算機(jī)。本文設(shè)計(jì)的電飯煲遠(yuǎn)程控制系統(tǒng)對(duì)米量和水量的計(jì)量是通過單片機(jī)對(duì)電磁鐵和電磁閥定時(shí)控制實(shí)現(xiàn)的,因此,米量和水量的計(jì)量是否準(zhǔn)確,是控制系統(tǒng)測(cè)試的重點(diǎn)。測(cè)試時(shí)設(shè)置米量400~1 000 g,間隔100 g,水量設(shè)定為米量的2倍,即米量為400 g時(shí),水量為800 ml,依次類推。米量和水量各測(cè)試3次,測(cè)試值和設(shè)定值如表1所示。從表1可以看出,米量、水量的設(shè)定值與測(cè)試值比較接近,說明利用定時(shí)控制進(jìn)行計(jì)量是準(zhǔn)確的。通過對(duì)電飯煲遠(yuǎn)程控制系統(tǒng)的多次實(shí)驗(yàn),系統(tǒng)均能按要求完成所有動(dòng)作,而且米量、水量的計(jì)量也是準(zhǔn)確的,說明該系統(tǒng)遠(yuǎn)程通信良好,電飯煲工作穩(wěn)定,計(jì)量準(zhǔn)確。
從實(shí)驗(yàn)結(jié)果來看,本文設(shè)計(jì)的全自動(dòng)電飯煲遠(yuǎn)程控制系統(tǒng)的方案是可行的。在該方案中,通過強(qiáng)化MCU的控制功能來弱化構(gòu)建Web服務(wù)器的應(yīng)用,將復(fù)雜業(yè)務(wù)邏輯轉(zhuǎn)移到因特網(wǎng)的服務(wù)器上,這樣就發(fā)揮了因特網(wǎng)服務(wù)器多線程處理能力,支持多用戶對(duì)多個(gè)家電的實(shí)時(shí)控制。紅外通信使系統(tǒng)在室內(nèi)控制方便且易于擴(kuò)展,從而使全部家用電器接入因特網(wǎng)絡(luò)成為可能。在傳統(tǒng)電飯煲的基礎(chǔ)上,增加設(shè)計(jì)了機(jī)械系統(tǒng),實(shí)現(xiàn)了電飯煲機(jī)電一體化。米量和水量的計(jì)量采用單片機(jī)定時(shí)控制替代了復(fù)雜的流量控制裝置,使得操作更加簡(jiǎn)單,提高了系統(tǒng)的穩(wěn)定性,同時(shí)也使得系統(tǒng)成本更低。
通過本系統(tǒng),用戶使用計(jì)算機(jī)或手機(jī)就可以遠(yuǎn)程控制全自動(dòng)電飯煲,而且通過網(wǎng)站程序還能實(shí)時(shí)掌握電飯煲的運(yùn)行狀態(tài)。本文設(shè)計(jì)的遠(yuǎn)程控制系統(tǒng)還具有很強(qiáng)的擴(kuò)展性。網(wǎng)絡(luò)層單片機(jī)通過紅外通信的方式可以擴(kuò)展控制多個(gè)其他家用電器,如冰箱、洗衣機(jī)、空調(diào)、熱水器等。當(dāng)然每一個(gè)電器必須配置一個(gè)能收發(fā)紅外信號(hào)和控制電器的微控制器。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展及手機(jī)的普及,家用電器接入因特網(wǎng)成為一種必然趨勢(shì)。本文提出的多用戶遠(yuǎn)程控制多個(gè)家電的方案,成本低,運(yùn)行穩(wěn)定,擴(kuò)展性強(qiáng),必將在智能家居中得到大量的應(yīng)用。同樣,該系統(tǒng)也可廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)的遠(yuǎn)程控制,如機(jī)器人、智能溫室等。由于因特網(wǎng)技術(shù)的介入,遠(yuǎn)程控制技術(shù)將得到進(jìn)一步發(fā)展,這勢(shì)必對(duì)人類生活及工業(yè)、農(nóng)業(yè)控制產(chǎn)生巨大影響。隨著網(wǎng)絡(luò)技術(shù)發(fā)展和物聯(lián)網(wǎng)標(biāo)準(zhǔn)的制定,遠(yuǎn)程控制系統(tǒng)必將具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] 韋文斌,潘耀東,古田勝久.基于因特網(wǎng)技術(shù)的遠(yuǎn)程機(jī)器人控制器設(shè)計(jì)[J]. 控制工程, 2006,13(2):168-171.
[2] 陳銳. 物聯(lián)網(wǎng)——后IP時(shí)代國家創(chuàng)新發(fā)展的重大戰(zhàn)略機(jī)遇[J].中國科學(xué)院院刊, 2010,25(1): 41-49.
[3] 黃文浪. 基于因特網(wǎng)的遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)[J]. 科技廣場(chǎng),2010(5):53-55.
[4] 高恭嫻. 低成本學(xué)習(xí)型紅外遙控器的設(shè)計(jì)[J]. 低壓電器, 2009(22):24-26.
[5] 黃美春,汪熊海. 基于網(wǎng)絡(luò)的家電智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電氣自動(dòng)化,2008,30(3):55-56.
[6] 劉中兵, 陳艷燕, 程琳梅. Web2.0動(dòng)態(tài)網(wǎng)站開發(fā)—JSP技術(shù)與應(yīng)用[M]. 北京:清華大學(xué)出版社,2009.
[7] STEVENS W. TCP/IP詳解卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2000.
[8] 王芳,周優(yōu)霞. 嵌入式TCP/IP協(xié)議棧在單片機(jī)上的實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2010(10):198-201.
[9] 葉愛華,趙明鏡,方芳. 基于Lon Works技術(shù)的遠(yuǎn)程工業(yè)控制[J]. 控制工程,2006(13):145-148.
評(píng)論