• 沒有找到結果。

以Android 嵌入式系統平台開發居家照護系統

N/A
N/A
Protected

Academic year: 2021

Share "以Android 嵌入式系統平台開發居家照護系統"

Copied!
10
0
0

加載中.... (立即查看全文)

全文

(1)

1

作品編號:

以 以 以

以 Android 嵌入式系統平台開發居家照護系統嵌入式系統平台開發居家照護系統嵌入式系統平台開發居家照護系統 嵌入式系統平台開發居家照護系統

國立台灣科技大學 林淵翔 老師

電子工程系 助理教授 linyh@mail.ntust.edu.tw

聯絡電話:02-2730-3618 周庭軒、張文信

電子工程系 B9602105@mail.ntust.edu.tw 摘要摘要

摘要摘要

本專題開發一 Android based 的健康照護 平台,並可結合雲端服務概念,將各種醫療照 護所需之儀器和功能整合在一嵌入式平台 上,如血壓計、血氧濃度、心跳心音、用藥記 錄與提醒等。平台選用可在智慧型手機上執行 的 Android 作業系統,以達到普及、方便、迅 速的效果。本系統可以提供遠距照護的服務。

開發初期我們利用 Google 的 Android SDK 與 Eclipse 搭配長高科技 DMA6410-XP 實驗板,該核心為 Samsung 6410 系列的 ARM 11 MCU平台上,選用 Android 作業系統進行 開 發 設 計 。 完 成 開 發 後 再 移 植 進 入 HTC Wildfire智慧型手機,藉由所撰寫的多媒體遠 距居家看護應用程式,實現本專題所有功能。

將各種醫療儀器使用無線技術與平台連 接,並把所量測的醫療記錄透過網路上傳至 Web Server 中記錄,提供長期觀察與診斷之 用。病人可以藉由網路和遠端伺服器(資料庫) 建立連線,進而取得用藥資訊,同時可利用平 台上的藍芽傳輸與各種現有生理訊號量測儀 器連線,包含血壓、血氧、體重、體脂肪比例 等儀器,並將各種生理參數傳至遠端資料庫,

醫生則可經由網頁介面檢視與管理病人資 料,包含病人帳號、密碼、用藥時間、藥品名 稱和用量以及上述生理參數。

本作品主要提出一無線多媒體居家看護

整合系統與雲端服務,使用 Android 嵌入式平嵌入式平嵌入式平嵌入式平

台透過網路存取遠端資料庫資料庫資料庫。平台方面再搭配資料庫 無線血壓計達到血壓量測的功能。遠端方面有 轉換程式與資料庫做存取,再以網頁方式網頁方式網頁方式呈現網頁方式 使用者介面,本系統示意圖如 Fig. 1 所示。

Fig. 1 系統示意圖

選用以 Cortex M3 為核心所製作的血壓計血壓計血壓計血壓計 來做為生理參數量測儀器的範例,透過藍芽傳藍芽傳藍芽傳藍芽傳

輸功能,可將量測到的生理參數傳輸給平台,

平台再以網路上傳給醫生端的伺服器伺服器伺服器。平台功伺服器 能包含血壓量測血壓量測血壓量測、用藥提醒血壓量測 用藥提醒用藥提醒、相簿瀏覽用藥提醒 相簿瀏覽相簿瀏覽相簿瀏覽及音樂音樂音樂音樂 播放

播放播放

播放;伺服器端則利用網頁以及 PHP 實現醫 生操作 MySQL 資料庫的介面,包含新增病新增病新增病新增病

患、病歷資料病歷資料病歷資料病歷資料、用藥名稱與數量用藥名稱與數量用藥名稱與數量、查看血壓記用藥名稱與數量 查看血壓記查看血壓記查看血壓記

錄等,本平台之系統方塊圖如 Fig. 2 所示。

Fig. 2 平台之系統方塊圖

(2)

2

一、、 前言前言前言前言

國人十大死因心血管疾病始終年年在排 行榜上,在現今繁忙的社會中,許多高血壓病 患往往由於工作忙碌而忘記服藥,此外也有許 多患者只在出現頭暈、頭痛等症狀的時候才臨 時服用降血壓藥,沒有症狀時就不在意或誤認 為自己血壓正常了,然而高血壓治療的一個重 要原則就是“堅持用藥,不能隨便停藥”。倘 若病人在服用降壓藥物治療一段時間後,即自 行停藥,停藥後血壓又升高,便再次使用藥物 降壓,這樣不僅達不到治療效果,反而會因為 血壓的大幅度波動,更容易造成心、腦、腎發 生嚴重的併發症,如腦出血等。事實上高血壓 是一種慢性病,只有長期堅持服藥,同時做好 定時量測血壓,將血壓穩定地控制在合適的範 圍內才能有效減少其危害[1]。為解決以上問 題,本專題即開發一可提供使用者定期量測與 管理血壓的健康照護平台。

