郭淵哲,黃 奎,嚴小松,趙 壯,尹祝彪
(①中國科學院研究生院 泛在與傳感網研究中心,北京 100049;②中國科學院微電子研究所,北京 100029;③北京無線電測量研究所,北京 100854)
隨著經濟和生活水平的提高,人們對自身的健康投入了越來越多的關注。但是,當前存在的體征監護儀大多只能在醫院病房中使用,成本較高且不易于移動。這就迫使使用者要為常規的生理體征檢測花費大量的精力和財力。
嵌入式系統在近年得到了迅猛的發展。當前,32位的嵌入式精簡指令集計算機(RISC)處理器已具有很強的數據處理能力。并且,伴隨著網絡技術的發展和嵌入式軟件研發工具的出現,也使得嵌入式系統的網絡功能日漸強大[1]。因此,將嵌入式系統和生物醫療儀器技術相結合,為使用者提供一種成本低、易于在家庭中使用,且能夠提供遠端醫療服務的新型家庭健康體征監護系統,已經成為當前計算機系統和醫療儀器科研人員的研究熱點[2]。
在此背景下,這里采用嵌入式系統開發技術,設計了一種多傳感器遠程家庭健康體征監護系統。此系統采用韓國Samsung公司出品的基于ARM9架構的S3C2410微控制器作為主控芯片(中央處理單元),并在其上移植了當前廣泛使用的Linux操作系統。此系統能夠實時地采集和監測用戶的心率、心電圖、血氧含量、血氧波形、脈搏棒圖、體溫及血壓數據。當使用者的生理數據出現異常的時候,系統會自動地發出警報。除此之外,用戶還可以請求遠端的監護中心實時地給予在線醫療服務。
家庭健康體征監護系統在硬件上是以 ARM9架構的 32位嵌入式RISC微控制器S3C2410為主控芯片,并在外圍添加各種功能模塊及傳感器。通過 S3C2410的內部接口控制器,可以實現主控芯片(S3C2410)對傳感器數據采集模塊、用戶顯示模塊、移動存儲設備、有線網絡通信模塊和無線網絡通信模塊的控制和信息交流[3-4]。整個系統的結構框圖如圖1所示。

