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