二、、 研究方法研究方法研究方法研究方法

整體架構由三大部分組成,分別為平台 部分、無線血壓計、伺服器端,各項簡述如下:

2.1平台平台部分平台平台部分部分 部分

以 DMA 6410XP 實驗板與 HTC Wifire

手機來開發,使用 Android 2.1 作業系統,搭 配所撰寫的應用程式,有下述四種功能:

 血壓量測

定時提醒量測血壓,透過藍芽傳輸來接收 血壓計的資料,再利用網路與伺服器端連線,

使醫生可以掌握病患的血壓狀況。

 用藥提醒

由伺服器端擷取用藥資訊,當用藥時間一 到立即發出震動與警示音提醒病患服藥,並顯 示用藥名稱與其數量。

 相簿瀏覽

從 SD 卡讀取影像檔案,利用觸控可以顯 示不同張圖片。

 音樂播放

從 SD 卡載入 mp3,處理上一首、暫停、

下一首的功能。

2.2無線無線無線無線血壓計血壓計血壓計血壓計

採用文獻[2]所開發之以 STM32 平台搭配 類比電路來製作的無線血壓量測系統。

2.3伺服器伺服器伺服器伺服器端

平台端透過 Socket 與伺服器建立連線,

在對資料庫做存取,為了便於醫生的操作,其 使用者介面以網頁方式來呈現,它可以將資料 庫內的血壓以圖表方式的顯示來讓醫師可以 更迅速地掌握血壓狀況來做更有效率的診 斷,這部分整合了病患管理、血壓紀錄與用藥 提醒的功能[3][4]。

三、、 設計與使用設計與使用設計與使用設計與使用方法方法方法方法

3.1平台部分平台部分平台部分平台部分

主要流程圖如 Fig. 3.1 所示。

平台之各項 平台之各項平台之各項

平台之各項技術開發技術開發技術開發技術開發說明如下說明如下說明如下說明如下::::

 U-BOOT: U-BOOT 類 似 一 般 電 腦 上 BIOS 的功能,功能有初始化硬體,尤其是記 憶體控制器,以及提供啟動時的參數給作業系 統來啟動 Linux kernel ,將 u-boot.bin 燒錄進 DMA-6410XP,就可完成 U-BOOT 動作[5]。

 Linux kernel:使用 RS232 與實驗板連 線,可輸入指令至實驗板,先上網下載 Linux kernel核心來編譯成 zImage,再利用網路線連 接實驗板,使用 tftp 透過網路線下載檔案到實 驗板,再鍵入指令給實驗板燒錄到 NAND Flash,指令:

#tftp 0x50008000 zImage;

#nand erase 0x600000 0x300000;

(3)

3

#nand write 0x50008000 0x600000 0x300000

以上指令的意思是利用 tftp 將 zImage 檔 案傳到 RAM 的起始位址 0x50008000,再將消 除 NAND Flash 起 始 位 址 0x600000 長 度 0x300000, 再 寫 入 NAND Flash 起 始 位 址 0x600000長度 0x300000,就完成 Linux kernel 燒錄部分。

Fig. 3.1 Main Activity 流程圖

 File System: 接 著 依 照 上面 步驟 燒錄 ramdisk-uboot.img、system.img、userdata.img,

每個檔案燒錄的 NAND Flash 位址是不同的,

來完成 Android 的 File System。

 APK開發:使用 eclipse 撰寫 java code 來開發應用程式,在Android 系統架構分成三 層,最上層的應用層、介於中間的中介層以及 最底層的核心層,如 Fig 3.2 所示,我們開發 最上層的應用層,來設計應用軟體[6]。

Fig. 3.2 Android 架構

 UI 介面設計:首先先設計 UI 介面,畫 面稱為 Layout 有 FrameLayout、LinearLayout、

