跌倒探测仪由加速度传感器、数据处理模块、电源和通信模块构成。其中传感器测量对象的加速度矢量;处理器模块负责采集加速度传感器的数据,分析判断对象的身体姿态并控制报警及报警信息的发布;电源模块负责为整个系统提供电力供给;通信模块负责将报警信息通过一定的协议进行发布。
关键技术
人体运动模型的建立
在姿态转变过程中,重力将成为影响这一运动过程的主要因素。跌倒过程中,对象的加速度、速度和位移三种矢量均发生了变化。
如图1建立直角坐标系,X、Y、Z轴相互正交,任意空间方向上的矢量变化均可以分解成X、Y、Z三个方向上的分量变化。使用者正确佩戴跌倒探测器且处于静止或水平匀速运动状态下,Z轴方向的加速度为重力加速度(g),其他两个方向上加速度为0。当佩戴者跌倒时,如果仅考虑初始状态和最终状态就可以发现,理想情况下Z轴分量发生从最大值(1g)变化为0,而X或Y轴的分量则从0变化为最大(1g),具体是X轴还是Y轴发生这一变化,则由佩戴者跌倒后的姿态决定--平卧为X轴变化,侧卧为Y轴变化。如果身体姿态介于平卧和侧卧之间,则X轴和Y轴的加速度分量将满足\sqrt{x^{2}+y^{2}}=1g(站立情况下这个矢量和为0),仍然能够通过计算分析得出与站立不同的加速度分布。
但是在实际情况中,仅根据加速度分量的改变很难分辨卧倒姿态的形成原因,容易出现很多假阳性(检测到跌倒而实际没有跌倒)或假阴性(未检测到跌倒而实际出现跌倒)。因此,需要算法作进一步改进。一般来说,假阳性情况可以通过对加速度在时间域进行一次积分求速度、两次积分求位移的方式,全方位分析佩戴者身体姿态变化加以筛选;而假阴性情况除采用上面的全面姿态分析外,还需要佩戴者自主参与才能有效提高检出效率。因此,建立人体跌倒过程的运动模型,提取跌倒过程中身体姿态变化的特征参数是准确检测跌倒并发布报警信息的关键。
无线通信及空间定位信息获取
跌倒报警必须及时送达救助中心才能够保证救助的有效性,报警信息的及时发布要求包含两层含意:其一是报警信息不会因为跌倒探测器佩戴者的行动和所处的位置受到影响;其二,发布的报警信息中应该包括佩戴者跌倒的地理位置内容,这样才能保证跌倒者得到有效救助。
采用无线通信的方式发布跌倒报警信息非常适合能够自由行动的配戴者,无线通信技术从技术成熟度、运行成本角度也都非常适用。从技术实现和成本方面考虑,选择CDMA通信方式更加适合跌倒探测器设计目的的实现。
系统方案设计
需求分析
身体姿态监测
通过三轴加速度传感器的测量值,利用相应算法计算出佩戴者的身体姿态。当出现跌倒动作时,能够触发MCU中断处理。
报警控制机制
使用者可根据自己的身体状况选择是否报警,当使用者已无法控制自己行为时,本产品应能够保证自动实施报警。
计步器
在一般佩戴过程中,用户可使用该项功能,为自己的步行健身活动提供量化的参考信息。
空间定位
在实施跌倒报警时,应为报警信息接受方提供报警地点的空间定位信息,保证有效救助及时到达。
无线通讯
能够将报警和定位信息通过无线方式传输到相关人员处。
供电采用锂电池
部分信息显示使用液晶屏
系统架构设计
根据跌倒探测器的需求分析,具体的实现方案设计采用如图2所示的架构。该架构基于高性能、低功耗MCU--MC9S08QG8,通过获取加速度传感器的采集信息,经分析和计算后实现跌倒探测及报警等多项功能。
硬件设计
硬件设计围绕MCU展开,产品采用MC9S08QG8芯片,如何充分利用芯片资源,妥善完成产品的各项任务处理,是设计的关键。参考系统结构框架,根据功能模块划分,系统的硬件设计详细描述如下:
加速度采集电路
加速度采集使用MMA7260QT,该芯片输出为模拟信号,需进行A/D转换后才能进行数据处理。MC9S08QG8芯片的PA脚为复用通道,可根据需要设置为I/O、键盘中断或A/D采样通道。本设计将利用MC9S08QG8芯片内部的A/D模块实现模数转换,具体实现中采用PA0、PA1和PA2作为三轴加速度的采集通道,与MMA7260QT的Xout(Pin15)、Yout(Pin14)和Zout(Pin13)相连,A/D采样的控制时钟通过软件配置MC9S08QG8相应控制寄存器完成。
MCU外围电路
本设计中,MCU外围电路包括电源与时钟、数据缓存和按键电路三部分构成,下面分别描述。
电源与时钟
功能组件包括MCU、液晶、按键、采集、数据存储和通信几部分。根据所选用器件的数据手册,各组件对供电要求如图3所示。
从图中可以看出,整个系统设计要求电源参数有三种,分别为3V、3.3V和3.7V。其中,主要数字电路部分--包括MCU及其外围电路部分要求提供3.3V的工作电压;而在无线通信模块中,针对读取入网SIM卡部分电路要求3V的供电电压,CDMA射频部分工作电压要求不低于3.5V。
在实际设计中,输出电压为3.7V,由于能够满足CDMA射频模块的工作要求,故直接使用Li电池的输出供电;联通入网SIM卡信息读取电路的工作电压为3V,设计中采用MICREL公司的MIC5219-3.0芯片执行电压转换工作;其他数字电路部分的工作电压为3.3V,设计中采用MICREL公司的MIC5219-3.3芯片实现这一转换,参见图3中虚线框中的内容。
MC9S08QG8自带时钟模块(ICS),为了降低功耗和简化设计,本系统通过软件设置相应的控制寄存器实现系统时钟的上电稳定工作,故在硬件电路设计中不需作过多的考虑。
存储器
有效的数据缓存要求至少具有320点(合1920字节)的存储深度。 在本设计中,采用Holtek公司的HT24LC16串行EEPROM作为数据缓存。该芯片采用I2C通讯接口,存储深度2K字节,数据读写速度在微妙量级,能够满足数据实时写入的要求。数据写满后,MCU自动将地址重置,从首地址开始覆盖写入新的数据。
由于MC9S08QG8内部配有I2C控制模块,故只需将该模块对应管脚与EEPROM连接即可--使用PB6(Pin5)和PB7(Pin6)与EEPROM连接。
按键电路
报警确认、报警取消、计步器启动、计步器暂停、计数清零以及无线通信中接受方号码的设置,都要求跌倒探测器具有用户输入的接口,设计中采用按键实现。按键的接法和使用较为简单,直接利用MCU的输入输出管脚即可,本设计采用Pin1和Pin13。
液晶显示
本设计采用5位7段码液晶屏,计步器显示计数和报警接受方电话号码输入都是通过该液晶屏提供给使用者确认。液晶屏的控制管脚为24个,由于MCU全部管脚座位液晶控制也无法满足工作需求,故在本设计中采用Holtek公司的HT1621B液晶驱动芯片完成从MCU到液晶屏显示数据的管理和驱动。另外,HT1621B芯片还具有蜂鸣器控制和驱动能力,在本设计中,集成蜂鸣器作为现场报警提示将有助于提高跌倒探测器报警的针对性和准确性,将通过在HT1621B的BZ管脚连接一蜂鸣器得以实现。
HT1621B为I2C接口,MCU可通过内部I2C控制模块传输指令和数据给该芯片。由于本系统采用的EEPROM也是使用I2C接口,针对不同器件的数据传输和控制指令将通过地址选择加以实现。
通信模块
本设计采用AnyData公司的DTGS-800b型OEM模块。该模块符合CDMA:IS-95 A/B、IS-98A、IS-126、IS-637A、IS-707A以及IS-2000等标准协议,能够提供最高153.6K的数据通讯速率,工作电压3.6V~4.4V,外形尺寸为53*33*2.7mm,总重量为15g,提供外部通讯接口包括RS-232s、Digital/Analog Audios、LCD、Keypad、Ringer External Reset Control、R-UIM、MP3、MIDI、GPIOs和USB。另外该模块可收发短信、集成GpsOne技术,无须添加其他组件即可得到地理定位信息,且厂家技术支持非常完善,其各项功能配置非常适合跌倒探测器的需求描述。
具体实现中,CDMA模块要求配套入网SIM卡,模块各项功能可由MCU通过RS232接口以AT命令的方式加以调用。本设计中通信模块的设计如图4所示。
MC9S08QG8的SCI外设接口经TTL-RS232转换后,与DTGS-800b的RS232端口相连,用以向该模块发AT命令。由于该模块要求7信号的RS232接口,而MCU自带SCI不提供该种通信方式,故在系统设计中采用I/O口进行软件模拟其他的控制信号:CTS、RFR和DTR。DTGS-800b模块通过SIM卡读卡电路与SIM卡相连,内部自带处理器根据需要读取SIM卡信息,完成CDMA的入网和通信信息的交换。
端口分配
由于本设计采用MC9S08QG8单片机仅能提供最多14个I/O端口,根本无法满足控制整个系统运行的信号数量要求,故在进行具体设计时,对各管脚的使用和分配进行了专门的部署,如图5所示。
程序调试和烧入需要两个端口,但完成调试和烧写操作后,这两个端口可以作为标准的I/O使用,故在设计中将其中一个I/O(Pin1)作为按键的输入,实现了端口的复用。
CDMA组件与MCU的通讯要求
通过7信号RS232接口,而MC9S08QG8
的SCI模块仅有TXD和RXD两个信号,在设计中采用标准I/O通过软件模拟的方式实现其它所需信号,包括DTR、CTS、RFR。
EEPROM和液晶驱动组件的存取采用I2C接口,本设计中将使用MC9S08QG8的I2C模块进行硬件控制,通过地址选择实现不同组件间的切换。
软件设计
软件设计是系统各项功能具体实现的关键。在跌倒探测器的软件设计中,由实线系统功能引发的处理内容较多,为了更好地利用和分配MCU的资源,采用了事务处理和状态机相结合的设计方法。
事务处理及状态机
根据跌倒探测器的设计需求,系统要同时具备计步器、跌倒检测、报警处理、系统设置和无线通信控制等功能。
事务处理的方法借鉴操作系统中的线程概念。首先将每项事务执行的操作明确,确定每种操作的优先级、相互关系和对资源的要求,然后在主循环中设置各种操作的启动机制,从总体上看,这些事物在主循环中并行地得到实现。跌倒探测器事务处理的调用关系如图6所示。
针对某些项事务处理的实现,在软件设计中采用了状态机的方法以确保整个任务能够顺畅而正确地得以实现。
系统设置
系统设置主要完成一些初始化操作和需要使用者进行确认的系统信息的设定操作。
系统初始化工作主要由MCU完成,包括各种配置寄存器的设置、液晶初始化指令和存储缓冲区的设置,初始化工作将保证系统各功能组件能够在上电后正常启动。
MCU初始化--MCU_Init( ):
通过设置相应的控制寄存器实现MCU的启动和对各功能外设(Peripheral)的管理:
时钟:MCU工作采用内部时钟,通过设置ICS控制寄存器实现;
端口:根据系统端口分配方案,结合相关外设--I2C、SCI的控制寄存器实现;
I2C控制器:传输速率、地址选择设定;
SCI控制器:波特率设置。
液晶初始化--LCD_Init( ):
通过指令初始化液晶驱动控制芯片HT1621B,完成液晶显示器的初始化。
存储缓冲区初始化--RT_Data、 Word_Base[ ]:
MC9S08QG8内部集成了512字节的RAM满足程序运行所需。而在跌倒探测器运行过程中,MCU持续采集加速度传感器的数据,并进行处理,因此要为数据分析预先开辟好缓存区。同样,在利用CDMA发布报警信息时,报警信息文字内容需要在进行软件设计时预先设定好,并在需要使用时通过指针调用。
需要使用者进行确认的系统信息的设定,是指跌倒探测器报警信息的接收方可以根据实际情况由使用者进行设定,例如亲属的移动电话或急救中心的固定座机(要求能够接收短信)。使用者可以通过按键配合液晶,输入接收方的号码即可,必要时使用者也可以对接收方号码进行修改。
按键功能
按键功能在软件设计中单独提出是因为本系统受限于MCU端口数量,无法按照预先设计的人机交互需求安排足够端口作为键盘扫描之用。本设计中最终确定使用2个按键,按键的功能设定及使用方法设计如下。
"Alam"键(启动报警接收方号码输入、手动报警):
跌倒探测器一般工作模式下,长按(超过2秒)"Alam"键,启动报警信息发布功能,适用于除跌倒情况外其他紧急情况;
跌倒探测器一般工作模式下,按"Alam"键,跌倒探测器进入设置报警接收方号码状态,配合"Alter"键实现号码输入;
跌倒探测器进入报警处理状态(蜂鸣器beep)时,按"Alam"键,直接发布报警信息,然后关闭蜂鸣器;
"Alter"键(计步器启动、暂停、清零、取消报警、设置报警接收方号码):
跌倒探测器一般工作模式下,按"Alter"键在计步器启动、暂停和清零三项功能之间切换;
跌倒探测器进入报警接收方号码输入状态时,"Alter"键执行液晶显示的数字加1的操作,数字从0-9循环;
跌倒探测器进入报警处理状态(蜂鸣器beep)时,按"Alter"键取消报警,然后关闭蜂鸣器。
计步器
MCU始终在分析佩戴者身体姿态的信息,因此可以将佩戴者的行走动作分析作为一项附属结果输出,从而使跌倒探测器还具有了计步器的功能。
参考图1,在理想状态下的步行过程中,X轴和Z轴都应该能够检测到加速度的周期性变化--X轴由前进的动作引起,Z轴由身体的上下起伏引起,这种周期性的变化可以为步行动作的分析提供依据。由于在实际使用过程中,身体随迈步动作产生相应的晃动同样会引起加速度传感器在三个正交坐标轴方向上的输出,因此在设计检测算法时应设定合适的加速度阈值。只有超过一定幅度的输出才被看作是由于迈步动作所引起,避免由于正常的身体晃动引入的各种伪差。计步器实现的软件流程如图7。
跌倒检测
危险的或者可能已产生较严重后果的跌倒发生后,人体通常处于水平状态,因此对于这种类型的跌倒,要求跌倒探测器都能够检测到并实施报警处理机制。而对于其他较为复杂的跌倒过程,则需要通过报警机制的配合,实现对跌倒探测及危险报警的准确触发。跌倒检测的算法状态机如图8所示,
跌倒检测算法描述如下:
1)主循环等待,监测Z轴加速度变化,如果超过阈值,进入下一步;
2)等待加速度恢复到正常范围内,进入下一步;
3)再设置延时10秒,等待佩戴者状态稳定;
4)数据分析,如果发现佩戴者身体水平,认为发生跌倒状况,触发报警处理。
报警处理
在本设计中,采用跌倒检测算法和多种报警模式相结合的方式。跌倒探测器检测到跌倒发生时,系统必须能够准确无误地将报警信息发布出去,才能保证跌倒者获得救助。跌倒包含很多种类型,有些情况下,检测到的"跌倒"是有意识的行为--或者根本不是跌倒--假阳性;另外,有时跌倒者仍然还保持一定的行动能力,为了尽快得到救助,自身可以采取一定的行动;还有一种情况,跌倒造成比较严重的后果,跌倒者已无法行动。
针对上面提到的几种情况,报警处理的软件设计将加以区分对待:
检测到跌倒后,系统启动30S的倒计时器,并打开蜂鸣器,每3S响一次,如果没有接收到任何输入,30S结束后,系统自动发布报警信息;
进入30S倒计时后,蜂鸣器"beep",系统可以响应用户输入,跌倒探测器的两个按键分别设置为"手动报警"和"取消(报警)"的功能,如果用户按"手动报警"键,系统发布报警信息;
如果用户按"取消"键,系统关闭30S倒计时和蜂鸣器,不作任何处理,直接返回计步器和跌倒检测状态。
通信控制
报警信息通过CDMA短信的方式发送给接收方,跌倒探测器采用DTGS-800b型CDMA模块,通信控制就是使其能够正常工作的一段例程。DTGS-800b型CDMA模块提供RS232接口,MCU可以根据需要通过AT命令实施对通信过程的控制。具体通信例程根据设计需求应包括如下内容:
启动CDMA模块--Comm_Start( );
启动GpsOne?服务--Gps_Start( );
获得GPS空间定位信息--Gps_Position( );
发送短信息报警--Send_SMS( )。
由于通信例程涉及的状态不多,基本是按照上面的顺序进行,因而程序结构比较简单,这里就不再赘述。
结论
按照上述方案设计完成的跌倒探测器样机线路板如图9所示,左图为带有CDMA模块线路,右图为不带CDMA模块线路,可见其下方是读SIM卡电路。上电后,该线路板各功能模块工作正常,能够完成加速度采集、EEPROM数据存储和跌倒报警短信发送(包括自动、手动和取消模式),按键液晶均能够正常