


摘 要:文中提出了采用單片機STC15F2K60S2和以太網控制芯片W5500的繼電器遠程控制方案,并給出了各模塊的詳細電路圖以及單片機主程序流程圖。該方案工作可靠、網絡安全性高、性價比高,在智能樓宇、智能家居等領域有著良好的應用前景。
關鍵詞:遠程控制;W5500;單片機;繼電器
中圖分類號:TP39 文獻標識碼:A 文章編號:2095-1302(2016)05-00-04
0 引 言
繼電器遠程控制的實現不僅方便了操作并且提高了效率。只要有網絡的地方就可以對繼電器進行控制,再由繼電器控制其他設備,從而實現設備的遠程控制。通過使用以太網控制芯片W5500,利用TCP協議,便可實現繼電器的遠程控制。
1 系統總體結構
系統總體結構如圖1所示。計算機作為客戶端,W5500作為服務器,利用TCP協議實現客戶端到服務器的連接。計算機端使用廣州致遠電子有限公司開發的免費軟件“TCP&UDP測試工具”發送繼電器控制命令;控制命令經網絡傳送到W5500;單片機通過讀取W5500的接收數據存儲器接收控制命令,并根據命令對繼電器進行開關控制。系統所需的主要工作包括W5500網絡控制模塊電路的設計、單片機及繼電器控制模塊電路的設計和單片機控制程序的設計。
圖1 系統總體結構
2 硬件設計
2.1 W5500網絡控制模塊
系統以W5500芯片為核心組成網絡控制模塊,采用TCP協議與計算機端進行通信,接收計算機端發送來的繼電器控制命令。
2.1.1 W5500簡介
由于OSI(Open System Interconnection,開放式系統互聯)七層協議的網絡體系結構模型與TCP/IP四層協議的網絡體系結構模型都有各自的優缺點,因此在分析、研究計算機網絡時往往采用Andrew S.Tanenbaum教授建議的綜合以上兩種模型優點的五層協議的網絡體系結構模型,它包括物理層、數據鏈路層、網絡層、傳輸層以及應用層。
W5500是韓國WIZnet公司于2013年推出的一款以太網控制芯片,它整合了五層計算機網絡體系結構中的前四層,即物理層、數據鏈路層、網絡層和傳輸層,并在內部利用硬件實現了TCP/IP協議棧。全硬件TCP/IP協議棧完全獨立于主控芯片,可降低主芯片負載且無需移植繁瑣的TCP/IP協議棧;可有效應對網絡攻擊和病毒,安全性高[1]。W5500為用戶提供了一個簡易的互聯網連接方案。W5500功能框圖如圖2所示。
圖2 W5500的功能框圖
W5500集成了硬件TCP/IP協議,包括TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPPoE協議和以太網的PHY和MAC層。W5500內嵌32 K字節收發緩存以供以太網包處理。用戶使用W5500,只需要一些簡單的Socket編程就能實現以太網應用。這將會比采用軟件實現TCP/IP協議棧的傳統以太網方案更加快捷、簡便。用戶可以同時使用8個硬件Socket獨立通訊。W5500提供了串行外設接口(Serial Peripheral Interface,SPI),從而能夠更加容易地與外設MCU整合。而且W5500使用了新的高效SPI協議支持80 MHz速率,從而能夠更好地實現高速網絡通訊。為了減少系統能耗,W5500提供了網絡喚醒模式(Wake on LAN,WoL)及掉電模式供用戶選擇使用[2]。
2.1.2 W5500網絡控制模塊電路設計
W5500網絡控制模塊電路如圖3所示。其中,P1為帶網絡變壓器的RJ45插座,通過網線與網絡連接;P2插針用于模塊供電以及和單片機連接。W5500正常工作時,需提供3.3 V數字電源,VDD(28腳)對GND(29腳);3.3 V模擬電源,AVDD(4/8/11/15/17/21腳)對AGND(3/9/14/16/19/48腳)。為方便與外部不同工作電壓的單片機控制系統配合工作,本模塊可通過P2插針輸入+5 V或3.3 V電壓供電。當外部輸入電壓為+5 V時,+5 V電源經低壓差電壓調節器U1 LM1117-3.3轉換為+3.3 V電壓輸出,對整個模塊供電,并可通過P2插針的+3 V 3D引腳給其它模塊提供3.3 V電源。
W5500的XI(30腳)、XO(31腳)為時鐘引腳,共外接25 MHz石英晶體振蕩電路;RSTn(37腳)為復位引腳,低電平有效,和單片機I/O引腳連接,由單片機控制W5500進行復位;PMODE2(43腳)、PMODE1(44腳)、PMOD0(45腳)為網絡工作模式選擇引腳,設置為“所有功能,啟動自動協商”;EXRES1(10腳)為外部參考電阻引腳,外接一個精度為1%的12.4 kΩ外部參考電阻,為內部模擬電路提供偏壓;TOCAP(20腳)為外部參考電容引腳,外接一個4.7 μF電容,而且到該電容的走線要盡量短一些,以保證內部信號的穩定;1V2O為內部穩壓器1.2 V電壓輸出引腳,外接一個10 nF電容;TXN(1腳)、TXP(2腳)為差分信號發送引腳;RXN(5腳)、RXP(6腳)為差分信號接收引腳;SCSn(32腳)為W5500的SPI接口片選引腳,低電平有效;SCLK(33腳)為SPI時鐘輸入引腳;MISO(34腳)為SPI主機輸入從機(W5500)輸出引腳;MOSI(35腳)為SPI主機輸出從機(W5500)輸入引腳;INTn(36腳)為W5500中斷輸出引腳,低電平有效。
2.2 單片機及繼電器控制模塊
W5500利用硬件實現了TCP/IP協議棧,大大降低了主控芯片負載,使得應用廣泛的8位單片機也能順利完成以太網接入。本方案采用我國宏晶科技公司最新推出的內置高速SPI接口的增強型8051單片機STC15F2K60S2作為主控芯片。
2.2.1 STC15F2K60S2簡介
STC15F2K60S2 單片機采用1T(1時鐘周期/機器周期)增強型8051內核,速度比傳統8051單片機快7~12倍,也比STC早期的1T系列單片機(如STC12/11/10系列)快20%;內置大容量2 KB的RAM數據存儲器,1 KB的Flash數據存儲器,60 KB的Flash程序存儲器;具有3個16位可自動重裝的定時/計數器(T0/T1/T2),1個高速SPI,8通道10位ADC等資源。并且,它內部集成高精度R/C時鐘(±0.3%),頻率從5 MHz~35 MHz可選(相當于傳統8051:60 MHz~420 MHz),可徹底省掉外部昂貴的晶振;內部集成高可靠復位電路,ISP編程時8級復位門檻電壓可選,可徹底省掉外部復位電路;具有在系統編程(In System Programming,ISP)功能,無需專用編程器[3]。
2.2.2 單片機及繼電器控制模塊電路設計
單片機及繼電器控制模塊電路如圖4所示。STC15F2K60S2單片機控制電路省略了傳統8051單片機最小應用系統中所必需的外部晶振、外部復位電路,提供+5 V電源單片機即可工作,外圍電路非常簡潔。在電源+5 V和GND之間就近加上電源去耦電容C21(10μF)、C22(0.1μF),可去除電源線噪聲,提高抗干擾能力。P3為單片機ISP接口,便于采用USB轉TTL電平的串口下載線進行系統軟件的升級;P4為單片機SPI接口,用于和W5500芯片通信。
系統中設計了兩路繼電器控制電路,可用于控制外部開關量。繼電器的驅動電路由三極管Q1、Q2組成,Q1、Q2起功率放大作用。繼電器K1、K2分別由單片機的P2.7、P2.6引腳控制。繼電器K1、K2的常開、常閉觸點分別經接線端子P5、P6引出。
3 軟件設計
通過W5500利用TCP協議實現繼電器遠程控制的單片機程序采用C語言編寫,主程序流程圖如圖5所示。
在主程序中,首先進行單片機的SPI接口和W5500模塊的初始化,然后檢查W5500是否接收到數據。若接收到數據,則單片機讀取W5500的數據接收存儲器,并根據讀取到的命令對繼電器進行控制。在計算機端發送命令“open+RLY_K1”或者“open+RLY_K2”打開繼電器K1和K2,發送命令“close+RLY_K1”或者“close+RLY_K2”則關閉繼電器K1和K2。各程序模塊主要工作包括以下幾項內容。
3.1 SPI接口初始化
STC15F2K60S2單片機通過SPI接口與W5500進行通信,對W5500所有的操作都需要通過SPI接口進行數據傳輸。在對W5500進行數據傳輸之前,要先對STC15F2K60S2的SPI接口的相關寄存器進行設置,即SPI接口的初始化。STC15F2K60S2單片機SPI接口的初始化包括以下幾點:
通過SPI控制寄存器SPCTL設置:忽略引腳,SPI使能,數據字的最低位(LSB)最先傳送,設置為主機,SPI空閑時SCK=1,數據在SCK的前時鐘沿驅動到SPI口線,SPI模塊在后時鐘沿采樣。
清0寄存器SPSTAT中的標志位SPIF和WCOL(向這兩個標志位寫1即可清0)。
開放SPI中斷(IE2中的ESPI=1,IE2寄存器不能位尋址,可使用“或”指令進行設置)。
開放總中斷(IE中的EA=1)。
3.2 W5500初始化
在使用W5500之前,首先應對其進行初始化,正確設置以下寄存器:模式寄存器(MR)、中斷屏蔽寄存器(IMR)、重發時間寄存器(RTR)、重發次數寄存器(RCR)、本機硬件地址寄存器(SHAR)、網關地址寄存器(GAR)、子網掩碼寄存器(SUBR)、本機IP地址寄存器(SIPR)以及設置Socket存儲器信息。初始化過程結束后,W5500可以以TCP、UDP、IPRAW和MACRAW的模式打開Socket,以進行數據的發送和接收。
3.3 接收數據
接收數據時,需要檢查寄存器Sn_RX_RSR,檢查數據是否已經被接收到:如果Sn_RX_RSR的值大于0,則說明接收到的數據在接收存儲器(RX buffer)中,然后通過讀取RX讀指針寄存器(Sn_RX_RD0)獲取數據地址,然后將數據從W5500接收存儲器中讀出,并存放到單片機端的接收緩沖區RX_BUF數組中。
圖5 單片機主程序流程圖
3.4 讀取命令,控制繼電器
通過查找RX_BUF數組中是否包含有“open+RLY_K1”、“open+RLY_K2”、“close+RLY_K1”或者“close+RLY_K2”命令,并根據讀取到的命令,通過控制單片機P2.7、P2.6引腳電平的高低對繼電器K1、K2進行開關控制。
3.5 清空接收緩沖區
清空單片機端的接收緩沖區RX_BUF數組,為接收下一個控制命令做好準備。
4 實驗結果
在計算機端打開 “TCP&UDP測試工具”,點擊“創建連接”,選擇類型為“TCP”,目標IP為W5500的本機IP地址,端口為W5500的Socket0的端口號,本機端口設置為“隨機選擇端口”,完成客戶端的創建;連接好網線,給單片機控制模塊、W5500網絡控制模塊上電,點擊“TCP&UDP測試工具”上的“連接”,客戶端(計算機端)與服務端(W5500模塊)連接成功;通過“TCP&UDP測試工具”分別發送“open+RLY_K1”、“open+RLY_K2”、“close+RLY_K1”、“close+RLY_K2”等命令,能正確控制對應的繼電器接通斷。
5 結 語
本文提出了基于STC15F2K60S2+W5500的繼電器遠程控制方案,并給出了各電路模塊詳細的電路圖和單片機主程序流程圖。通過網絡,對繼電器進行遠程控制,再由繼電器控制其他設備,便可實現設備的遠程控制。在需要遠程控制的設備數量較多的應用場合中,還可以根據以上設計方案增加繼電器的路數來實現。該方案工作可靠、網絡安全性高、性價比高,在智能樓宇、智能家居等領域有著良好的應用前景。
參考文獻
[1] 陳桂友,陳海峰,賀紅.物聯網智能網關設計與應用[M].北京:北京航空航天大學出版社,2013:222-224.
[2] WIZnet.W5500 Datasheet Version 1.0.6[EB/OL].(2014-12-30)[2015-12-18]. http://wizwiki.net/wiki/lib/exe/fetch.php?media=products:w5500:w5500_ds_v106e_141230.pdf
[3] 吳永德,羅萍.基于STC15F2K60S2單片機的LED光立方設計[J].電腦編程技巧與維護,2015(11):81-84.