圖1 家庭健康體征監護系統的結構
S3C2410微控制器是該系統的主控芯片。它是韓國Samsung公司為手持設備設計的低功耗、高度集成的微控制器。S3C2410基于 ARM9體系結構,采用 ARM920T處理器內核,時鐘頻率最高可達 203 MHz。該微控制器不但具有數據處理單元(CPU),還集成了一些常用的接口控制器,如串行接口(UART)、支持薄膜晶體管(TFT)的 LCD控制器、閃存(NAND FLASH)控制器、觸摸屏接口、通用串行總線(USB)控制器等。該微控制器內置內存管理單元(MMU),諸如 Linux,Windows CE的現代操作系統可以在其上得到很好的支持。
傳感器數據采集模塊連接各種生理傳感器,并通過串行接口(RS232)將收集到的生理體征數據發送給主控芯片(S3C2410)。它由處理器、調理電路和模數(A/D)轉換電路組成。其中,調理電路主要實現對各個生理傳感器采集到的信號進行濾波和放大,然后將這些信號送到 A/D轉換電路。處理器對從 A/D轉換電路獲得的數據進行分析處理,并將最終得到的生理體征數據通過串行接口發送給主控芯片。
用戶顯示模塊為使用者提供了友好的用戶操作界面。它由一塊 88.9 mm的觸摸液晶顯示屏(LCD)組成。在LCD屏上會實時地顯示用戶的心電圖、心跳頻率、血氧含量、血氧波形圖、體溫及血壓值。并且,用戶可以通過觸摸和點擊 LCD觸摸屏上的菜單和按鈕來實現對設備的控制。S3C2410微控制器內置了 LCD控制器和觸摸屏接口。通過這兩個接口,S3C2410可以實現對觸摸 LCD屏的顯示和控制。
移動存儲模塊為使用者提供了體征數據的額外存儲功能。用戶可以將歷史監測到的體征數據通過 USB接口存儲到移動存儲設備上(以文件的形式)。S3C2410微控制器內置USB接口,實現了對USB設備的控制。
當使用者將設備連接到有線網絡時,有線網絡通信模塊為設備提供了網絡的訪問功能。由于 S3C2410微控制器沒有內置的有線網絡接口,因此作者選用 Cirrus Logic公司的 CS8900A以太網控制器作為有線網絡模塊,實現了設備對網絡的訪問[5]。作者采用 CS8900A的 MEM 模式,將其映射到 S3C2410的 Bank3地址空間,起始物理地址為0x18000000,大小為 4 KB。除此之外,作者將 Bank3地址空間的數據總線寬度設置為 16位。S3C2410通過訪問Bank3地址空間即可發送和接收網絡數據包。
無線網絡通信模塊為設備提供了無線網絡的訪問功能。此模塊采用 Marvell公司出品的 88W8686無線網絡模塊作為系統的Wi-Fi接口。88W8686支持IEEE 802.11a/g/b無線通信協議,通過串行外圍接口(SPI)協議與 S3C2410微控制器相連。S3C2410通過內置的 SPI接口即可完成對88W8686的控制和數據收發。
家庭健康體征監護系統的軟件部分是系統功能的邏輯實現者。它由操作系統、圖形用戶界面庫和應用軟件三部分組成。
家庭健康體征監護系統需要具備復雜的圖形用戶界面和網絡通信功能,除此之外,還要對各種外圍模塊進行控制管理,因此,在其上運行操作系統來完成這些管理工作是一個很好的選擇。作者移植了當前廣泛使用的Linux操作系統。它不但具有現代操作系統的多線程和虛擬內存管理等機制,而且還具有數量龐大的函數庫和應用軟件的支持。除此之外,由于Linux是一款開源軟件,可以很方便地根據嵌入式系統的實際需求來為其添加或刪減特定的功能,以最小代價滿足系統的需求[6]。
對于圖形用戶界面,作者選擇GTK+作為系統的圖形用戶界面庫。GTK+是一款被廣泛使用的開源圖形用戶界面(GUI)庫,主要使用在 Linux平臺上。在應用程序中,開發者可以使用它提供的各種控件來構造自己的用戶界面。除此之外,GTK+還提供了一些常見的數據結構和算法,是對 Linux系統應用程序編程接口(API)的擴展。這為應用程序的開發提供了極大的便利性。
應用程序是家庭健康體征監護系統的功能實現者。在應用程序中,作者使用了Linux系統API和GTK+庫的接口實現了系統的全部功能。作者采用多線程技術,將應用程序分解為 4個同步運行的線程。這些線程之間相互協作,充分的使用了系統的資源。并且,由于涉及到用戶圖形界面,這種多線程的設計模式也避免了界面的“假死”及減少了用戶的等待時間。
應用程序的 4個線程分別為:主線程、網絡接收解析線程、串口接收線程和串口解析線程。其中:
①主線程在初始階段申請所需的資源及初始化所有使用到的設備和模塊,并在 LCD屏上繪制用戶界面,然后創建其余 3個線程。最后,主線程進入事件等待循環,等待用戶的操作或其它線程發送來的消息;
②網絡接收解析線程的主要功能是監聽網絡端口,等待網絡數據包的到來。當線程收到網絡數據包后,會對網絡數據包進行解析,提取出有效數據,并通過消息機制通知主線程。主線程會根據消息的類型自動調用具體的回調函數進行處理;
③串口接收線程的主要功能是監聽串口(與傳感器數據采集模塊相連)。當串口有數據到達時,線程會將串口接收到的數據以字節為單位依次放置到緩沖區中。這個緩沖區為串口接收線程和串口解析線程所共有;
④串口解析線程會從緩沖區中以字節為單位依次取得一個數據包。由于傳感器數據采集模塊發送來的數據包有一定的格式,因此該線程會對取得的數據進行驗證及解析,從而得到有效數據。隨后,線程會根據有效數據的類型,向主線程發送特定類型的消息。此線程獲得的有效數據多為生理體征數據,所以當主線程收到串口解析線程發送來的消息后,會調用相應的回調函數來改變用戶界面所顯示的生理體征值。
這些線程的執行流程及它們之間的關系如圖2所示。
為了實現遠程醫療服務,家庭健康體征監護系統需要具備一定的網絡功能。位于用戶身邊的監護終端會將收到的體征數據通過網絡發送給監護中心,并且能夠接收監護中心發送來的控制命令。

圖2 線程執行流程及其關系
作者采用用戶數據報協議(UDP)作為監護終端和監護中心之間的網絡連接模式。系統的關鍵是監護中心能夠實時地收到監護終端發送來的體征數據并顯示出來,而少量的數據丟失和亂序是可以接受的。因此,UDP較之傳輸控制協議(TCP)更加合適。
監護終端發送給監護中心的體征數據,需要特定的通信協議格式。作者定義的格式為:

機器/用戶ID 類型ID 序列號 數據
其中“機器/用戶ID”字段表示當前的體征數據是哪個監護終端發送的;“類型ID”字段用來區別被發送的體征數據類型,即該體征數據到底是心率、心電圖、血氧含量、血氧波形、脈搏棒圖、體溫和血壓數據中的哪一種;“序列號”字段表示當前類型的體征數據的順序。對于特定類型的體征數據,它的序列號是加1遞增的。接收體征數據的進程會根據該字段判斷體征數據的順序;“數據”字段中保存的就是被發送的體征數據值。
設計并實現了一種多傳感器遠程家庭健康體征監護系統,并應用于實際測量,為嵌入式系統在遠程醫療監護中的應用提供了新思路和切實可行的方案。通過因特網和嵌入式系統技術,以低成本、高性能和易用性實現了對使用者的多種體征數據的本地和遠程實時監護和記錄。該系統較好地實現了社區家庭醫療的需要,具有廣闊的市場前景。
[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.