賴樹明,楊卓鑫,張麗娟,韓清濤,任 斌
(1、東莞理工學院 電子工程學院,廣東東莞,523808; 2、東莞理工學院 計算機學院,廣東東莞,523808)
現(xiàn)在很多物聯(lián)網(wǎng)的設(shè)計比較簡單,接口比較單一,沒有多樣化,這樣在很多復雜的工業(yè)場合,比如很多工業(yè)場合會用不同的接口連接,但由于物聯(lián)網(wǎng)的一些設(shè)計比較單一,所以需要更換或者再另外買進或者研發(fā)一些適合的通信技術(shù),因此大大地增加了不便和投資成本。為了適應不同的工業(yè)現(xiàn)場和降低投資的成本,我們研究了一款基于STM32設(shè)計的物聯(lián)網(wǎng)開發(fā)應用系統(tǒng),該系統(tǒng)中聚集了RFID、傳感技術(shù)和多樣化接口的無線和有線通信技術(shù),根據(jù)不同的工業(yè)現(xiàn)場環(huán)境選擇性的接入相應的通信接口,這樣在不同的工業(yè)環(huán)境不需要重新研發(fā)相對應的通信技術(shù)。這樣集成化的方式減少了大量的財力和物力,使物聯(lián)網(wǎng)技術(shù)得到更好的發(fā)展和應用。
該物聯(lián)網(wǎng)系統(tǒng)采用STM32作為控制芯片,綜合應用了Zigbee、WIfi、GSM、藍牙、以太網(wǎng)、CAN總線、RS485、RS232、USB等有線和無線通信技術(shù)及RFID身份識別技術(shù)。系統(tǒng)的整體
通過各類傳感器和RFID對工業(yè)現(xiàn)場數(shù)據(jù)進行采集,再根據(jù)實際環(huán)境通過按鍵中斷選擇如上圖所示左邊的zigbee、wifi、以太網(wǎng)等傳送方式傳送到STM32處理,不同的通信模式數(shù)據(jù)將劃區(qū)域的存放到falsh中,再通過按鍵中斷選擇wifi、以太網(wǎng)、框架圖如下圖1所示:USB模式將有效的flash區(qū)域的數(shù)據(jù)傳送至PC機處理和控制;整個過程的通信模式都會通過液晶屏顯示出來。
圖1 系統(tǒng)的整體框架圖
在上圖2中控制單元采用STM32F103XX基本型系列。它使用高性能的ARM CortexM3 32bit的RISC內(nèi)核,內(nèi)置高速存儲器,工作頻率為72MHZ,CPU能以零等待周期訪問,豐富的增強型外設(shè)和I/O口連接到兩條APB外設(shè)。所有型號器件都包含1個12bit的ADC和3個通用的16bit定時器,還包含標準的通訊接口;2個IIC,2個SPI和3個USART。在上述硬件框圖中STM32是通過IO口模擬時序來控制CAN總線收發(fā)器和RFID存儲模塊;通過內(nèi)部的SPI通信接口與以太網(wǎng)模塊和flash存儲模塊通信;通過內(nèi)部的USART通信接口與RS485、GPRS、zigbee等模塊通信??梢钥闯鰏tm32的內(nèi)部通信接口是不夠用的,因此通過74HC573鎖存器將其分時段的應用。
軟件采用C語言編寫,在keil環(huán)境下開發(fā),應用STM32將各個通信模塊方式匯集起來。
如圖3所示,開始工作時,MCU的時鐘自動設(shè)置并設(shè)置外部中斷,然后檢測外部中斷,若有外部中斷,則根據(jù)外部中斷設(shè)定進行總線選擇性的初始化,然后根據(jù)初始化將采集進來的數(shù)據(jù)存放到對應的Flash數(shù)據(jù)區(qū)域,然后再將Flash中的數(shù)據(jù)讀出傳輸?shù)絇C機上,傳送完畢接著等待下一次外部中斷的發(fā)生。若沒有中斷發(fā)生,則根據(jù)初始化將采集進來的數(shù)據(jù)存放到對應的FLASH數(shù)據(jù)區(qū)域,并根據(jù)初始化將數(shù)據(jù)從FLASH中讀出傳輸?shù)絇C機中,然后回到判斷是否有外部中斷,并進行循環(huán)。
圖3 總體的軟件流程圖
圖2 總體硬件框圖
3.1.1 zigbee協(xié)調(diào)器的軟件流程圖
如圖4所示,zigbee協(xié)調(diào)器工作時,先上點激活,然后開始信道主動掃描,檢查是否收到信標幀,若收到,則監(jiān)聽信標幀,并選擇父節(jié)點入網(wǎng),選擇之后發(fā)送入網(wǎng)請求,若收到入網(wǎng)回復,則建立新子節(jié)點,意味著入網(wǎng)成功,若沒有收到入網(wǎng)回復,則判斷是否有沒申請的父節(jié)點,如果有則重新監(jiān)聽信標幀,若沒有則入網(wǎng)失敗,所申請父節(jié)點作為冗余節(jié)點進入休眠模式;若之前沒有收到信標幀,則信道掃描變?yōu)楸粍幽J?,然后建立網(wǎng)絡(luò),如果收到入網(wǎng)請求,自動判斷地址空間是否滿了,如果滿了,則沒有地址空間,加入新子節(jié)點失敗,若地址空間沒有滿,則分配地址,并回復入網(wǎng)請求,回復成功后允許子節(jié)點入網(wǎng)。
3.1.2 zigbee節(jié)點軟件流程圖
如圖5所示,開始工作時,設(shè)備自動初始化,之后通過zigbee協(xié)調(diào)器的工作申請加入zigbee網(wǎng)絡(luò),若加入之后與協(xié)調(diào)器綁定,就可以周期性發(fā)送數(shù)據(jù)。
3.1.3 以太網(wǎng)模塊的軟件流程圖
如圖6所示,工作時,ENC28J60的硬件自動初始化,Uip協(xié)議網(wǎng)絡(luò)也開始初始化,初始化完畢,根據(jù)外部中斷判斷是否需要切換監(jiān)聽端口,如果需要,則改變監(jiān)聽端口,若不需要,則輪詢處理數(shù)據(jù)。處理數(shù)據(jù)結(jié)束,在判斷是否需要切換監(jiān)聽端口,繼續(xù)循環(huán)。
圖4 zigbee協(xié)調(diào)器的軟件流程圖
3.1.4 RFID的軟件流程圖
如圖7所示,開始工作時,MCU對時鐘開始配置,并對外設(shè)進行初始化。初始化完畢,查詢串口是否有收到數(shù)據(jù),如果有,則掃描從PC接收數(shù)據(jù)緩沖區(qū),并根據(jù)收到的數(shù)據(jù)執(zhí)行命令,然后設(shè)置IOSI4443A協(xié)議,并執(zhí)行防沖突算法用來識別標簽,接著傳輸標簽數(shù)據(jù):如果沒有收到數(shù)據(jù),直接設(shè)置協(xié)議,接著執(zhí)行防沖突算法,最后傳輸數(shù)據(jù),傳輸數(shù)據(jù)完畢,再循環(huán)判斷查詢串口是否有收到數(shù)據(jù)。
3.1.5 USB軟件流程圖
如圖8所示,工作時,MCU對時鐘和外設(shè)接口開始配置,并配置usb中斷,然后對usb初始化。初始化結(jié)束,判斷發(fā)送緩沖區(qū)是否有數(shù)據(jù),如果有數(shù)據(jù),則發(fā)送數(shù)據(jù),并對數(shù)據(jù)進行處理;如果沒有,則判斷接受緩沖區(qū)是否有數(shù)據(jù),如果有,則接收數(shù)據(jù),并對數(shù)據(jù)進行處理,如果沒有,則循環(huán)回到判斷發(fā)送緩沖區(qū)是否有數(shù)據(jù)。
圖5 zigbee節(jié)點軟件流程圖
圖6 以太網(wǎng)模塊的軟件流程圖
圖7 RFID的軟件流程圖
圖8 USB軟件流程圖
3.1.6 CAN總線的軟件流程圖
如圖9所示,開始工作時,首先MCP2515初始化,并等待中斷,如果有中斷發(fā)生,則先關(guān)閉中斷,并讀取MCP2515的中斷標志,用以判斷中斷類型,假如是發(fā)送中斷,則轉(zhuǎn)發(fā)送中斷處理子程序;假如是接受中斷,則轉(zhuǎn)接受中斷處理子程序:假如是錯誤中斷,則轉(zhuǎn)錯誤中斷處理子程序。之后進行過濾匹配判斷,若不是,則進行無效報文,如果是,則進行處理請求,然后打開中斷允許,最后回到對MCP2515初始化循環(huán)。
3.1.7 GSM模塊的軟件流程圖
如圖10所示,工作時,對MCU串口和GSM模塊進行初始化,并測試TCP/IP,如果測試不成功,則再進行測試,如果成功,進行TCP連接,并判斷是否連接成功,如果沒有,則不斷進行連接,直到成功。成功后等待中斷,如果有中斷發(fā)生,則先關(guān)中斷,并讀取中斷標志,然后判斷中斷類型,如果是發(fā)中斷,則發(fā)送數(shù)據(jù);如果是接受中斷,則接受處理子程序,完畢之后,則打開中斷,并回到判斷中斷部分,進行循環(huán)。
3.1.8 wifi的軟件流程圖
如圖11所示,開始工作時,對WIFI進行初始化成為服務(wù)器工作狀態(tài),然后檢查WIFI的網(wǎng)絡(luò)狀態(tài)并開始連接,接著CPU開始監(jiān)聽WIFI的數(shù)據(jù)情況,并判斷有沒有數(shù)據(jù)進來。如果有數(shù)據(jù)進來,則獲取數(shù)據(jù)到緩存器中,然后讀取WIFI在FLASH中的存儲地址并把數(shù)據(jù)存儲到FLASH中;如果沒有數(shù)據(jù)進來,首先判斷是否發(fā)送數(shù)據(jù),如果不是,則再次判斷有沒有數(shù)據(jù)進來,如果是要發(fā)送數(shù)據(jù),則先讀取FLASH的地址,然后獲取要發(fā)送的數(shù)據(jù),然后通過串口把數(shù)據(jù)發(fā)送出去,最后回到判斷有沒有數(shù)據(jù)進來,并進行循環(huán)。
設(shè)計的一款基于STM32設(shè)計的物聯(lián)網(wǎng)系統(tǒng),該系統(tǒng)融合了RFID、多種無線有線通信、傳感器、互聯(lián)網(wǎng)等技術(shù)。相比目前的一些物聯(lián)網(wǎng)技術(shù)在各方面都有了一定的提高,特別是通信接口方面涵蓋了多達10種有線無線通信接口,對于復雜的工作現(xiàn)場總線有了多種選擇。如何進一步提高系統(tǒng)的抗干擾性,以滿足要求更高的場合是我們下一步的工作重點。
圖9 CAN總線的軟件流程圖
圖10 GSM模塊的軟件流程圖
圖11 wifi的軟件流程圖
參考文獻
[1] 朱弘.物聯(lián)網(wǎng)技術(shù)的發(fā)展和在安防領(lǐng)域的應用研究[J].技術(shù)與應用,2010, 7(7): 31-33.
[2] 景熙.物聯(lián)網(wǎng)概論[M].南京:東南大學出版社,2010.
[3] Kramer G. Ethernet passive optical networks[M]. New York, USA:McGraw-Hill, 2005.
[4] 劉堯,黃玉輝,潘華明.配電網(wǎng)電纜屏蔽層寬帶載波通信技術(shù)[J].華東電力,2007, 35(12): 60-62.
[5] 盧新波,侯思祖.基于 GPRS的配網(wǎng)自動化系統(tǒng)性能分析[J].電力系統(tǒng)通信,2006, 27(1): 25-27.
[6] 杜祥嶺,劉加寧.高校物聯(lián)網(wǎng)專業(yè)與實訓中心探析[J].遼寧工業(yè)大學學報(社會科學版),2011,13 (04) :119-122.
[7] 柯強.物聯(lián)網(wǎng)專業(yè)課程建設(shè)探討[J].物聯(lián)網(wǎng)技術(shù),2012,4(01):280- 283.
[8] 馬榮飛.融CEC一CDIO理念的物聯(lián)網(wǎng)專業(yè)高技能人才培養(yǎng)研究與實踐[J].軟件工程師,2014,6:11- 12.