基于STM32的iBeacon集中器设计
2017-11-09,,
,,
(电子科技大学 电子工程学院,成都 611731)
基于STM32的iBeacon集中器设计
师敬旭,张红雨,何超
(电子科技大学 电子工程学院,成都 611731)
针对iBeacon设备的管理问题,本文设计了一个基于STM32的iBeacon集中器。集中器可以采集周围的iBeacon数据包,并可通过串口、以太网或WiFi将数据包实时地转发至用户计算机,实现管理iBeacon设备的功能。集中器硬件设计上选用了内存大且通信接口丰富的STM32F407作为MCU,使集中器能读取大量的iBeacon设备并通过多种方式转发iBeacon数据包。软件设计上应用了循环FIFO队列,实现iBeacon数据包的缓存。测试结果表明,集中器无丢包现象,稳定可靠。
iBeacon;STM32;集中器;以太网;WiFi
引 言
iBeacon是苹果公司于2013年发布的一项基于低功耗蓝牙的无线数据传输技术,本文把任何支持iBeacon技术的设备统称为iBeacon设备。iBeacon设备利用低功耗蓝牙的广播信道周期地发送自己特有的ID,接收到此ID的智能手机会唤醒相应的应用软件执行特定操作。目前,iBeacon设备的功能主要是室内导航、信息推送和环境监测。一个iBeacon系统部署后,紧跟着的就是维护问题。在iBeacon系统运行期间,iBeacon设备丢失、人为损坏和没电的情况经常发生,因此需要维护人员定期地到现场检查每一个设备的运行情况。但这样做不仅提高了系统成本,而且也不能及时地发现设备丢失或故障。为了解决iBeacon的分布应用、多种网络接口和管理等问题,本文基于STM32微控制器设计了一种iBeacon集中器。
1 iBeacon系统结构
iBeacon系统主要由iBeacon设备、iBeacon集中器和用户计算机三部分组成。集中器通过低功耗蓝牙与iBeacon设备通信,通过串口或路由器与用户计算机通信。若局域网外的计算机需要连接iBeacon集中器,只需在路由器上设置端口映射即可。系统中,各iBeacon设备负责周期地发送带有自己ID的iBeacon蓝牙广播包;iBeacon集中器负责扫描iBeacon设备和执行用户指令,实现低功耗蓝牙、串口、以太网和WiFi协议的相互转换;用户计算机负责接收数据包并将其中的内容解析后显示。系统结构如图1所示。
图1 iBeacon系统结构
2 硬件设计
iBeacon集中器硬件系统主要由MCU、蓝牙模块、串口通信模块、以太网模块和WiFi模块组成。硬件系统框架如图2所示。
2.1 蓝牙模块
蓝牙模块负责扫描iBeacon设备,是集中器与iBeacon设备通信的接口。本文中的蓝牙模块是以低功耗蓝牙芯片CC2540为核心设计的。CC2540内置了增强型8051内核,8 KB RAM,256 KB FLASH,拥有2个USART接口和一个USB接口。蓝牙模块使用串口与MCU连接,通过串口接收指令和转发iBeacon数据包。
2.2 MCU
iBeacon集中器硬件系统框架如图2所示,MCU需要拥有三个串口和一个RMII接口,同时,MCU还需要拥有大的内存来缓存iBeacon数据包。
图2 iBeacon集中器硬件系统框架
基于以上两点要求,本文选取了STM32F407作为集中器的MCU。STM32F407主频可达168 MHz,SRAM容量为128 KB,支持外扩SRAM。此外,STM32F407有丰富的通信接口,包括4个USART通信接口、2个UART通信接口和一个10M/100M以太网接口等。综上所述,无论是在内存方面,还是在通信接口方面,STM32F407都完全满足要求。
2.3 串口通信模块
串口通信模块负责与本地计算机通信,主要用于接收配置指令。当集中器不能连接WiFi和以太网时,iBeacon数据包也可通过此模块转发至用户计算机。由于现在大多数笔记本电脑没有串口,因此本文采用USB转串口芯片CH340实现计算机与集中器的串口通信。
2.4 以太网模块
以太网模块负责连接路由器,需要将iBeacon数据包通过路由器转发至用户计算机,同时还需要接收用户的控制指令。本文选用了低功耗的10 M/100 M以太网PHY层芯片LAN8720A实现以太网通信功能。此芯片通过RMII接口与MCU通信,可以通过自协商的方式确定与目的主机的连接速度和双工模式;同时,此芯片支持HP Auto-MDIX自动翻转功能,无需更换网线即可将连接改为直接连接或交叉连接。
2.5 WiFi模块
WiFi模块负责连接附近的无线路由器,功能与以太网模块相同。本文选用了低功耗WiFi模块ATK-ESP8266实现WiFi通信功能,此模块内置了CPU内核和TCP/IP协议栈,能够独立运行也能够作为适配器搭配其他MCU使用。作为WiFi适配器时,外部MCU可通过串口发送AT指令控制此模块并传输数据。本文中将此模块作为WiFi适配器使用,并使用AT指令与此模块通信。
3 软件设计
iBeacon集中器软件系统主要由各芯片驱动程序、协议栈和顶层控制程序组成,软件系统结构如图3所示。
图3 iBeacon集中器软件系统结构
图4 循环FIFO队列
图中的箭头表示调用关系,上层软件调用下层软件完成相应的功能。本文中蓝牙协议栈使用TI公司针对CC2540/CC2541开发的BLE-Stack 软件开发套件 BLE-CC254x-1.4.2.2实现,其中不仅包含蓝牙芯片的驱动程序,还包含低功耗蓝牙应用快速开发所需的所有软件、示例应用和文档。由于WiFi芯片内置了TCP/IP协议栈,所以图3中的TCP/IP协议栈实际上代表了两个TCP/IP协议栈,这两个协议栈分别运行在WiFi芯片和外部MCU上。本文中运行在外部MCU上的TCP/IP协议栈使用LWIP实现,LwIP是一个小型开源的TCP/IP协议栈,有无操作系统的支持都可以运行;重点是它对内存的要求非常小,只需十几KB的RAM就可以运行,因此LwIP非常适合在无操作系统的嵌入式系统中使用。
本文中软件设计的关键技术是设置一个循环FIFO队列实现iBeacon数据包的缓存,队列结构如图4所示。
图5 数据包入队流程图
集中器每扫描到一个新的设备,就将该设备的数据包存放到队尾后的空缓冲区中,直到队满为止。数据包的入队操作是在串口中断服务程序中完成的,程序中设置了一个接收缓存来暂存iBeacon数据包,当一个数据包接收完毕后就执行入队操作。程序工作流程图如图5所示。
集中器的顶层控制程序会定时地检查FIFO队列的状态,如果队列非空,则将队首的数据包通过串口、以太网或WiFi转发到用户计算机,直到队列变空为止。程序流程图如图6所示。
图6 数据包出队流程
程序运行中,用户可以发送指令动态地开启或关闭串口、以太网和WiFi转发功能。串口转发可以在任意时刻开启或关闭,但是以太网和WiFi转发不能同时开启,只能通过发送指令在这两种模式下切换。
4 系统测试
本次测试是使用开发板来对集中器功能进行验证的,测试中使用的硬件电路如图7所示。
图7 测试硬件电路
本文使用了一款专门管理iBeacon设备的上位机软件,对集中器的串口转发、以太网转发和WiFi转发功能分别进行了测试,在测试以太网和WiFi转发功能时,集中器作为TCP服务器。测试结果表明,集中器可以通过串口、以太网或WiFi将数据实时转发至上位机软件并能正确解析。上位机软件中Sensor Data用于显示数据包中的传感器数据,本次测试并未使用传感器,所以这部分区域显示一个无效的字符。
结 语
[1] 欧阳骏,陈子龙,黄宁淋.蓝牙4.0 BLE开发完全手册[M].北京:化学工业出版社,2013.
[2] 朱升林.嵌入式网络那些事:LwIP协议深度剖析与实战演练[M].北京:中国水利水电出版社,2012.
[3] 朱广,黎海涛,马银童,等.低功耗物联网网关设计与实现[J].国外电子测量技术,2016,35(6):31-36.
[4] 廖鹏飞,陈庆奎.基于蓝牙4.0与3G的无线传感器网关设计与实现[J].计算机工程,2015,41(9):13-18,24.
[5] 胡银刚,孟宪磊,赵灿,等.基于蓝牙和GPRS的无线传感器网络设计[J].自动化与仪器仪表,2015 (6):14-15.
[6] 邹晓康,刘帅,张浩然.基于STM32嵌入式多协议网关设计[J].微型机与应用,2016,35(16):38-40,43.
师敬旭(硕士研究生),主要研究方向为嵌入式技术和物联网;张红雨(高级工程师),主要研究方向为射频自动识别、物联网和嵌入式技术。
DesignofiBeaconConcentratorBasedonSTM32
ShiJingxu,ZhangHongyu,HeChao
(School of Electronic Engineering,University of Electronic Science and Technology of China,Chengdu 611731,China)
Aiming at the problem of management of iBeacon devices,a iBeacon concentrator based on STM32 is designed in this paper.The concentrator can receive many iBeacon data packets and send it to user computer by the serial port,Ethernet and WiFi in real time.It can be used to manage lots of iBeacon devices.The concentrator uses STM32F407 as the core control chip which provides large memory and multiform communication interfaces.It can receive plenty of iBeacon data packets and send it to user computer in a variety of ways.On the software,the circular queue has been used to store iBeacon data packets temporarily.The test results show that there is no packet loss and the concentrator is stable and reliable.
iBeacon;STM32;concentrator;Ethernet;WiFi
TN923
A
2017-06-30)