APP下载

基于STM32传输层子系统的无线数据传输设计*

2017-03-31殷万君熊建云

单片机与嵌入式系统应用 2017年3期
关键词:传输层原理图串口

殷万君,熊建云

(四川信息职业技术学院, 广元 628040)

基于STM32传输层子系统的无线数据传输设计*

殷万君,熊建云

(四川信息职业技术学院, 广元 628040)

针对目前智慧城市的建设,依靠物联网思维,设计一套智慧城市系统,使得人们能够感受到电子技术带给我们的便捷。本文以传输层为突破口,给出了该层的设计方法,实现了感知层各种ZigBee节点的网络接入、传感参数采集、设备运行状态控制等功能。

STM32;传输层;ZigBee;无线数据传输

引 言

智慧城市是一项复杂的系统工程,传输层在此系统中扮演着重要角色,利用STM32、WiFi通信模块和基于CC2530的ZigBee Sink节点[1],开发出ZigBee-WiFi无线传感器网络网关,实现感知层ZigBee节点的分布式树状网动态组网,实时采集、传输有关数据就显得非常重要[2]。

1 系统结构

传输层子系统的关键设备是ZigBee网关,作用是便于通过手机接入各子系统,同时避免非法ZigBee节点直接接入网关,并利用WiFi透明传输特性植入攻击数据。

本文在ZigBee-WiFi网关设计方案的基础上,加入中间处理器对节点进行绑定确认,如图1所示。图中,基于STM32的ARM控制器最小系统提供两个串口实现ZigBee通信模块与WiFi透明传输模块间的串口通信,同时用于通过输入接口单元对请求接入的ZigBee通信节点进行确认和绑定,并利用输出接口单元提示系统运行状态。WiFi透明传输模块用于接入局域网和数据传输,为便于实现多个手机终端对同一子系统的控制,WiFi模块应能根据需要灵活配置为服务端或客户端。

图1 传输层ZigBee-WiFi无线网关的组成

2 硬件电路

电源电路如图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)

猜你喜欢

传输层原理图串口
基于Python语言的网络传输层UDP协议攻击性行为研究
浅谈AB PLC串口跟RFID传感器的通讯应用
ZnO电子传输层在有机无机杂化钙钛矿太阳能电池中的应用
浅谈STM32核心板原理图设计
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
物联网无线通信传输层动态通道保障机制
基于物联网GIS的消防智能巡检系统设计与实现
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索