高天星, 赵旭强, 马忠梅
(北京理工大学 计算机学院,北京 100081)
基于CC3200的Wi-Fi无线组网式跌倒检测系统※
高天星, 赵旭强, 马忠梅
(北京理工大学 计算机学院,北京 100081)
摘要:TI公司的CC3200是一款基于ARM Cortex-M4处理器核的微控制器,是TI SimpleLink产品线上的一员,其具有既方便又强大的Wi-Fi网络通信能力。本文利用CC3200这些特性,结合MMA7260加速度传感器,设计了一种新型的以Wi-Fi作为组网模式的无线加速度检测系统,其主要应用方向为检测人的跌倒等情况。
关键词:CC3200;Wi-Fi;跌倒检测
引言
近些年来,由于智能移动设备的飞速发展,Wi-Fi这种无线互联技术被广泛应用在各种各样的生活场景中,如办公室、咖啡厅、校园、家庭等。因此,使用Wi-Fi技术,可以以最方便快捷的方式接入到互联网,或与其他智能移动设备互联。在这一背景下,衍生了许多具有Wi-Fi能力的MCU,使用它们可以方便地实现物理控制功能,进行物理数据的采集。此外,通过Wi-Fi以无线的方式向智能终端传递数据,可以获得更好的交互效果。
SimpleLink Wi-Fi CC3200是由TI公司研制的低功耗MCU平台,SimpleLink Wi-Fi技术可以方便地编写运行在CC3200上的Wi-Fi数据传输程序,大大降低了过去将MCU与Wi-Fi结合开发的复杂度与成本。CC3200芯片上有丰富的资源可供使用,因此将其作为开发平台,自制了一套无线加速度传感器采集系统,通过对加速度的实时监控,可以方便地检测出老年人是否意外摔倒。
1平台介绍
1.1Simplelink Wi-Fi CC3200
CC3200是内置 Wi-Fi模块的微控制器,TI专为物联网的开发与应用设计了这块集成芯片。在这块芯片上集成了高性能的ARM Cortex-M4处理器内核和Wi-Fi网络处理器,CC3200的网络通信能力稳定可靠,并拥有完整的安全协议。不仅如此,CC3200平台还提供了完整的开发软件、开发样例、调试工具与文档,是十分理想的开发平台[1]。
ARM Cortex-M4处理器的运行频率为80 MHz,并外接多种外设,包括快速并行接口、SPI、UART串口、ADC模块等。芯片中的ROM存储了相关外设驱动程序。此外,CC3200的网络处理子系统包含一个802.11b/g/n射频模块,以满足各频段Wi-Fi的连接需要。而在网络处理芯片的软件部分,其内置了TCP/IP等协议栈,极大方便了接入互联网的软件操作。
1.2MMA7260加速度传感器
MMA7260是一款低功耗、低成本的高灵敏加速度传感器。通过调整芯片,选择性地输入电平,可以设定4种不同的高灵敏度模式,这些模式以加速度量程区分,包括±1.5 g、±2 g、±4 g 和±6 g,在1.5 g范围内,敏感度可以达到800 mV/g。另外它体积非常小,采用6 mm×6 mm×1.45 mm QFN 封装,并拥有睡眠模式以节电。以上这些特性,让MMA7260非常适合运用于以电池供电的手持设备上[2]。
TI-RTOS是由TI开发的可裁减嵌入式实时操作系统,此操作系统是在一个名为SYS/BIOS的实时多线程内核基础之上构建的,提供了实时多任务抢占式调度机制,并包含了硬件抽象和实时性能分析,可以有效地优化目标机的内存和CPU使用。在内核层之上,TI-RTOS不仅提供了一套设备驱动,还附加了诸如文件系统、网络层等组件,使开发者可以将精力集中在应用的开发上[3]。
2系统设计
2.1网络拓扑
系统的整体网络拓扑如图1所示,作为数据的接收方和交互终端由Android智能设备担任,其可以是智能手机、平板等,目前携带无线网卡的Android智能设备,均可以在系统设置中开启共享网络选项,使设备变为一个无线热点,令其他同样采用802.11标准的无线设备可以接入。
图1 系统网络拓扑
因热点AP具有一对多的连接能力,本系统采取了两个接有MMA7260传感器的CC3200作为Station接入热点AP。而当选取的智能设备拥有3G上网能力时,甚至可以将数据通过3G网络传入位于因特网的云端,令其他观测者获取。采用这一拓扑结构有以下优点:
① 采用双CC3200,极大提高了采集数据的稳定性与容错性,即使一台设备宕机或断开连接,另一台也可以正常工作。
② 使系统可携带。通常情况下,AP热点由无线路由器担任,但是对于摔倒检测,始终令用户随身携带无线路由是不现实的,而诸如手机等智能设备是方便携带的。由MMA7260与CC3200组成的传感器设备体积小,可以将其别在衣物上以便使用。
2.2接口连接
MMA7260与CC3200的连接方式如图2所示,接入3.3 V电压并令Sleep引脚保持高电平。g-Select1与g-Select2引脚悬空,表示选择模式00,即为量程1.5g模式。此外,图2中用到了6个10 kΩ电阻,这些电阻起到调整电压的作用。CC3200的ADC引脚P58、P59、P60的输入电压范围为1.5 V,如果超过这个电压值,ADC模块将不会检测到电压变化,始终判定为1.5 V[4],而MMA7260的输出电压可以达到2.85 V,使用电阻并联后输入电压减少至一半,即可正常检测传感器数据。
图2 MMA7260与CC3200连接图
2.3软件设计
应用部署在TI-RTOS上,利用TI-RTOS的多线程能力,可以将运行在CC3200微控制器上的软件分为采集任务、网络任务、发送任务。其中,采集任务用来驱动ADC接口,收集由MMA7260传感器得到的三轴加速度数据;网络任务用于在CC3200启动时与Android设备AP建立连接;而发送任务用于将采集的数据发送给AP。
当MCU启动后,会由TI-RTOS创建3个线程,分别运行以上描述的3个任务,在这3个线程中,网络连接的优先级最高,因为连接网络的操作是整个检测系统的运行基础。采集任务和数据发送任务同步运行,由ADC采集到的三轴加速度数据存储在公共缓冲区中,数据发送任务从公共缓冲区提取数据,并通过TCP/IP协议以数据包形式发送。
同样,在Android设备AP上运行接收程序,这一程序周而复始地运行,采集从MCU设备传送过来的数据,并将数据进行解析处理显示在屏幕上。如果设备支持3G网络,可以同时将数据上传到物联网云平台,以支持远程设备监视。
3软件实现
3.1采集任务
CC3200提供了API以供开发者调用,所以可以很容易地获取到CC3200的采集数据。
CC3200的ADC模块的内存映射地址由DriverLib给出,本程序使用到的符号分别为ADC_BASE基地址、ADC_CH_1、ADC_CH_2、ADC_Ch1偏移地址。使用前对ADC模块进行初始化,代码如下:
MAP_ADCTimerConfig(ADC_BASE,2^17);
MAP_ADCTimerEnable(ADC_BASE);
MAP_ADCEnable(ADC_BASE);
MAP_ADCChannelEnable(ADC_BASE, ADC_CH_1);
首先使用MAP_ADCTimerConfig与MAP_ADCTimerEnable函数对ADC模块的定时器进行设置与使能,这里使能了全部17个位作为时间戳的长度,并使用MAP_ADCChannelEnable使能ADC通道。
ADC模块的采样数据存储于ADC模块的FIFO数据寄存器中,在其32位的长度中,2~13位为采样数据,使用DriverLib中提供的MAP_ADCFIFORead函数即可获取相应通道FIFO数据寄存器的long型数值。之后,将采样的X、Y、Z轴的数值向右移2位,并用掩码去掉时间戳等多余信息,按照电压比换算,进一步转换为电压值,存储在全局数组中,以供发送程序采集使用。
3.2网络任务
网络任务按顺序共分为3部分:第一部分在SimpleLink软件层,将相关的网络器件状态调整为默认态,并调用sl_Start函数以就绪设备;第二部分为连接部分,使用函数sl_WlanConnect进行对AP的连接,将AP的SSID作为参数传入;第三部分将设置一个循环来监听g_ulStatus的状态,当g_ulStatus同时满足已获取IP和网络已连接状态,说明网络已成功连接,跳出循环使程序继续运行。
3.3发送任务
发送任务程序采用TCP/Socket实现,MCU端作为TCP Client,首先连接运行位于AP设备上的TCP Server。使用SlSockAddr_t结构体存储TCP Server的IP地址与端口号,并在调用连接函数sl_Connect时作为参数传入。
数据发送代码如下:
while (1){
sprintf(g_cBsdBuf, " x: %f y: %f z: %f ",
(((float)((pulAdcSamples1[4] >> 2 ) & 0x0FFF))*1.4)/4096,
(((float)((pulAdcSamples2[4] >> 2 ) & 0x0FFF))*1.4)/4096,
(((float)((pulAdcSamples3[4] >> 2 ) & 0x0FFF))*1.4)/4096);
// sending packet
iStatus = sl_Send(iSockID, g_cBsdBuf, 38, 0 );
}
因sl_Send每次只能发送一个数据包,故使用while循环来发送多个数据包,iSockID为建立特定Socket连接后提供的标识符,g_cBsdBuf和sTestBufLen为发送数据的缓冲区和发送长度。
3种任务通过函数的形式封装,并使用由TI-RTOS提供的osi_TaskCreate对任务进行注册,待系统启动时,操作系统会自动调度3种任务。优先级最高的网络任务优先执行,待其结束后,优先级稍低的采集任务和发送任务开始执行,两种任务都是常驻的循环程序,所以需要在它们的循环中调用osi_Sleep函数使任务停转,以保证另一任务可以抢占,让多任务可以并行。在微控制器上运行的所有程序的流程图如图3所示。
图3 软件整体流程图
3.4接收模块
接收模块程序在Android智能终端上实现,将其作为Android应用来实现,当应用程序启动时,建立一个端口号为5001的TCP Server以供CC3200的TCP模块进行连接。当连接建立成功后,Server端源源不断地从Socket数据流读取数据,每条数据以换行符作为分隔,包含了加速度传感器的三轴加速度信息。
在界面上将不断输出变化的三轴传感器数值,并将数值连带时间戳写入日志中以供观测和统计。
4跌倒检测
在进行跌倒测试前可以进行串口数据测试,以确定设备正常工作并得到传感器的各状态数值。在发送任务中使用提供的PinMuxConfg函数进行初始化,并调用UART_PRINT函数,即可按一定格式进行串口输出。在计算机上安装FTDI驱动之后连接CC3200,可以在设备管理器中得到设备串口号。此时,打开串口工具Trea Term,并设置波特率为115 200 bps,待CC3200连接AP正常工作后,可以看到串口终端中的数据显示,包括X、Y、Z三个加速度方向的电压值。
实现硬件连接、组网与程序之后,对设备进行部署,首先将传感器佩戴在人体的臀部,这一部位相对比较稳定,在平时行进、弯腰等动作时不会对检测造成明显影响,并将其标志面向上与地面平行作为标准状态。作为采集终端的AP热点Android设备,可以置于衣物口袋中以保证连接,并每隔100 ms将数据写入文件中。之后,进行每段时长为10 s的人体静止、行进和摔倒动作,将文件中记录的300条三轴电压变化数据导入Excel表格,并做了折线图绘制。
① 在第一个10 s内,人体保持静止,其三轴加速度变化如图4所示。
图4 静止状态三轴电压变化
② 在第二个10 s内,人体行进,其三轴加速度变化如图5所示。
图5 行进状态三轴电压变化
③ 在第三个10 s内,人体跌倒并倒地侧卧,其三轴加速度变化如图6所示。
图6 跌倒状态三轴电压变化
通过对以上数据进行分析,可以得知在静止状态下,CC3200获取的X、Y、Z三轴的电压维持在0.65 V、0.75 V和1.05 V。而在人的行进状态下,三轴电压的浮动值不超过0.4 V。通过可以进一步计算出各个方向的角度值,在人体跌倒时,Z轴(即垂直方向)在一定时间(1~2 s)内大幅度下降,代表人体位置大幅下坠,其电压的振幅超过0.5 V,通过这一条件的判断,即可得知人体可能摔倒,并发出警告。
结语
本文利用SimpleLink Wi-Fi CC3200平台,与MMA7260加速度传感器结合,设计了一套新型组网方式下的加速度检测系统。其无线的连接方式使检测系统的部署与测试更加灵活,而通过Android智能终端提供的数据显示与采集为分析数据带来了极大的便利,通过分析人体摔倒时的规律,可以很好地起到跌掉检测和报警的作用。
参考文献
[1] Texas Instruments.CC3200 SimpleLink Wi-Fi and Internet-of-Things Solution, a Single-Chip Wireless MCU[EB/OL].[2015-09].http://www.ti.com/lit/ds/symlink/cc3200.pdf.
[2] 陈钰琨.LM4F232pQD与MMA7260加速度传感器的跌倒检测[J] .单片机与嵌入式系统应用, 2013(6): 49-52.
[3] Texas Instruments.TI-RTOS 2.14 User’s Guide[EB/OL].[2015-09].http://www.ti.com/lit/ug/spruhd4j/spruhd4j.pdf.
[4] Texas Instruments.CC3200 SimpleLink Wi-Fi and Internet of Things Solution, a Single Chip Wireless MCU Technical Reference Manual[EB/OL].[2015-09].http://www.ti.com/lit/ug/swru367b/swru367b.pdf.
高天星、赵旭强(硕士研究生),马忠梅(副教授):主要研究方向为嵌入式系统和物联网应用。
Wi-Fi Wireless Fall Detection System Design Based on CC3200※
Gao Tianxing,Zhao Xuqiang,Ma Zhongmei
(School of Computer Science and Technology,Beijing Institute of Technology,Beijing 10081,China)
Abstract:The CC3200 MCU is produced by TI company based on ARM Cortex-M4,which belongs to TI SimpleLink product line.CC3200 has powerful Wi-Fi network communication ability.In this paper,a new wireless acceleration detection system is designed using CC3200 and MMA7260 acceleration sensor,which takes Wi-Fi as the networking model.The system can be used for the falling detection.
Key words:CC3200;Wi-Fi;fall detection
收稿日期:(责任编辑:杨迪娜2015-09-11)
中图分类号:TP368
文献标识码:A