RelativeLayout AbsoluteLayout TableLayout,每種 layout 都有其特色,本專題 使 用 到 LinearLayout 、 RelativeLayout 、 AbsoluteLayout來設計 UI。再來 Android 程式 設計需要注意 AndroidManifest,有些權限的控 制與設定,最後是控制程式的運作的 java[7]。

 Server 連線:程式執行後首先進入登入 介面,使用者輸入帳號密碼按下確定鍵後開啟 Socket連線,透過網路將使用者資訊送出至遠 端伺服器,遠端收到後傳回是否登入成功,若 登入成功,則回傳允許進入程式,並且取得該 使用者的用藥資訊;登入失敗則不允許進入該 程式。

 Service背景服務:用藥資訊內含有用藥 時間,登入後一收到其時間後本程式開始在背 景執行,開始執行後,每秒鐘判斷現在時間是 否為用藥時間,等到用藥時間一到,手機立即 顯示視窗提醒用藥同時發出震動與警示音,倘 若使用者沒有回應視窗提醒,每隔五分鐘再警 示一次,直到使用者確認用藥完畢,在連線至 伺服器端取得下筆用藥時間[8]。

 Bluetooth:血壓量測的 Activity 啟動後,

首先偵測手機藍芽是否已開啟,未開啟則關閉 本 Activity,若有開啟則馬上與血壓計的藍芽 模組建立連線,無法找尋血壓裝置時顯示 Offline,此時可以透過血壓 UI 上的 Reconnect 按鈕與血壓計重新連線;倘若已連線則以 Toast顯示” Sphygmomanometer is connected.”

(4)

4 同時開啟一條執行緒等候血壓計的數值上 傳。一取得血壓計數值後馬上顯示於 UI 上,

同時開起一新執行緒將血壓資料透過 Socket 上傳至遠端伺服器[10]。

 執行緒:CPU 可以同時執行多個程序,

叫做多個執行緒,所以某些較吃重的工作就必 須開另一條新的執行緒來執行,倘若如果沒有 使用執行緒概念,就會使整個 Activity 當掉,

因為 CPU 都在處理吃重的工作。開啟新的執 行緒,裡面執行比較重的工作,執行完後會傳 送訊息給系統,並將執行緒關閉,注意執行緒 裡面不能有控制到 Activity 的控制項目,否則 執行就會發生錯誤,猜測原因應該是與主 Activity執行緒會產生競爭現象。

3.2無線無線血壓計無線無線血壓計血壓計 血壓計

血壓量測系統架構圖如 Fig. 3.3 所示,是 以 ARM 為開發平台,整合了壓力感測器、直 流馬達、藍芽模組與類比電路,類比電路包含 放大器與濾波器。血壓計量測結果顯示於平台 的 LCD 上,同時經由藍芽模組傳出。

Fig. 3.3 血壓計方塊圖

藍 芽 模 組 採 用 BluePacket H4000 Bluetooth Module , 所 承 受 的 電 壓 為 1.7V~3.6V,它的腳位非常的多,我們只用到 他的 USRT_TX,傳送給 Android 端 3 Bytes 的 值,利用 STM32 的 RS232 的傳輸(Baud rate 115200),就可以藉由模組來傳送藍芽訊號 了,血壓計運作流程圖如 Fig. 3.4。

Fig. 3.4血壓計運作流程圖

3.3遠端遠端遠端遠端伺服器伺服器伺服器伺服器

遠端伺服器之各項技術開發說明如下:

 Windows Socket:Windows Sockets 是以 U.C.Berkeley 大 學 (Berkerley Software Distribution) Uinx中流行的 Sockets 介面為範 例,定義的一套在 Microsoft Windows 環境下 的網路編程介面。它包含了人們所熟悉的 Berkeley Sockets 風格的函式庫,同時也針對 Windows系統增加了一組擴展的函式庫。從而 使 Windows 開發人員能夠充分利用 Windows 訊息驅動機制進行網路應用程式的開發。圖 Fig 3.5為 Windows Sockets 應用程式 A 與應用 程式 B 進行通訊的過程。從 user space 的角度 看,這兩個應用程式都是透過呼叫 Windows Sockets API來實作資料通訊。從 kernel space 的角度來看,Windows Sockets 利用下層的網 路通訊協定、作業系統和實體介質完成了的資 料傳輸[9]。

 Socket To MySQL Interface: 由 於 Android OS上包含的 Java Lib 並不包含連接手 機本身以外的 Database,只有連接手機本身的 Android SQLite 因此我們設計了一個轉換介 面,目標平台利用 Socket 將資料依規定封包 格式送至遠端伺服器,轉換程式將 Socket 的 封包解成對應的 SQL 語句,以一定格式送至 伺服器端,伺服器端經過處理後,再以 Socket 形式送回。

(5)

