殷萬君,熊建云
(四川信息職業技術學院, 廣元 628040)
基于STM32傳輸層子系統的無線數據傳輸設計*
殷萬君,熊建云
(四川信息職業技術學院, 廣元 628040)
針對目前智慧城市的建設,依靠物聯網思維,設計一套智慧城市系統,使得人們能夠感受到電子技術帶給我們的便捷。本文以傳輸層為突破口,給出了該層的設計方法,實現了感知層各種ZigBee節點的網絡接入、傳感參數采集、設備運行狀態控制等功能。
STM32;傳輸層;ZigBee;無線數據傳輸
智慧城市是一項復雜的系統工程,傳輸層在此系統中扮演著重要角色,利用STM32、WiFi通信模塊和基于CC2530的ZigBee Sink節點[1],開發出ZigBee-WiFi無線傳感器網絡網關,實現感知層ZigBee節點的分布式樹狀網動態組網,實時采集、傳輸有關數據就顯得非常重要[2]。
傳輸層子系統的關鍵設備是ZigBee網關,作用是便于通過手機接入各子系統,同時避免非法ZigBee節點直接接入網關,并利用WiFi透明傳輸特性植入攻擊數據。
本文在ZigBee-WiFi網關設計方案的基礎上,加入中間處理器對節點進行綁定確認,如圖1所示。圖中,基于STM32的ARM控制器最小系統提供兩個串口實現ZigBee通信模塊與WiFi透明傳輸模塊間的串口通信,同時用于通過輸入接口單元對請求接入的ZigBee通信節點進行確認和綁定,并利用輸出接口單元提示系統運行狀態。WiFi透明傳輸模塊用于接入局域網和數據傳輸,為便于實現多個手機終端對同一子系統的控制,WiFi模塊應能根據需要靈活配置為服務端或客戶端。

圖1 傳輸層ZigBee-WiFi無線網關的組成
電源電路如圖2所示。6 V、2 A適配器總電源輸出電壓經LM3764 DC-DC輸出3.3 V電壓,該電壓供WiFi模塊及STM32、CC2530模塊使用。

圖2 電源電路原理圖
圖3為STM32單片機最小系統,其中25、26號引腳用于與CC2530進行串口通信,68、69號引腳用于與WiFi模塊進行串口通信。

圖3 STM32控制器最小系統電路原理圖
圖4為WiFi透明傳輸模塊接口電路原理圖。其中WiFi模塊選用聯發科的RT5350模塊。RT5350模塊的20、21號引腳用于與STM32單片機進行串口通信;11、12、15、16號引腳用于WAN口網絡通信,17、18、13、14號引腳用于LAN口網絡通信。
圖5為ZigBee通信模塊電路原理圖。發射信號時,CC2530的25、26號引腳的射頻信號經C39、C40、C42、C43、C44、L3、L4等組成的濾波電路濾波,送入RFX2401進行功率放大,然后經C45、L5、C46組成的匹配電路送入天線發射。RFX2401的增益由CC2530的P1.2口控制。
3 系統程序實現
ZigBee傳輸層子系統程序的主體是ZigBee無線傳輸層軟件,目前,市面能支持CC2530的常用協議棧有Z-STACK、TinyOS、LiteOS(華為)等[3-7],其中在商業領域應用較多的是Z-STACK協議棧,整個程序的結構如圖6所示。
終端節點、路由節點、協調器三類設備共有的部分包括數據結構、射頻收發功能函數、業務應用程序設計部分。其中,數據結構用于定義射頻及串口收發數據的格式,射頻收發功能函數包括數據的封裝、發送、接收,業務應用程序用于根據業務流程實現各種功能的協調運行。除公共部分的程序設計外,協調器還需編寫串口接收功能函數,用于從串口接收的數據中提取有效數據幀,并轉入相應功能函數入口進行處理;終端節點需編寫傳感器驅動程序和功能部件控制執行函數,分別用于采集各種傳感器輸出量和執行的控制操作。
3.1 數據結構設計
格式化的數據包括串口和射頻兩部分。為此定義一個結構體類型RfUartDataStruct,用于表征一幀數據的存儲方法,代碼如下:

圖4 WiFi透明傳輸模塊接口電路原理圖

圖5 ZigBee模塊部分電路原理圖

