羅金生
摘要:為了實現(xiàn)設(shè)備遠(yuǎn)程的控制,本文介紹了以STM32為主控芯片,以NRF24l01芯片作為無線傳感網(wǎng)絡(luò)通訊芯片,ENC28J60作為以太網(wǎng)通信芯片,在使用SmallRTOS操作系統(tǒng)的情況下,利用STemWin圖形庫設(shè)計顯示界面,基于LwIP協(xié)議棧的底層控制系統(tǒng)。服務(wù)器利用JSP開發(fā)作為在線用戶管理,Android作為用戶應(yīng)用軟件控制的操作系統(tǒng)平臺。該方案不僅降低了開發(fā)成本,而且經(jīng)過實際測驗表明該方案性能可靠,使用方便,具有非常高的應(yīng)用價值。
Abstract: In order to realize the remote control of equipment, this paper introduces STM32 as the main control chip, NRF24l01 as the wireless sensor network communication chip, ENC28J60 as the Ethernet communication chip, and uses the STemWin graphics library when using the SmallRTOS operating system. The design display interface is based on the underlying control system of the LwIP protocol stack. The server uses JSP development as an online user management and Android as an operating system platform controlled by user application software. The program not only reduces the development cost, but also shows that the program is reliable and easy to use, and has a very high application value.
關(guān)鍵詞: STM32;ENC28J60;LwIP;Smallrtos;STemwin;JSP;服務(wù)器;Android;控制
Key words: STM32;ENC28J60;LwIP;Smallrtos STemwin;JSP;server;Android;control
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-4311(2018)21-0170-04
0 引言
近年來,隨著電子與通信技術(shù)的發(fā)展以及物聯(lián)網(wǎng)的普及,特別是嵌入式系統(tǒng)技術(shù)和移動智能終端的出現(xiàn),為遠(yuǎn)程設(shè)備控制領(lǐng)域發(fā)展提供了一種全新的模式。現(xiàn)階段我國遠(yuǎn)程設(shè)備控制的發(fā)展主要有一下3個問題:系統(tǒng)復(fù)雜、價格昂貴、通用性較低。嵌入式系統(tǒng)使用的linux的嵌入式操作系統(tǒng)開發(fā)難度較大;再次就是不同的廠家使用不同的協(xié)議規(guī)范,兼容性較差。
本文設(shè)計的物聯(lián)網(wǎng)的遠(yuǎn)程設(shè)備控制系統(tǒng)選擇了意法半導(dǎo)體公式基于Cortex-M4內(nèi)核生產(chǎn)的STM32F407系列的嵌入式微處理器為主控制器,ST公司專門有提供了該單片機(jī)的SDK庫,可以大大提高開發(fā)的周期與難度。無線節(jié)點采用芯片也是意法半導(dǎo)體公司生產(chǎn)的STM8s103f3的8位CPU,有提供的SDK庫,開發(fā)周期短。操作系統(tǒng)選擇了國內(nèi)開源免費的SmallRTOS操作系統(tǒng),它是完全免費、源代碼公開的多任務(wù)實時操作系統(tǒng)。網(wǎng)絡(luò)通信協(xié)議選擇了lwip,lwip是瑞典計算機(jī)科學(xué)院(SICS)的Adam Dunkels開發(fā)的一個小型開源的TCP/IP協(xié)議棧,該協(xié)議在運行的過程中只占用很小的ram,非常適合在嵌入式系統(tǒng)上使用。網(wǎng)絡(luò)接口采用了Microchip公司生產(chǎn)的ENC8J60,它是最高傳輸速度10m,帶spi接口的獨立以太網(wǎng)控制器。本系統(tǒng)通過無線組網(wǎng),底層控制,服務(wù)器管理,從而實現(xiàn)用戶在Android手機(jī)上通過開發(fā)的APP進(jìn)行遠(yuǎn)程控制。
1 系統(tǒng)整體方案
無線節(jié)點與遠(yuǎn)程設(shè)備電性連接,以便無線節(jié)點根據(jù)接收到的系統(tǒng)控制命令對遠(yuǎn)程設(shè)備的工作狀態(tài)進(jìn)行控制。無線節(jié)點還用于獲取所述遠(yuǎn)程設(shè)備的狀態(tài)信息,并將獲得的遠(yuǎn)程設(shè)備的狀態(tài)信息發(fā)送至所述遠(yuǎn)程設(shè)備網(wǎng)關(guān),最終由遠(yuǎn)程設(shè)備網(wǎng)關(guān)發(fā)送給遠(yuǎn)程服務(wù)器。系統(tǒng)整體的結(jié)構(gòu)框圖如圖1所示。
Android手機(jī)APP通過網(wǎng)絡(luò)連接遠(yuǎn)程的服務(wù)器。手機(jī)客戶端可實時查看遠(yuǎn)程設(shè)備數(shù)據(jù),或下發(fā)控制指令,遠(yuǎn)程設(shè)備網(wǎng)關(guān)通過有線網(wǎng)絡(luò)接入到互聯(lián)網(wǎng),處理來之Android端轉(zhuǎn)發(fā)給服務(wù)器的各種控制命令。用戶只要通過Android智能終端安裝相應(yīng)的APP就可以實現(xiàn)查看控制控制遠(yuǎn)程設(shè)備的各種數(shù)據(jù),同時還還可以根據(jù)這些數(shù)據(jù)對于控制對象進(jìn)行相應(yīng)的控制操作。這種完善的控制系統(tǒng),可以在任意有互聯(lián)網(wǎng)的地方,通過Android智能終端就可以進(jìn)行實時的控制。
2 系統(tǒng)硬件電路的設(shè)計
遠(yuǎn)程設(shè)備網(wǎng)關(guān)的部分硬件電路,即是微處理器最小系統(tǒng)電路,如圖2所示,處理器為意法半導(dǎo)體公司生產(chǎn)的基于Cortex-M4內(nèi)核的STM32F407ZET6,該單片機(jī)是一款具有高性能,低成本,低功耗的32位處理器,在180MHz的工作頻率下通過閃存執(zhí)行指令時可實現(xiàn)225 DMIPS/608 CoreMark的性能。隨附增強(qiáng)外設(shè)和連接的輸入/輸出,它們包括 ADC、DAC、RTC、16 位計時器、32 位計時器。廣泛應(yīng)用于工業(yè)控制領(lǐng)域。
NRF24L01是由NORDIC生產(chǎn)的工作在2.4GHz~2.5GHz的ISM 頻段的單片無線收發(fā)器芯片。無線收發(fā)器包括:頻率發(fā)生器、增強(qiáng)型“SchockBurst”模式控制器、功率放大器、晶體振蕩器、調(diào)制器和解調(diào)器。NRF24L01無線組網(wǎng)接口電路如圖3所示。由于NRF24L01采用的SPI通訊,微處理器本身帶有SPI接口,使用6根線就可以實現(xiàn)微處理器的連接。將管腳CE、CSN、IRQ、SCK、MISO和MOSI與STM32芯片進(jìn)行通訊。
無線節(jié)點電路如圖4所示,無線節(jié)點的芯片采用的意法半導(dǎo)體公司生產(chǎn)的STM8系列的處理器,該處理器具有3級流水線、擴(kuò)展指令集、8k字節(jié)的Flash、1k字節(jié)的ram、640字節(jié)的EEPROM、32個中斷嵌套中斷控制器、32位,16位,8位定時器、usart、spi、adc、支持單線(SWIM)和調(diào)試模塊(DM),可直接在線編程與調(diào)試。
ENC28J60網(wǎng)絡(luò)通訊接口和主控制器通過SPI通訊接口相連,連接接口為:PB3→SCK,PB4→MISO,PB5→MOSI。
3 系統(tǒng)軟件設(shè)計
3.1 SmallRtos操作系統(tǒng)的移植
嵌入式系統(tǒng)上采用的操作系統(tǒng)十分之多,本系統(tǒng)采用的SmallRtos專門為STM32系列處理器開發(fā)。首先將需要的文件添加到自己的工程目錄下。然后配置頭文件路徑。然后在代碼中調(diào)用OSStart()啟動操作系統(tǒng)即可。
3.2 LwIP協(xié)議棧的移植
基于TCP協(xié)議的網(wǎng)路應(yīng)用十分的常見,本系統(tǒng)利用STM32作為主控器,與服務(wù)器連接的部分交給了操作系統(tǒng)來處理,當(dāng)接收到網(wǎng)絡(luò)數(shù)據(jù)包后,以消息郵箱的方式提交給tcp/ip核心處理任務(wù),核心任務(wù)在將數(shù)據(jù)提交給應(yīng)用線程進(jìn)行數(shù)據(jù)處理。Lwip的操作系統(tǒng)支持在lwip_arch文件下,完成以下關(guān)于操作系統(tǒng)移植的函數(shù)即可:
LwIP工作在使用操作系統(tǒng)的時候,可以直接調(diào)用協(xié)議棧內(nèi)部關(guān)于socket的函數(shù),這些函數(shù)與linux的socket相關(guān)的函數(shù)非常的相似。調(diào)用此類函數(shù)開發(fā)簡單,維護(hù)簡單,不需要關(guān)心底層數(shù)據(jù)傳輸?shù)那闆r,效率較高。利用LwIP編寫TCP類型的應(yīng)用程序,在移植的時候主要實現(xiàn)的是網(wǎng)絡(luò)接口層netif-output和netif-iput函數(shù),移植完成后,就可以利用LwIP的應(yīng)用層接口編寫應(yīng)用程序,而網(wǎng)絡(luò)層和傳輸層則由LwIP協(xié)議棧內(nèi)部完成。
在LwIP_Init()函數(shù)中,通過調(diào)用lwip_init()函數(shù),完成網(wǎng)絡(luò)接口體鏈表、內(nèi)存池、pbuf接口提的初始化。在通過調(diào)用netif_add()函數(shù),完成ENC28J60與LwIP的接口的初始化,并且對IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、網(wǎng)卡信息指針、初始化函數(shù)和輸入函數(shù)進(jìn)行配置。
3.3 STemWin的移植
STemWin圖形庫由德國SEGGER公司開發(fā),可為圖形LCD設(shè)計提供高級支持,極大簡化了LCD設(shè)計并縮短上市時間。為ST ARM微控制器用戶免費提供的emWin圖形庫,以其免費提供商業(yè)圖庫、使用簡單、提升MCU運行表現(xiàn)和色彩逼真。TemWin的移植需要將一下的文件加載工程中,如圖5所示。
3.4 無線節(jié)點通信協(xié)議
無線通信包為固定的字長32bytes,該包被劃分為6個部分,每個部分代表相應(yīng)的含義,劃分如表1所示。命令的控制在數(shù)據(jù)區(qū)再進(jìn)行詳細(xì)的劃分。數(shù)據(jù)區(qū)根據(jù)發(fā)送類型劃分為兩種不同的格式,見表2。數(shù)據(jù)包協(xié)議包括包頭,主機(jī)ID,包ID,接收者ID,發(fā)送類型和數(shù)據(jù)區(qū)。發(fā)送的數(shù)據(jù)區(qū)中,類型數(shù)據(jù)為0表示控制命令,并攜帶操作類型和參數(shù);為1表示是返回數(shù)據(jù)命令,返回端口的各種參數(shù),例如溫度。
3.5 服務(wù)器的開發(fā)
服務(wù)器利用jsp語言進(jìn)行開發(fā),數(shù)據(jù)庫采用開源的MySql,服務(wù)器的搭建由Tomcat實現(xiàn)。主控器與服務(wù)器交互通過HttpServlet進(jìn)行,數(shù)據(jù)的請求通過HttpServletRequest記進(jìn)行傳遞,當(dāng)服務(wù)器收到數(shù)據(jù),通過相應(yīng)的數(shù)據(jù)解析后,轉(zhuǎn)換為json格式在轉(zhuǎn)發(fā)給相應(yīng)的用戶。
3.6 Android端應(yīng)用程序開發(fā)
Androd端采用Android studio進(jìn)行開發(fā),與服務(wù)器的數(shù)據(jù)交互通過http協(xié)議進(jìn)行交互,Android端支持登錄、注冊、添加好友。通過異步加載,實時獲取被控制系統(tǒng)的節(jié)點信息,并且能夠?qū)崟r控制與獲取傳感器節(jié)點的狀態(tài)。http的通訊移植了開源的AsyncHttp組件,該組件封裝了與http有關(guān)的操作,用戶不用太過于關(guān)心協(xié)議方面的東西即可著手開始開發(fā)。
3.7 系統(tǒng)程序運行流程
系統(tǒng)開始運行時,首先對各個模塊進(jìn)行初始化,建立網(wǎng)絡(luò)連接,通過調(diào)用協(xié)議棧底層函數(shù)配置有關(guān)參數(shù)。通過定時器查詢方式不斷獲取網(wǎng)卡獲取到的數(shù)據(jù),傳送給應(yīng)用層,然后進(jìn)行解析數(shù)據(jù)后,轉(zhuǎn)發(fā)給相應(yīng)的無線節(jié)點進(jìn)行控制。在主程序中完成對微處理器時鐘的初始化、中斷的初始化、NRF24L01的初始化、觸摸屏的初始化、文件系統(tǒng)的初始化、STemWin的初始化、Lwip的初始化、查詢定時器的初始化、SmallRTOS的初始化、Socket應(yīng)用層程序和各個線程的初始化。主函數(shù)部分代碼如下所示:
4 實際測試
在實驗室的環(huán)境中,用路由器連接到外網(wǎng),以便于主控器直接與外網(wǎng)進(jìn)行連接以此驗證該系統(tǒng)的可靠性。將服務(wù)器軟件加載到遠(yuǎn)程服務(wù)器上并運行服務(wù)器,主控器通過網(wǎng)線接入到路由器中,路由器連接到外網(wǎng)。主控器會自動獲取設(shè)備的IP地址等相關(guān)信息,上電運行系統(tǒng),主控器自動連接到遠(yuǎn)程服務(wù)器,并不斷發(fā)起鏈接,顯示屏顯示系統(tǒng)的控制界面。
Android端安裝控制APP,登錄用戶,連接到開發(fā)板上登錄的用戶,刷新界面后就會看到已經(jīng)連接到主控器的無線節(jié)點如圖6所示。通過Android端就可以實時觀測到室內(nèi)的溫度變化,并通過選擇控制的端口來控制電燈、風(fēng)扇。該種控制方便快捷,符合了移動智能終端控制的發(fā)展要求。
5 結(jié)束語
利用STM32F4、ENC28J60、STemWin和LwIP協(xié)議棧的物聯(lián)網(wǎng)控制系統(tǒng),與同類的嵌入式產(chǎn)品在成本上具有較大的優(yōu)勢,且大大降低了開發(fā)難度,各個模塊內(nèi)聚高,耦合低,易于維護(hù),為物聯(lián)網(wǎng)控制提供了一種可行的方案。特別是它是一種遠(yuǎn)程多用戶的控制系統(tǒng),對于多家庭,多用戶管理沒有絲毫的問題,在任何一臺Android智能終端與任何家庭都可以進(jìn)行實時的控制,符合物聯(lián)網(wǎng)發(fā)展的趨勢,有著非常廣闊的應(yīng)用空間。
參考文獻(xiàn):
[1]胡永利,孫艷豐,尹包才.物聯(lián)網(wǎng)信息感知與交互技術(shù)[J].計算機(jī)學(xué)報,2012(635):1147-1163.
[2]龔成瑩,邢敬宏,胡銀保.基于JSON的Android移動終端與PHP及MySQL數(shù)據(jù)通信[J].工業(yè)儀表和自動化裝置,2013(1):63-69.
[3]錢志鴻,王義君.面向物聯(lián)網(wǎng)的無線傳感器網(wǎng)絡(luò)綜述[J].電子與信息學(xué)報,2013,1(35):215-227.
[4]姜永增,董晶,宋廣軍,吳迪.物聯(lián)網(wǎng)智能家居無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計[J].制造業(yè)自動化,2011(33)2:187-189.
[5]劉恒,馬建倉,張小兵.基于nRF24E1的點到多點的無線測控系統(tǒng)的設(shè)計[J].微電子學(xué)與計算機(jī),2006,23(11):78-80.
[6]魏振春,韓江洪,張建軍,張利.智能家居遠(yuǎn)程控制系統(tǒng)的設(shè)計[J].合肥工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2005,28(7):751-754.
[7]LJ Chen.. Design and Implementation of Remote Control Intelligent Home System Based on Internet of Things[J]. Journal of Shandong Agricultural University, 2016-01.