5 Fig. 3.6,在轉換介面上採用的是非阻塞 式模型,經由兩條主執行緒分別處理同一佇列 裡的客戶端請求,其中一條主執行緒專為接收 客戶端請求為目的,一旦收到客戶端請求,即 刻將客戶端請求解碼並放入佇列之中排隊,同 時產生該客戶端的副執行緒,使其對 Database 作存取,且各個副執行緒完成資料回傳後,將 會將其類別定義內的「完成回傳」旗標設為 True,而另一條主執行緒則將由佇列中檢查,

一但有副執行緒完成回傳,則將該副執行緒的 資源釋放,完成一個客戶端存取週期。

Fig. 3.5 應用程式與 Windows Sockets 的關係

Fig. 3.6 轉換介面方塊圖

 Web Interface:網路介面是經由 PHP 以 及 Html 語言所組成,利用 PHP 進行資料庫調 度,再由 Html 顯示,如 Fig. 3.7。網路介面主 要是要簡化對病患的管理,能夠方便、快速、

詳細的提供醫生所需的病患資料,其中包含病 患血壓、心跳的歷史紀錄,並根據紀錄畫出曲 線圖,加快醫生了解病情趨勢,且醫生能跟據

病患紀錄立即給予適當的用藥指示,一樣經由 網路介面就能完成用藥指示,提供到最小單位 為「分」的用藥時間定時,時間一到病患的手 機會自動響起,提醒該吃那些藥,要吃幾顆等 資訊,最後則是提供自動提醒測量的功能,客 戶端每日測量次數為早晚各一次,其量測結果 會回傳至伺服器。Fig. 3.8 和 Fig. 3.9 為 Socket To MySQL流程圖。

Fig. 3.7 網路介面方塊圖

Fig. 3.8 Socket To MySQL流程圖 (1)

(6)

6 Fig. 3.9 Socket To MySQL流程圖 (2)

四、、 系統展示系統展示系統展示系統展示

4.1 Android部分部分部分部分

以下為所開發的手機上的各種使用者介 面。

Fig. 4.1 登入介面

Fig. 4.2使用者介面 (英文)

Fig. 4.3使用者介面 (中文)

Fig. 4.4血壓量測

(7)

7 Fig. 4.5用藥警示(震動與警示音)

Fig. 4.6相簿瀏覽

4.2血壓計部分血壓計部分 血壓計部分血壓計部分

下圖為我們所採用的無線血壓計。

Fig. 4.7音樂播放

Fig. 4.8 HTC wildfire執行

(8)

8 4.3伺服器部分伺服器部分(含醫生使用者介面伺服器部分伺服器部分含醫生使用者介面含醫生使用者介面) 含醫生使用者介面

以下各圖為我們所開發的伺服器上與使 用者端的各種使用者介面。

Fig. 4.9 Android to MySQL interface

Fig. 4.10病患資料管理介面

Fig. 4.11血壓記錄 (1)

Fig. 4.12顯示最近十筆的血壓量測記錄,

分別有時間日期、血壓收縮壓值、血壓舒張壓 值以及心跳值。

Fig. 4.12血壓記錄 (2)

Fig. 4.13用 PHP 語法來做繪圖,以點顯示 每筆數值,下方有時間顯示,以線段連接各筆 數值,可用來觀察病人的血壓波動,虛線部分 可以隨醫生設定,可針對不同患者定義其正常 的血壓範圍。顏色區分收縮壓(紅色)、舒張壓 (綠色)與心跳(藍色)。

Fig. 4.13血壓記錄 (3)

Fig. 4.14血壓記錄 (4)

查看想要的紀錄、修改血壓值顯示範圍、

定義正常血壓值範圍與心跳顯示範圍,點選”

送出查詢”後得到所顯示的下圖 Fig. 4.15。

(9)

9 Fig. 4.15血壓記錄 (5)

Fig. 4.16用藥提醒 (1)

Fig. 4.17顯示最近十筆的病人用藥資訊,

讓醫生可以了解最近的用藥種類與劑量,提供 醫生開新處方的參考依據。

Fig. 4.17用藥提醒 (2)

Fig. 4.18選擇服藥時間、藥物名稱與使用 數量,網頁下方會顯示出資料庫的所有用藥資 訊,客戶端拿取藥物資訊時,語句轉換程式會 自行選擇最接近現在時間的下一筆用藥,再經 由 Socket 傳送出去。

Fig. 4.18用藥提醒 (3)

五、、 結論與未來展望結論與未來展望結論與未來展望結論與未來展望

藉由本次專題實務,我們學習到使用 Java

