APP下载

多传感器远程家庭健康体征监护系统

2010-08-04郭渊哲严小松尹祝彪

通信技术 2010年9期
关键词:微控制器线程串口

郭渊哲,黄 奎,严小松,赵 壮,尹祝彪

(①中国科学院研究生院 泛在与传感网研究中心,北京 100049;②中国科学院微电子研究所,北京 100029;③北京无线电测量研究所,北京 100854)

0 引言

随着经济和生活水平的提高,人们对自身的健康投入了越来越多的关注。但是,当前存在的体征监护仪大多只能在医院病房中使用,成本较高且不易于移动。这就迫使使用者要为常规的生理体征检测花费大量的精力和财力。

嵌入式系统在近年得到了迅猛的发展。当前,32位的嵌入式精简指令集计算机(RISC)处理器已具有很强的数据处理能力。并且,伴随着网络技术的发展和嵌入式软件研发工具的出现,也使得嵌入式系统的网络功能日渐强大[1]。因此,将嵌入式系统和生物医疗仪器技术相结合,为使用者提供一种成本低、易于在家庭中使用,且能够提供远端医疗服务的新型家庭健康体征监护系统,已经成为当前计算机系统和医疗仪器科研人员的研究热点[2]。

在此背景下,这里采用嵌入式系统开发技术,设计了一种多传感器远程家庭健康体征监护系统。此系统采用韩国Samsung公司出品的基于ARM9架构的S3C2410微控制器作为主控芯片(中央处理单元),并在其上移植了当前广泛使用的Linux操作系统。此系统能够实时地采集和监测用户的心率、心电图、血氧含量、血氧波形、脉搏棒图、体温及血压数据。当使用者的生理数据出现异常的时候,系统会自动地发出警报。除此之外,用户还可以请求远端的监护中心实时地给予在线医疗服务。

1 系统硬件结构

家庭健康体征监护系统在硬件上是以 ARM9架构的 32位嵌入式RISC微控制器S3C2410为主控芯片,并在外围添加各种功能模块及传感器。通过 S3C2410的内部接口控制器,可以实现主控芯片(S3C2410)对传感器数据采集模块、用户显示模块、移动存储设备、有线网络通信模块和无线网络通信模块的控制和信息交流[3-4]。整个系统的结构框图如图1所示。

图1 家庭健康体征监护系统的结构

1.1 S3C2410微控制器芯片

S3C2410微控制器是该系统的主控芯片。它是韩国Samsung公司为手持设备设计的低功耗、高度集成的微控制器。S3C2410基于 ARM9体系结构,采用 ARM920T处理器内核,时钟频率最高可达 203 MHz。该微控制器不但具有数据处理单元(CPU),还集成了一些常用的接口控制器,如串行接口(UART)、支持薄膜晶体管(TFT)的 LCD控制器、闪存(NAND FLASH)控制器、触摸屏接口、通用串行总线(USB)控制器等。该微控制器内置内存管理单元(MMU),诸如 Linux,Windows CE的现代操作系统可以在其上得到很好的支持。

1.2 传感器和传感器数据采集模块

传感器数据采集模块连接各种生理传感器,并通过串行接口(RS232)将收集到的生理体征数据发送给主控芯片(S3C2410)。它由处理器、调理电路和模数(A/D)转换电路组成。其中,调理电路主要实现对各个生理传感器采集到的信号进行滤波和放大,然后将这些信号送到 A/D转换电路。处理器对从 A/D转换电路获得的数据进行分析处理,并将最终得到的生理体征数据通过串行接口发送给主控芯片。

1.3 用户显示模块

用户显示模块为使用者提供了友好的用户操作界面。它由一块 88.9 mm的触摸液晶显示屏(LCD)组成。在LCD屏上会实时地显示用户的心电图、心跳频率、血氧含量、血氧波形图、体温及血压值。并且,用户可以通过触摸和点击 LCD触摸屏上的菜单和按钮来实现对设备的控制。S3C2410微控制器内置了 LCD控制器和触摸屏接口。通过这两个接口,S3C2410可以实现对触摸 LCD屏的显示和控制。

1.4 移动存储模块

移动存储模块为使用者提供了体征数据的额外存储功能。用户可以将历史监测到的体征数据通过 USB接口存储到移动存储设备上(以文件的形式)。S3C2410微控制器内置USB接口,实现了对USB设备的控制。

1.5 有线网络通信模块

当使用者将设备连接到有线网络时,有线网络通信模块为设备提供了网络的访问功能。由于 S3C2410微控制器没有内置的有线网络接口,因此作者选用 Cirrus Logic公司的 CS8900A以太网控制器作为有线网络模块,实现了设备对网络的访问[5]。作者采用 CS8900A的 MEM 模式,将其映射到 S3C2410的 Bank3地址空间,起始物理地址为0x18000000,大小为 4 KB。除此之外,作者将 Bank3地址空间的数据总线宽度设置为 16位。S3C2410通过访问Bank3地址空间即可发送和接收网络数据包。

1.6 无线网络通信模块

无线网络通信模块为设备提供了无线网络的访问功能。此模块采用 Marvell公司出品的 88W8686无线网络模块作为系统的Wi-Fi接口。88W8686支持IEEE 802.11a/g/b无线通信协议,通过串行外围接口(SPI)协议与 S3C2410微控制器相连。S3C2410通过内置的 SPI接口即可完成对88W8686的控制和数据收发。

2 系统软件结构

家庭健康体征监护系统的软件部分是系统功能的逻辑实现者。它由操作系统、图形用户界面库和应用软件三部分组成。

