何秀强, 黄 威, 叶朝辉
(清华大学 自动化系,北京 100084)
基于ARM Cortex
--M4的运动环境监测系统设计与实现
何秀强, 黄 威, 叶朝辉
(清华大学 自动化系,北京 100084)
基于ARM Cortex—M4评估板和多种传感器设计了性能优良、功能丰富且成本低廉的运动环境监测电子系统。该系统能够实现人体运动时心率、气温、湿度、气压、海拔和经纬度的监测,并实时显示监测结果,通过短信发送至手机等功能。分别介绍了各分功能及分功能集成系统的设计和实现方法。经过测试,系统能够正常稳定地工作,为运动健康电子监测系统的研究提供了思路,同时可作为电子系统教学和科研的实验平台。
ARM Cortex—M4; 传感器; 运动环境; 监测系统
目前,人体运动健康监测产品,如智能手环、运动腕表等,仍然不够成熟,且价格不菲,功能单一,测量误差不稳定,并且由于技术和成本等原因尚未实现普及化[1,2]。因此,研究可监测运动健康的电子系统并尝试开发性能优良、功能丰富且成本低廉的电子产品很有必要。
本文以TM4C123GH6PGE芯片的评估板为主电路,外围搭建了多种集成数字传感器的环境量(例如气温)监测的电路模块,设计和实现了一种智能运动环境监测系统,可用于教学和科研。
TM4C123芯片评估板外围搭建了温度、湿度、气压、脉搏监测电路模块以及全球定位系统(GPS)定位和全球通信系统/通用分组无线业务(GSM/GPRS)功能的电路模块。系统功能包括以下3方面:
1)使用电路模块中集成的传感器测量对应环境量,主电路处理与电路模块的通信,从而实现人体运动时(步行、跑步、骑行和越野等)心率和运动环境中气温、湿度、气压、海拔及所处地理位置的实时监测。
2)将上述各功能集成形成监测系统。系统运行时,分别监测各环境量,将结果显示出来。循环监测,实时更新显示。
3)为了实现环境监测结果和运动数据管理以及运动健康指导,使用手机通过短信方式向系统发送查询命令,系统回送监测结果到手机。收集到环境及运动数据后,可在手机上开发运动健康管理应用程序等。
系统整体由ARM评估板、温度监测模块、湿度监测模块、气压与海拔监测模块、心率监测模块、GPS定位模块和GSM/GPRS模块等组成,其中ARM评估板为系统的主电路。系统整体结构如图1所示。每个模块中信息包括模块的名称或功能、所使用的传感器或产品的名称及供电电压。每个模块与主电路的通信方式及方向通过与主电路连接的箭头表示。实际上,AM2301湿度模块和MS5611气压模块中均集成有温度传感器,但为了拓展研究,及对比监测结果,设计使用了DS18B20温度传感器监测温度。
图1 系统结构
利用CCS开发软件编程实现各模块对应的功能,通过测试后,集成为一个监测系统,实现上述整体系统的功能。
系统各模块电路如图2所示。
图2 各电路模块与主电路连接
2.1 温度模块
温度模块使用较为常用的DS18B20温度传感器,可将温度信号直接转换成16位串行数字信号,并通过固定数据格式的串行输出方式与单片机等通信[4]。由于通信协议要求数据线空闲时应保持高电平,所以将其上拉然后连接至主电路的通用输入/输出(GPIO)口,如图2(a)所示,主电路通过对GPIO口电平的读/写可完成与外围设备的通信[5]。
DS18B20启动后将进入低功耗等待状态,当需要进行温度测量和A/D转换时,主电路发出指令,DS18B20完成相应操作,产生的温度数据以2个字节的形式存储在高速暂存器的温度寄存器中,然后继续保持等待状态。主电路在温度转换指令之后发起“读时隙”,从而通过单总线完成与传感器的数据通信,读出传感器测量到的温度数据[4]。
因为DS18B20通过对I/O引脚的电平读/写完成单总线的通信,而一般单总线通信往往采用主从机间精确的时序关系实现,即数据读/写期间主动的一方发出的高、低电平需要按照协议要求满足一定范围的延时以使另一方能够正常接收到此信号。所以需要编程使得主电路内部的定时器中断产生精确的1 μs延时,从而得到任意微秒的延时函数,据此可实现读/写时序的延时需求。
2.2 湿度模块
湿度模块使用AM2301传感器。AM2301(DHT21)数字温湿度传感器为含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电容式感湿元件和一个NTC测温元件,并集成一个高性能8位单片机。每个AM2301传感器OTP内存中存储有校准系数,传感器内部在检测信号的处理过程中需要调用这些校准系数[6]。传感器采用单线制串行接口,与主电路的连接如图2(b)所示。
主电路发送一次开始信号后,AM2301从低功耗模式转换到高速模式,等待开始信号结束后发送响应信号,并发送40 bit的数据[6]。DATA引脚用于主电路与AM2301之间的通信和同步,采用单总线数据格式,通信时间约5 ms/次, 40 bit数据包括温湿度数据和校验和,高位先出。在程序中,根据时序要求,向从机发送开始信号,当正确检测到从机的响应信号,根据时序要求读40 bit数据。之后进行数据校验,无误后,将结果回传到主函数相应变量。程序的关键在于主从机间数据读/写时严格按照时序进行操作,在编写程序和调试中应该时刻检查时序是否正确。
2.3 气压与海拔模块
气压模块采用MS5611传感器。MS5611—01BA气压传感器是由MEAS(瑞士)推出的集成SPI和I2C两种总线接口的高分辨率气压传感器,分辨率可达到10 cm。该传感器模块包括一个高线性度的压力传感器和一个超低功耗的24位Σ—模/数转换器[7]。本文选择I2C通信方式, PS引脚接高电平,CSB引脚接低电平,作为从机,其地址的最低位为1。传感器和主电路之间的连接如图2(c)所示。
MS5611的操作命令主要有5种:Reset、读取PROM中128 bit的补偿数据、温度ADC指令、气压ADC指令和读取ADC结果命令。程序中按照这5条命令的操作顺序完成对气压和温度的监测。程序中首先根据I2C通信协议中发送和接收字节的时序要求,分别编程实现发送和接收函数,然后实现上述5种读/写操作命令。
程序执行时,首先对MS5611进行初始化,读取PROM中校正参数值后,将校正参数值WORD1~WORD4转换为补偿参数C1~C6[7]。然后发送温度ADC命令,延时后读取ADC结果,根据补偿原理和补偿参数对读出的温度进行补偿计算。使用同样的方法读取气压ADC结果,然后补偿计算,修正温度变化引起的压力值的变化。如需测量海拔高度,则可通过高度与压力、温度的关系计算海拔高度。
2.4 心率模块
PulseSensor是一种用于脉搏心率测量的光电反射式模拟传感器,佩戴于手指或耳垂等处,将采集到的模拟信号传输给ADC,转换为数字信号,再通过单片机等简单计算后可以得到心率数值。采用光电容积法[8]作为测量脉搏频率的传感器。如图2(d)所示,标有S的为信号输出线(最左边),连接至主电路的ADC的输入端,并连接供电电路。
主机通过ADCIN采集得到的数据为模拟数据,信号如图3所示。主机每隔一小段时间(例如50 ms)采样模拟数据,经过A/D转换得到数字信号。经过一段较长的测量时间(例如10 s)得到一系列随时间变化的数字信号,根据数字信号的变化周期计算得到心率。为了消除模拟电压波动的噪声和ADC误差的影响,软件监测算法使用施密特比较器原理,如图4所示。
图3 PulseSensor输出的模拟信号
图4 利用施密特比较器消除噪声干扰
为了使得监测结果更加精确,程序中设定监测图4的方波20个周期,然后利用平均法计算单个周期。考虑到期间随机因素(例如在测量过程中从测量处突然拿走监测模块)的影响,还需要判定高低电平持续时间是否正常,算法中只取正常的周期,计算脉搏的频率。实验前用示波器实测波形,然后对比较器的上、下限和高低电平持续的合理时间等参数进行标定。
2.5 GPS定位模块
GPS定位模块使用U—BLOX NEO—7M—C完整模块[9],模块与主电路的连接如图2(e)所示。模块上电后,LED灯由常亮变为秒闪,定位成功,串口输出定位数据。程序中根据GPS数据格式标准,提取需要的经纬度地理位置信息。
2.6 GSM/GPRS模块
SIM900A模块是一种尺寸紧凑的GSM/GPRS模块,能够实现与远程终端的数据传输功能[10]。研究采用TTL电平接口,模块与主电路的连接如图2(f)所示。
该模块与主电路通过UART接口连接,实现主电路与模块的通信。用户以短信方式发送指令至模块,模块接收到指令后,通过串口发送给主电路,主电路将各环境量的监测结果再通过串口回传至模块,模块将监测信息通过短信方式回传手机,即可完成运动环境的远程监测功能。
为了实现各个监测模块功能的集成,程序实现可分为以下3个方面:
1)将各个模块分别实现为头文件和源文件,然后将各模块的文件都包含在工程下。每个模块的监测结果可以是函数返回值,也可以是全局变量。
2)将各模块通用的函数实现为utility.h和utility.c,同样包含在工程下,该文件主要包括延时函数、串口配置函数和串口收发函数等。
3)在主程序所在的文件main.c中实现各中断处理函数和主函数。主函数中首先配置系统时钟、使能外设、配置通信接口等,然后申请存储各监测结果的变量,并初始化屏幕显示模块。之后进入while循环,调用各功能模块文件中的函数实现对各环境量的监测,将数值结果转化为ASCII码格式。使能显示模块,将监测结果显示在屏幕上。如需实现短信收发功能,则在使能显示后,进入短信收发函数,检查串口缓冲区是否有命令,如有,则将监测结果连成一个字符串通过串口发传至GPRS模块,由GPRS模块回传至手机。循环末尾延时适当的时间,然后重新进行监测,实时更新显示。程序流程如图5所示。
图5 系统程序的流程
实际搭建的电路如图6所示。图中最上方为ARM评估板主电路,中间为各个模块电路,最下方为供电电路。系统各分功能和整体功能均通过了简单环境下的测试。
图6 实际电路系统
对基于ARM Cortex—M4的人体运动环境监测系统进行了设计和实现,使用ARM评估板作为主电路,利用外围多个具备环境监测功能的传感器模块实现了人体运动时心率和运动环境中各量的监测,并实现了监测结果的显示、发送和记录,在此基础上可在移动终端上开发人体运动健康应用程序等。
研究的重点在于基于ARM芯片评估板进行测量和控制功能的开发,一方面积累开发经验,为丰富教学和科研实验作基础研究,另一方面为当前运动健康便携式电子产品的研究提供思路。为了降低成本,可使用Cortex—M4系列中外围接口较少的芯片,开发性能优良、功能丰富且成本较低的电子系统。
[1] 张虎军,张楠楠,顾建文,等.人体运动监测技术的发展与应用[J].医疗卫生装备,2011,32(8):83-85.
[2] 刘 静,杨永杰,李 丹,等.可穿戴式生理数据检测仪的研制[J].传感器与微系统,2016,35(7):76-79.
[3] 叶朝辉. TM4C123微处理器原理与实践[M].北京:清华大学出版社,2014.
[4] 汤锴杰,栗 灿,王 迪,等.基于DS18B20的数字式温度采集报警系统设计[J].传感器与微系统,2014,33(3):99-102.
[5] 沈建华.嵌入式系统教程:基于Tiva C系列ARM Cortex—M4微控制器[M].北京:北京航空航天大学出版社,2015.
[6] 秦 伟.基于AM2301温湿度计设计[J].湖南农机:学术版,2012,39(5):59-60.
[7] 潘银松,刘天刚,马泽忠,等.基于MS5611的小型无人机高度检测系统设计[J].电子测量技术,2015(7):22-26.
[8] 鄂 冬,叶树明,周乐川.耳部光电容积脉搏波传感器的去运动干扰设计[J].传感器与微系统,2012,31(8):119-122.
[9] u-blox.u-blox发布整合3D传感器的终极室内/室外定位模块NEO—M8L[J].微型机与应用,2014(12):13.
[10] 万云霞,庞 铄,付群健,等.智能防盗车锁跟踪系统设计[J].传感器与微系统,2016(5):100-102.
Design and realization of sport environment monitoring system based on ARM Cortex--M4
HE Xiu-qiang, HUANG Wei, YE Zhao-hui
(Department of Automation,Tsinghua University,Beijing 100084,China)
A sport environment monitoring system based on ARM Cortex—M4 evaluation board and various sensors is designed for purpose of inexpensive,high performance and multiple functions.The system can achieve heart rate, temperature,humidity,air pressure,altitude,longitude and latitude monitoring functions during human body exercise,display the monitoring results in realtime and send short message to cell phone.The design and realization methods of sub-function and functional integration system are introduced separately.Test shows that the system works normally and stably,provides foundation for research on sport health monitoring system.The system can be used as an experimental platform for teaching and scientific research of electronic system.
ARM Cortex—M4; sensor; sport environment; monitoring system
10.13873/J.1000—9787(2017)08—0078—04
2016—08—22
TP 212.9
A
1000—9787(2017)08—0078—04
何秀强(1993-),男,硕士研究生,主要研究方向为电子技术领域研究,E—mail:826559503@qq.com。