開發 Android 的應用程式,也了解 Linux 核心 是如何編譯到實驗版上,以及對網路 Socket 連線和資料庫的存取有初步的了解。此外,也 了解血壓計是如何量測。

在軟體方面,本專題的使用者介面在電腦 端或是平台端都已經開發完成,與底層的驅動 程式開發則是尚未完成的項目,由於對於 Linux的知識還不夠清楚明瞭,所以這部份的 研究還有待學習,倘若清楚明瞭,則可以在開 發板上直接與藍芽建立起連線。

總之,經過這樣的訓練後,除了讓我們不 怕接觸陌生的東西以外,也使我們更加有信心 能夠邁向更上一層樓,未來我們希望能更有效 率地完成指派的任務以及尋求理論與實務的 精進。

我們的專題可以造福許多高血壓患者,現 今智慧型手機都有網路的功能,只要搭配上我 們所開發的應用程式,就可以和遠端的醫生建 立連線,達到追蹤病患的目的。此外,血壓計 這部分乃是這個構想的範例,未來可以結合更 多生理量測的裝置,如 Fig. 5.1 所示,完整的 整合各項儀器所量測的生理數據,提供給醫生 和使用者,以實現遠距居家看護的目的。

(10)

10

Fig. 5.1 未來可結合的各種儀器

六、、 參考文獻參考文獻參考文獻參考文獻

[1] 呂俊賢,行動載具用病患生命徵象監測及 遠距醫療系統開發,長庚大學醫療機電工 程研究所,2010。

[2] Wun-Jin Li, Yuan-Long Luo, Yao-Shun Chang, and Yuan-Hsiang Lin, Aug.31-Sept.

4, “A Wireless Blood Pressure monitoring System for Personal Health Management,”

Proceedings of 32nd Annual Conference-IEEE/EMBS, Buenos Aires, Argentina. (EI), 2010.

[3] 陳儒誠,整合性心血管疾病風險分析演算 法於遠距醫療之應,臺灣大學醫學工程學 研究所,2010。

[4] 呂學承,健康照護用遠距醫療系統設計,

南台科技大學,2009。

[5] 行 動 裝 置 嵌 入 式 系 統 與 軟 體 -(S3C6410 Google Android 開發應用實務) ,長高科 技,2009。

[6] 佘志龍、陳昱勛、鄭名傑、陳小鳳、郭秩 均,Google Android SDK 開發範例大全 2 ,悅知文化,2010。

[7] 楊文誌,Google Android 2 程式設計與應 用,旗標,2009。

[8] 陳彥文、彭亦暄,Android-iPhone-Windows Mobile 手機程式設計,旗標,2010。

[9] 孫海民,精通 Windows Sockets 網路程式 設計,碁峰,2009。

[10] Androi developement:

http://developer.android.com/intl/zh-TW/in dex.html

數據

Fig. 3.1 Main Activity  流程圖
Fig. 3.5  應用程式與 Windows Sockets 的關係
Fig. 4.10 病患資料管理介面  Fig. 4.11 血壓記錄  (1)  Fig. 4.12 顯示最近十筆的血壓量測記錄, 分別有時間日期、血壓收縮壓值、血壓舒張壓 值以及心跳值。  Fig

參考文獻

相關文件

利用 Microsoft Access 資料庫管理軟體,在 PC Windows 作業系 統環境下,將給與的紙本或電子檔(如 excel

利用 Microsoft Access 資料庫管理軟體,在 PC Windows 作業系統環境 下,將給與的紙本或電子檔(如 excel

後記:本來是不想再寫這篇了,因為今年 (2016),本市學校公文系統要放棄筆硯,轉用 Web 版 本了,從此跟 ActiveX

有關 PHP 的敘述何者有誤?①可在 Apache、MS IIS 等 Web 伺服 器執行的 Script②只能在 Linux 或 Unix 作業系統上執行,無法於 Windows 或 Mac

ALTERA FPGA之編譯流程 (資料來源:

(A)因為用 Terminal Services 可以不用安裝 ERP 的程式在 Client 端上可以減少 MIS 維護系 統的時間(B)沒有防毒軟體 (C)建置防火牆的系統 (D) APP-Server 與 DB

最後特別提出說明,本研究用戶端作業系統為 Win 2000 Professional,伺服 器端作業系統為 Windows 2000 Server 並啟動 Active Directory

使用 MapleTA 做作業,是本課程的主要學習活動之一。今年 4—6 月課程進 行期間,NCUx 學習平臺可以和 Windows 伺服機上面的 MapleTA,以 LTI 介面 進行串接。可是,我們在 9