圖6 ZigBee節點程序結構
typedef struct {
unsigned char Head[4]; //幀頭
unsigned char Func[3]; //幀功能標識
unsigned char Len; //幀長度
unsigned char PhyAddr[8]; //物理地址
unsigned char NetAddr[2]; //網絡地址
unsigned char Load[8]; //有效載荷
unsigned char LinkQuality;
//鏈路信號質量
unsigned char Tail[3]; //幀尾
}RfUartDataStruct;
利用結構體能提高程序的可讀性,但要對存儲空間進行批量操作不便,有必要根據結構體類型定義共同體RfUartDataUnion,代碼如下:
typedef union {
RfUartDataStruct DatStr; //結構體成員
unsigned char DatArr[22+ APPLOAD_MAX_LENGTH];
//數組成員
}RfUartDataUnion;
在業務應用程序中,需根據結構體、共用體類型定義串口和射頻收發存儲變量,代碼如下:
RfUartDataUnion UartReceBuf, UartSendBuf;
//串口接收和發送緩沖區
RfUartDataUnion RfReceBuf, RfSendBuf;
//射頻接收和發送緩沖區

在Z-STACK協議棧中,串口數據接收目標是在MT層從接收數據流中搜尋有效數據幀,并觸發APP層的處理事件。其搜尋流程如圖7所示,運用了類似滑動窗口原理,先從接收數據中查找幀頭,而后依次查找幀功能標識、幀長、物理地址、網絡地址、有效載荷、鏈路質量,最后查找幀尾。當找到一幀有效數據后,觸發Z-STACK協議棧APP層的串口接收數據處理事件,并將狀態置為初始狀態,等待接收下一幀。在提取一幀數據的過程中,有任何一個環節不符合通信協議規定,就跳轉到初始狀態,等待搜尋新的幀頭。

圖7 串口接收狀態機轉換過程
而當找到一幀有效數據后,會觸發UART_INCOMING_MSG_EVT事件并轉去APP層的對應入口,調用UartRxComTransmit()函數進行處理,觸發UART_INCOMING_MSG_EVT事件的對應代碼如下:
msg_ptr = (osal_event_hdr_t *)osal_msg_allocate(50);
if (msg_ptr){
msg_ptr->event = UART_INCOMING_MSG_EVT;
msg_ptr->status = (byte)state;
osal_msg_send(App_TaskID, (byte*)msg_ptr);
}
3.3 射頻接收業務處理的實現方法
射頻接收數據后,轉入APP層的AF_INCOMING_MSG_CMD處進行處理,將數據轉發到串口,送入STM32處理器。對應的代碼如下:
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ){
memcpy(UartSendBuf.DatArr,pkt->cmd.Data,pkt->cmd.DataLength); //轉存到UartSendBuf
UartSendBuf.DatStr.LinkQuality = pkt->LinkQuality;
//填充通信鏈路信號質量
HalUARTWrite(HAL_UART_PORT_0,UartSendBuf.DatArr,30); //從串口輸出數據

[1] 黃月,項姝,肖磊,等.無線傳感器網絡的節點部署問題研究[J].控制工程,2015, 19(4).
[2] 王平,王峰,嚴冬.433 MHz物聯網開發平臺的設計與開發[J].單片機與嵌入式系統應用, 2012, 12(7):16-19.
[3] 陳曉艷,高偉,秦歡,等.基于GPRS與ZigBee的LED路燈智能監控系統設計[J].電子測量技術, 2013, 36(10):62-66.
[4] 楊慧.基于ZigBee/SCS智能家居安防監控系統設計[J].物聯網技術,2014 (12):16-18.
[5] 仲偉波,王婷婷,張澤武.基于ZigBee與WiFi的環境智能傳感系統研制[J].農機化研究, 2013, 34(12):186-189.
[6] 周娜,祝艷濤.傳感器在水質監測中的應用探討[J].環境科學導刊,2009(28):119-123.
[7] 高鍵.ZigBee無線傳感器網絡節點的能耗研究[J].電子測試,2008(2):1-5.
Wireless Data Transmission Design Based on STM32 Transmission Layer
Yin Wanjun,Xiong Jianyun
(Sichuan Information Technology College,Guangyuan 628040,China)
In the view of the current wisdom of the city's construction,a set of smart city system is designed,which is based on the thinking of IoT,so that the people can feel the convenience of electronic technology.In this paper,the design takes the transmission layer as a breakthrough,the method of this layer is given.The design realizes the methods of network access of ZigBee nodes of the sensing layer,sensing parameter acquisition,equipment operating state control.
STM32;transport layer;ZigBee;wireless data transmission
省部級-甘肅省科技支撐計劃(1204GKCG059)。
TN401
A
?迪娜
2016-09-26)