2.1 操作系统

家庭健康体征监护系统需要具备复杂的图形用户界面和网络通信功能,除此之外,还要对各种外围模块进行控制管理,因此,在其上运行操作系统来完成这些管理工作是一个很好的选择。作者移植了当前广泛使用的Linux操作系统。它不但具有现代操作系统的多线程和虚拟内存管理等机制,而且还具有数量庞大的函数库和应用软件的支持。除此之外,由于Linux是一款开源软件,可以很方便地根据嵌入式系统的实际需求来为其添加或删减特定的功能,以最小代价满足系统的需求[6]。

2.2 图形用户界面库

对于图形用户界面,作者选择GTK+作为系统的图形用户界面库。GTK+是一款被广泛使用的开源图形用户界面(GUI)库,主要使用在 Linux平台上。在应用程序中,开发者可以使用它提供的各种控件来构造自己的用户界面。除此之外,GTK+还提供了一些常见的数据结构和算法,是对 Linux系统应用程序编程接口(API)的扩展。这为应用程序的开发提供了极大的便利性。

2.3 应用软件设计

应用程序是家庭健康体征监护系统的功能实现者。在应用程序中,作者使用了Linux系统API和GTK+库的接口实现了系统的全部功能。作者采用多线程技术,将应用程序分解为 4个同步运行的线程。这些线程之间相互协作,充分的使用了系统的资源。并且,由于涉及到用户图形界面,这种多线程的设计模式也避免了界面的“假死”及减少了用户的等待时间。

应用程序的 4个线程分别为:主线程、网络接收解析线程、串口接收线程和串口解析线程。其中:

①主线程在初始阶段申请所需的资源及初始化所有使用到的设备和模块,并在 LCD屏上绘制用户界面,然后创建其余 3个线程。最后,主线程进入事件等待循环,等待用户的操作或其它线程发送来的消息;

②网络接收解析线程的主要功能是监听网络端口,等待网络数据包的到来。当线程收到网络数据包后,会对网络数据包进行解析,提取出有效数据,并通过消息机制通知主线程。主线程会根据消息的类型自动调用具体的回调函数进行处理;

③串口接收线程的主要功能是监听串口(与传感器数据采集模块相连)。当串口有数据到达时,线程会将串口接收到的数据以字节为单位依次放置到缓冲区中。这个缓冲区为串口接收线程和串口解析线程所共有;

④串口解析线程会从缓冲区中以字节为单位依次取得一个数据包。由于传感器数据采集模块发送来的数据包有一定的格式,因此该线程会对取得的数据进行验证及解析,从而得到有效数据。随后,线程会根据有效数据的类型,向主线程发送特定类型的消息。此线程获得的有效数据多为生理体征数据,所以当主线程收到串口解析线程发送来的消息后,会调用相应的回调函数来改变用户界面所显示的生理体征值。

这些线程的执行流程及它们之间的关系如图2所示。

3 网络功能

为了实现远程医疗服务,家庭健康体征监护系统需要具备一定的网络功能。位于用户身边的监护终端会将收到的体征数据通过网络发送给监护中心,并且能够接收监护中心发送来的控制命令。

图2 线程执行流程及其关系

作者采用用户数据报协议(UDP)作为监护终端和监护中心之间的网络连接模式。系统的关键是监护中心能够实时地收到监护终端发送来的体征数据并显示出来,而少量的数据丢失和乱序是可以接受的。因此,UDP较之传输控制协议(TCP)更加合适。

监护终端发送给监护中心的体征数据,需要特定的通信协议格式。作者定义的格式为:

机器/用户ID 类型ID 序列号 数据

其中“机器/用户ID”字段表示当前的体征数据是哪个监护终端发送的;“类型ID”字段用来区别被发送的体征数据类型,即该体征数据到底是心率、心电图、血氧含量、血氧波形、脉搏棒图、体温和血压数据中的哪一种;“序列号”字段表示当前类型的体征数据的顺序。对于特定类型的体征数据,它的序列号是加1递增的。接收体征数据的进程会根据该字段判断体征数据的顺序;“数据”字段中保存的就是被发送的体征数据值。

4 结语

设计并实现了一种多传感器远程家庭健康体征监护系统,并应用于实际测量,为嵌入式系统在远程医疗监护中的应用提供了新思路和切实可行的方案。通过因特网和嵌入式系统技术,以低成本、高性能和易用性实现了对使用者的多种体征数据的本地和远程实时监护和记录。该系统较好地实现了社区家庭医疗的需要,具有广阔的市场前景。

[1] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.

[2] 徐立新,陈震.嵌入式 Internet技术及其在远程心电监护系统中的应用[J].计算机工程与设计,2006,27(03):379-381.

[3] 王典洪,谢利芳,王琳,等.基于ARM和GPRS的远程数据采集和监控系统设计[J].通信技术,2007,40(11):396-399.

[4] CATSOULIS J.嵌入式硬件设计[M].北京:中国电力出版社,2007.

[5] 徐功伟, 戴学丰,刘树东,等. 嵌入式以太网控制器设计[J].通信技术,2009,42(05):183-187.

[6] 陈峰,李滨滔,戈志华.基于 S3C2410的嵌入式 Linux系统构建[J].现代电子技术,2007,30(24):55-57.

猜你喜欢

微控制器线程串口
基于C#线程实验探究
浅谈AB PLC串口跟RFID传感器的通讯应用
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
基于国产化环境的线程池模型研究与实现
物联网技术在微控制器实验教学中的应用
用于高品质电动汽车的分布式并行计算
浅谈linux多线程协作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式