1、引言
随着物联网技术的飞速发展,物联网技术中一个重要的实现就是要将各类传感器控制节点采集到的数据通过Internet网上传到用户手机或者PC机,为了满足这一需求,需要设计出一种既能作为无线传感器网络的协调器,又能实现远程GPRS传输和网络连接的网关设备。
针对以上需求,本设计采用STM32F417作为主设备控制芯片,片上运行μC/OS-II实时系统作为设备管理系统,使用uIP作为TCP/IP网络协议栈,主设备同时具有键盘操作及显示功能,可以进行本地设置,也可以使用PC机远程设置。嵌入式网关中的GPRS模块通过串口与嵌入式主设备相连,无线协调器通过串口将采集来的数据上传到嵌入式主设备,主设备也可以将命令下发给无线协调器,无线协调器通过ZigBee无线通信协议将命令发给传感器。
2、系统硬件设计
嵌入式网关系统主要包括嵌入式主设备、GPRS模块、无线协调器、路由器。嵌入式网关系统框图如图1所示。
图1 嵌入式网关系统框图
嵌入式主设备通过网口与路由器相连;通过串口与GPRS模块相连,用AT指令控制GPRS模块;通过串口发送指令给无线协调器,间接控制无线传感器组。
2.1、嵌入式主设备硬件设计
嵌入式设备硬件平台主要由STM32F417为主控芯片,外围硬件电路包括液晶显示电路,网口驱动电路,键盘操作和串口驱动电路。硬件电路框图如图2所示。
图2 嵌入式主设备硬件电路框图
本设计中采用串口液晶,串口液晶无需设计复杂的驱动电路,只需要串口命令对其控制,显示页面和控件可以下载到液晶的FLASH中,根据设计需要编写GUI界面。键盘操作主要为用户提供本地设置网关设备的功能。
STM32F417内置MAC模块,要实现网络传输需要外扩一片PHY芯片,底层网络驱动就是对PHY芯片的操作,TCP/IP协议采用uIP协议栈;与GPRS模块的连接使用串口,通过发送AT指令来实现对GPRS模块连接网络,发送短信,开关机等操作;对无线协调器的操作也是通过串口,自定义协议完成控制。
2.2、GPRS模块硬件设计
GPRS模块主要实现将传感器采集来的数据上传给用户手机,用户可以通过手机对传感器进行远程控制。GPRS模块通过串口与嵌入式主设备相连。硬件设计框图如图3所示。
图3 GPRS模块硬件设计框图
GPRS模块主控芯片采用Philips公司的LPC2103,主要实现对GPRS收发器(SIMCOM300)的驱动控制,以及通过串口与嵌入式主设备连接。
2.3、无线协调器硬件设计
无线协调器是将无线传感器组采集的数据通过ZigBee网络传输给嵌入式主设备,嵌入式主设备通过串口将控制命令发送给无线协调器,再间接发给无线传感器组。硬件系统框图如图4所示。
图4 无线协调器硬件设计框图
无线协调器使用TI公司开发的CC2430芯片作为主控芯片,CC2430整合了ZigBee射频前端、内存和微控制器,支持ZigBee无线通信协议,工作频段在2.4GHz。
3、系统软件设计
本设计中的软件包括运行于STM32F417上的嵌入式主设备软件、运行于CC2430上ZigBee协议栈与客户端软件及运行于LPC2103上的GPRS模块软件。
3.1、嵌入式主设备软件设计
嵌入式主设备软件以μC/OS-II实时系统作为设备管理主程序框架,同时嵌入了uIP协议栈作为TCP/IP协议,嵌入式主设备的功能是通过网口与以太网连接实现与远程PC机的通信;外接串口液晶屏和按键实现本地参数设置;通过串口控制GPRS模块及无线协调器。主设备系统软件设计如图5所示。
图5 主设备软件设计
3.1.1、μC/OS-II系统任务
μC/OS-II系统建立任务,包含系统任务、图形用户接口任务、网络处理任务、存储数据管理任务、串口任务、空闲任务、统计时间运行任务。
主程序集中在main()入口函数,完成μC/OS-II系统初始化、硬件平台初始化、建立主任务、设置节拍计数以及启动μC/OS-II系统等。
开始任务建立通过App_TaskStart()函数完成,再由该函数调用App_TaskCreat()建立其他任务,一共创建了主任务、串口通信任务、图形界面任务、按键任务、I2C总线读写EEPROM任务、SPI读写FLASH任务、网络处理任务以及空闲任务和时间片任务。建立任务流程图如图6所示。
图6 系统任务建立流程图
3.1.2、网络管理软件设计
系统网络协议栈采用uIP协议,相关硬件平台初始化是STM32F417内部以太网模块的初始化和对DP83848PHY芯片的初始化设置,硬件初始化在BSP_Init()函数中调用,并嵌套一个NetInit_Config()用来初始化uIP协议栈、配置本机IP地址及端口号。
IP协议是简化的TCP/IP协议,主要包含IP、TCP、UDP、ICMP、ARP这些网络层和传输层协议,应用层协议涉及HTTP、Telnet、WEB等服务。uIP协议栈构架如图7所示,uIP协议与底层驱动的接口函数为uip_input(),与上层应用程序的函数为UIP_APPCALL()。在系统开始任务建立函数App_TaskStart()中增加了从网络设备读取一个IP数据包,返回数据长度;定时查询TCP连接收发状态,ARP表更新,网络接收完成传递信号量。具体代码如下:
while(1)
{
uip_len=tapdev_read();
if(uip_len》0)OSSemPost(ETH_SEM);
eth_poll();
OSTimeDlyHMSM(0,0,0,10);
}
图7 uIP协议栈接口架构图
M32F417内部中断实现。程序中设备作为服务器使用,设置本地IP为192.168.100.222,端口号为8011,网络调试时,PC机上使用TCP/UDP测试工具,设置PC机为客户端,连接方式为TCP方式,网络连接成功如图8所示。
图8 PC机客户端连接设备服务器
3.2、GPRS模块软件设计
GPRS模块主要功能,如图3所示,主控芯片通过串口1与主设备通信,通信协议为自定义的串口协议,串口2通过AT指令控制GPRS收发器,AT指令具体实现开关机,连网,短信接收与发送等功能。GPRS模块程序流程如图9所示。
图9 GPRS模块软件流程图
3.3、无线协调器软件设计
无线协调器的软件包括ZigBee协议栈与客户端程序两部分,协调器上电后首先扫描信道,选择一个合适的信道即合适的网络标识符,然后启动网络,允许传感器设备连接。然后网关中的主设备通过串口与无线协调器连接,间接通过无线协调器与无线传感器组连接。
ZigBee协议将2.4GHz的射频频段分为16个独立的信道,每个设备都有一个默认信道集,协调器扫描自己的默认信道集并选择一个噪声最小的信道作为自己所建网络的信道。程序流程如图10所示。
图10 协调器软件流程图
4、实验结果
将以上设计网关应用于电流功率监测平台,实验中监测对象为电源的电流和电压,最后要计算出电源的功耗,监测模块的主控芯片通过模数转换通道对电流和电压进行采集,模数转换即AD采集的对象一般是电压值,所以对电源的输出电流需要转换为电压,监测模块使用MAX472将电流转换为电压,转换电流电路如图11所示。
图11 电流转换电路
5、结束语
针对物联网实际应用设计出的嵌入式网关,具有环境搭建简单容易,便于维护,成本低等特点,广泛应用于智能家居、温室控制、机房设备监控、环境监测等物联网应用中。嵌入式网关的设计理念及模型在对各种物理量的采集传输中都可以发挥作用,传输媒介也可以根据环境和安全需求更换传输媒介,传输协议也能够依据需求发展自定义设计嵌入。