基于BB-Black的生理監(jiān)測(cè)智能硬件設(shè)計(jì)方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文以BeagleBone Black為核心,掛接ZigBee無線傳感節(jié)點(diǎn)和GSM/GPRS模塊;建立web服務(wù)器和SQLite數(shù)據(jù)庫,接收、解析和存儲(chǔ)ZigBee節(jié)點(diǎn)采集的生理數(shù)據(jù),控制GSM/GPRS進(jìn)行緊急呼救和發(fā)短信;讓硬件智能化,提供自動(dòng)生理監(jiān)測(cè)功能,為人們的生活提供便利。
目前,醫(yī)療設(shè)備的主要缺陷是價(jià)格昂貴、體積龐大和非智能;隨著技術(shù)的發(fā)展,近年來涌現(xiàn)了不少優(yōu)化的智能醫(yī)療設(shè)備,給人們的生活帶了極大便利。但仍存在功能單一,不可遠(yuǎn)程訪問等缺陷。
BB-Black開發(fā)板以其價(jià)格便宜、功能強(qiáng)大等優(yōu)點(diǎn)廣泛應(yīng)用于各種場(chǎng)景,怎樣利用BB-Black設(shè)計(jì)一個(gè)更智能、功能更齊全的實(shí)時(shí)遠(yuǎn)程醫(yī)療監(jiān)測(cè)系統(tǒng),將是一個(gè)有意義、有市場(chǎng)前景的研究課題。
1. 應(yīng)用系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)描述
1.1 硬件平臺(tái)相關(guān)介紹
設(shè)計(jì)共涉及BB-black、ZigBee和GSM/GPRS三個(gè)硬件模塊。其中BB-black開發(fā)板為核心模塊,是一款基于AM3359處理器的開發(fā)套件,其實(shí)物圖如圖1所示。處理器集成了高達(dá) 1GHz 的 ARM Cortex-A8 內(nèi)核,并提供了豐富的外設(shè)接口和兩個(gè)擴(kuò)展接口,可擴(kuò)展LCD、UART、eMMC、ADC、I2C、SPI和PWM等接口。其系統(tǒng)框圖如圖2所示。
AM3359 是基于 ARM Cortex-A8 內(nèi)核的微處理器,在圖像、圖形處理、外設(shè)和諸如etherCAT 和 PROFIBUS 的工業(yè)接口選項(xiàng)方面進(jìn)行了增強(qiáng),并支持Linux、 WinCE 和Android 等高級(jí)操作系統(tǒng)。該處理器包含了多個(gè)子系統(tǒng)。微處理器單元(MPU)子系統(tǒng)基于 ARM Cortex-A8 微處理器; POWERVR SGX 圖形加速子系統(tǒng)用于 3D 圖形加速以支持顯示和游戲效果;可編程實(shí)時(shí)單元子系統(tǒng)(PRUSS)使用戶可以創(chuàng)建各種超越本地外設(shè)的數(shù)字資源。此外,PRUSS 獨(dú)立于 ARM 內(nèi)核,這就允許設(shè)備有獨(dú)立的操作和時(shí)鐘,從而在復(fù)雜系統(tǒng)解決方案中有更大的靈活性。
圖1 BB-black實(shí)物圖背面(左),正面(右)
圖2 BB-Black系統(tǒng)框圖
1.2 系統(tǒng)功能模塊及信息處理過程
系統(tǒng)的功能模塊如下圖3所示,主要由數(shù)據(jù)采集模塊、GSM模塊、遠(yuǎn)程登錄模塊和BB-Black模塊四部分組成。其中生理數(shù)據(jù)模塊采用ZigBee無線傳感節(jié)點(diǎn)實(shí)時(shí)采集用戶生理數(shù)據(jù);GSM模塊采用四頻 GSM/GPRS ,實(shí)現(xiàn)緊急報(bào)警和定位;遠(yuǎn)程登錄模塊是指手機(jī)或其它上網(wǎng)設(shè)備,供用戶遠(yuǎn)程訪問和監(jiān)控;BB-Black模塊是本系統(tǒng)的核心模塊,該模塊又可分為數(shù)據(jù)處理、Boa服務(wù)器和SQLite數(shù)據(jù)庫三部分。數(shù)據(jù)處理模塊實(shí)現(xiàn)對(duì)數(shù)據(jù)的接收、解析、向SQLite數(shù)據(jù)庫插入數(shù)據(jù)和向GSM模塊下達(dá)緊急報(bào)警命令;SQLite數(shù)據(jù)庫主要用于存儲(chǔ)生理數(shù)據(jù);Boa服務(wù)器則實(shí)現(xiàn)用戶的遠(yuǎn)程訪問查詢SQLite數(shù)據(jù)中存儲(chǔ)的生理數(shù)據(jù)。
圖3 系統(tǒng)功能模塊框圖
正如上圖所示系統(tǒng)的信息處理過程如下:
1. 生理數(shù)據(jù)采集模塊實(shí)時(shí)采集生理數(shù)據(jù)。
用戶可根據(jù)需要隨身攜帶相應(yīng)的生理數(shù)據(jù)檢測(cè)模塊(如:血壓、血糖、脈搏等檢測(cè)模塊),在BB-black建立的無線傳感網(wǎng)絡(luò)覆蓋范圍內(nèi)移動(dòng)、實(shí)時(shí)生理數(shù)據(jù)采集,按IEEE 802.15.4的通訊標(biāo)準(zhǔn),通過無線網(wǎng)絡(luò)將生理數(shù)據(jù)包傳送出去;在BB-black開發(fā)板上連接的ZigBee終端節(jié)點(diǎn)將數(shù)據(jù)包接收。
2. BB-black模塊接收、分析和處理生理數(shù)據(jù)。
AM335x處理器定時(shí)的讀取終端節(jié)點(diǎn)接收的數(shù)據(jù)包,通過解析得到數(shù)據(jù)包中的生理數(shù)據(jù),并存儲(chǔ)到SQLite數(shù)據(jù)庫,同時(shí)根據(jù)健康指標(biāo)對(duì)數(shù)據(jù)進(jìn)行分析,若遇緊急情況,則向GSM/GPRS模塊發(fā)AT控制命令,進(jìn)行緊急呼救。
3. 監(jiān)護(hù)人或醫(yī)生可隨時(shí)隨地訪問服務(wù)器查看、管理被監(jiān)護(hù)人近期生理數(shù)據(jù)。
用戶通過上網(wǎng)設(shè)備打開瀏覽器登陸B(tài)oa服務(wù)器,提交查詢表單,即可訪問SQLite上存儲(chǔ)的被監(jiān)護(hù)人的生理數(shù)據(jù),實(shí)現(xiàn)遠(yuǎn)程了解被監(jiān)護(hù)人近期身體狀況,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
本系統(tǒng)應(yīng)用場(chǎng)景可如圖4所示。
圖4 系統(tǒng)應(yīng)用場(chǎng)景圖
2. 遠(yuǎn)程監(jiān)控功能實(shí)現(xiàn)
系統(tǒng)以BB-black為平臺(tái),提供用戶遠(yuǎn)程登錄訪問嵌入式Web服務(wù)器Boa,查看該服務(wù)器上的被監(jiān)護(hù)人近期生理數(shù)據(jù)功能;為了實(shí)現(xiàn)數(shù)據(jù)存放功能,作者針對(duì)嵌入式設(shè)備,采用開銷小、可移植性強(qiáng)、便使用且高效的嵌入式SQLite數(shù)據(jù)庫。而CGI(Common Gateway Interface)通用網(wǎng)關(guān)接口,則是Web服務(wù)器和SQLite數(shù)據(jù)庫之間的橋梁,作為客戶端與Web服務(wù)器交互的標(biāo)準(zhǔn)接口,可按照該標(biāo)準(zhǔn)編寫應(yīng)用程序?qū)崿F(xiàn)靜態(tài)HTML網(wǎng)頁無法實(shí)現(xiàn)的數(shù)據(jù)庫訪問和搜索功能,實(shí)現(xiàn)客戶端與服務(wù)器的交互操作。其工作原理如下圖5所示。
圖5 遠(yuǎn)程監(jiān)控模塊軟件構(gòu)成與工作原理
首先,由客戶端通過瀏覽器向服務(wù)器發(fā)起請(qǐng)求,嵌入式Web服務(wù)器端收到請(qǐng)求后觸發(fā)指定的腳本程序?qū)φ?qǐng)求進(jìn)行解析,并執(zhí)行相應(yīng)的CGI應(yīng)用程序。
其次,CGI應(yīng)用程序根據(jù)請(qǐng)求信息調(diào)用相應(yīng)的SQLite數(shù)據(jù)庫操作程序,并把數(shù)據(jù)庫操作程序的執(zhí)行結(jié)果以HTML文檔形式傳遞給Web服務(wù)器;嵌入式Web服務(wù)器分析、處理HTML文檔信息,并將最終數(shù)據(jù)內(nèi)容傳送給客戶端瀏覽器。
最后,由客戶端瀏覽器對(duì)數(shù)據(jù)內(nèi)容進(jìn)行解析,并以網(wǎng)頁形式顯示給客戶。
2.1 嵌入式Web服務(wù)器Boa
2.1.1 嵌入式服務(wù)器Boa的選用
ARM Linux開發(fā)環(huán)境下支持httpd、thttpd和Boa三種嵌入式Web服務(wù)器。作者選用的是可執(zhí)行文件小、運(yùn)行過程中需要的資源小的嵌入式Web服務(wù)器Boa。
Boa作為一種單任務(wù)的HTTP服務(wù)器,通過建立HTTP請(qǐng)求列表來處理多路HTTP連接請(qǐng)求,同時(shí)在處理請(qǐng)求過程只為CGI程序創(chuàng)建新進(jìn)程,在最大程度上節(jié)省了系統(tǒng)資源,對(duì)嵌入式系統(tǒng)來說至關(guān)重要。同時(shí)它還具有自動(dòng)解壓文件、生成目錄等功能。
2.1.2 Boa功能實(shí)現(xiàn)
設(shè)計(jì)中Boa服務(wù)器需實(shí)現(xiàn)接收客戶端請(qǐng)求、分析請(qǐng)求、響應(yīng)請(qǐng)求和向客戶端返回請(qǐng)求結(jié)果等任務(wù)。其工作流程如下圖6所示。
圖6 Boa服務(wù)器工作流程
Boa服務(wù)器初始化工作代碼實(shí)現(xiàn):
上述代碼首先創(chuàng)建一個(gè)無阻塞的流式套接字描述符socktfd,提供面向連接的可靠傳輸。然后利用bind()函數(shù)將指定端口與套接字描述符關(guān)聯(lián),最后利用listen()函數(shù)在指定端口監(jiān)聽,等待Request請(qǐng)求。
當(dāng)監(jiān)聽到連接請(qǐng)求,服務(wù)器調(diào)用get_request()函數(shù)獲取請(qǐng)求信息,利用accept()函數(shù)建立連接,接收請(qǐng)求、分析信息,進(jìn)行HTTP認(rèn)證確認(rèn),處理請(qǐng)求信息,并將結(jié)果發(fā)送、顯示到Web瀏覽器;當(dāng)有CGI請(qǐng)求時(shí),創(chuàng)建CGI處理進(jìn)程,并將處理結(jié)果發(fā)送、顯示到Web瀏覽器。
2.1.3 Boa在ARM上的移植
首先,針對(duì)BB-Black和實(shí)際應(yīng)用場(chǎng)景對(duì)Boa服務(wù)器源代碼作以下修改:(1)根據(jù)監(jiān)護(hù)人數(shù)量指定HTTP請(qǐng)求列表限制參數(shù);將服務(wù)器的輸入輸出緩存空間設(shè)為最大值,以加快生理數(shù)據(jù)傳輸速度;(2)通過編寫實(shí)現(xiàn)一些簡(jiǎn)單函數(shù),來精簡(jiǎn)Linux操作系統(tǒng)庫函數(shù),節(jié)約資源。
其次,利用arm-linux-gcc交叉編譯環(huán)境,配置生成大小為175.8KB的boa可執(zhí)行程序。通過bin.arm-linux-strip boa指令剝?nèi)ジ綆У木幾g信息,得到僅59.4KB的ARM平臺(tái)可執(zhí)行文件。
最后,通過修改Web服務(wù)器的配置文件boa.conf:監(jiān)聽端口為80,注釋掉綁定IP地址設(shè)置欄,KeepAliveMax值為50,KeepAliveTimeout值為10,服務(wù)器名字為www. RemoteMedicalMonitoringSystem.com;以及CGI路徑,訪問日志和錯(cuò)誤日志的存放路徑等運(yùn)行參數(shù);將該配置文件和可執(zhí)行文件boa放到BB-Block平臺(tái)的/home/www目錄下;執(zhí)行g(shù)enromfs-f romfs.img-d romdisk命令生成一個(gè)含有Boa服務(wù)器的根文件系統(tǒng),通過bootloader燒寫到存儲(chǔ)器。完成Boa到ARM平臺(tái)的移植。
2.2 CGI與SQLite數(shù)據(jù)庫移植
BB-Black開發(fā)板在運(yùn)行CGI和SQLite程序前,需要將相應(yīng)的庫移植到開發(fā)板。設(shè)計(jì)通過交叉編譯之后將CGI的libcgic.a和capture拷貝到BB-black開發(fā)板的/home/www/cgi-bin目錄下,完成移植工作(可通過網(wǎng)頁訪問該目錄,若在網(wǎng)頁上顯示cgic test的字樣,則表明cgi庫移植成功);將SQLite的sqlite3和libsqlite3.so.0.8.6分別下載到BB-black開發(fā)板的/usr/bin和/usr/lib目錄中并通過ln –s /usr/lib/libsqlite3.so.0.8.6 /usr/lib/libsqlite3.so.0命令,建立軟連接(因?yàn)榭蓤?zhí)行程序sqlite3在運(yùn)行的時(shí)候搜尋libsqlite3.so.0動(dòng)態(tài)庫),完成移植工作。
2.3 遠(yuǎn)程監(jiān)控功能實(shí)現(xiàn)
2.3.1 HTML設(shè)計(jì)
遠(yuǎn)程醫(yī)療監(jiān)控界面主要有監(jiān)護(hù)人登錄界面和被監(jiān)護(hù)人生理數(shù)據(jù)監(jiān)測(cè)界面。其中脈搏和心跳監(jiān)測(cè)HTML頁面首行代碼。
用action="pluse_heart_monitor.cgi"將表單指向pluse_heart_monitor.cgi處理程序,method="get"指定獲取環(huán)境變量的方式為get;程序的最后幾行用type="submit"或type="reset"指定點(diǎn)擊這兩個(gè)按鈕時(shí)提交表單;其他生理數(shù)據(jù)監(jiān)測(cè)頁面與此相似。
2.3.2 CGI和SQLite數(shù)據(jù)庫互動(dòng)設(shè)計(jì)
CGI與SQLite數(shù)據(jù)的互動(dòng)主要包括CGI程序在SQLite數(shù)據(jù)庫上建立生理數(shù)據(jù)表,插入生理數(shù)據(jù);CGI按照表單提交內(nèi)容對(duì)數(shù)據(jù)表進(jìn)行增刪改查詢操作;其主要的控制函數(shù)代碼如下:
其中g(shù)etcgidata()實(shí)現(xiàn)GET和POST兩種方式從網(wǎng)頁獲取字符串函數(shù);若為””“GET”方式,則通過getenv("QUERY_STRING")函數(shù)獲取字符串函數(shù);若為“POST”方式,首先用atoi(getenv("CONTENT_LENGTH"))函數(shù)獲取字符串長度,再利用(char)fgetc(stdin)函數(shù)依次獲取單個(gè)字符。
通過getcgidata()函數(shù)從網(wǎng)頁獲取的字符串中各數(shù)據(jù)項(xiàng)由‘&’符號(hào)隔開,getstringdata()函數(shù)則是去掉‘&’符號(hào),提取有效信息,為select_pluse_spo2()函數(shù)對(duì)SQLite數(shù)據(jù)庫執(zhí)行查詢操作提供參數(shù)。
select_pluse_spo2()函數(shù)以getstringdata()函數(shù)得到的有效信息為參數(shù),執(zhí)行打開數(shù)據(jù)庫、查詢數(shù)據(jù)、向網(wǎng)頁打印數(shù)據(jù)操作。部分功能實(shí)現(xiàn)代碼:
3 參數(shù)發(fā)送和接受功能的設(shè)計(jì)
3.1 數(shù)據(jù)采集模塊功能實(shí)現(xiàn)
生理數(shù)據(jù)采集模塊,由數(shù)據(jù)監(jiān)測(cè)模塊和無線傳感節(jié)點(diǎn)ZigBee組成。數(shù)據(jù)監(jiān)測(cè)模塊負(fù)責(zé)采集數(shù)據(jù),ZigBee節(jié)點(diǎn)負(fù)責(zé)接收、解析和傳輸數(shù)據(jù);解析過程根據(jù)監(jiān)測(cè)項(xiàng)目調(diào)用相應(yīng)的子程序(如:測(cè)血氧、脈搏、體溫等);傳輸數(shù)據(jù)時(shí)終端節(jié)點(diǎn)和非終端節(jié)點(diǎn)分別調(diào)用向串口發(fā)送子程序和發(fā)射子程序。具體的實(shí)現(xiàn)程序流程如下圖7所示。
圖7 ZigBee節(jié)點(diǎn)參數(shù)接收和發(fā)送流程圖
3.2 ARM板上生理數(shù)據(jù)接收功能實(shí)現(xiàn)
在ARM板上首先打開串口,然后配置發(fā)短信所需的串口參數(shù),并初始化接收緩沖區(qū),開始循環(huán)讀串口數(shù)據(jù)包;當(dāng)讀取到數(shù)據(jù),就對(duì)數(shù)據(jù)包進(jìn)行分析,獲取包中隱含的血氧飽和度和脈搏值;并進(jìn)行健康監(jiān)測(cè)(按照健康生理指標(biāo)監(jiān)測(cè)),如果獲取的生理數(shù)據(jù)不正常就會(huì)向監(jiān)護(hù)人手機(jī)發(fā)送短信(包含相應(yīng)的生理數(shù)據(jù)和健康狀況說明);最后將生理數(shù)據(jù)包轉(zhuǎn)化為16進(jìn)制數(shù)存入文檔。具體的處理流程如下圖8所示。
圖8 ARM板接收和處理生理數(shù)據(jù)的流程圖
4. 系統(tǒng)功能測(cè)試
測(cè)試前,需通過開發(fā)板上的USB和UART接口,將生理數(shù)據(jù)接收模塊和GSM/GPRS模塊連接;通過RJ45接口將開發(fā)板接入網(wǎng)絡(luò);同時(shí)用戶根據(jù)需要佩戴數(shù)據(jù)采集模塊。完成硬件連接后各模塊上電,待系統(tǒng)會(huì)自動(dòng)啟動(dòng)各項(xiàng)服務(wù)完成后,進(jìn)行測(cè)試。
以脈搏和血氧濃度為例,測(cè)試的登錄界面;查詢生理數(shù)據(jù)結(jié)果顯示,以及手機(jī)接收短信如下圖所示。
圖9 用戶登錄界面
圖10 用戶查詢生理數(shù)據(jù)結(jié)果顯示
圖11 手機(jī)接收生理監(jiān)測(cè)的生理數(shù)據(jù)短信
經(jīng)功能測(cè)試表明:
1. 在無線傳感網(wǎng)絡(luò)覆蓋范圍內(nèi),測(cè)試者可以攜帶監(jiān)測(cè)設(shè)備,隨意走動(dòng);系統(tǒng)自動(dòng)進(jìn)行生理監(jiān)測(cè),數(shù)據(jù)傳輸和存儲(chǔ)。
2. 系統(tǒng)能夠智能的分析生理數(shù)據(jù)并將結(jié)果以短信形式發(fā)送到測(cè)試者手機(jī)上,同時(shí)能夠智能緊急呼叫測(cè)試者。
3. 測(cè)試者可以使用電腦或手機(jī)等其它上網(wǎng)設(shè)備,通過瀏覽器訪問Boa服務(wù)器,查看存儲(chǔ)的生理數(shù)據(jù)信息。
通過性能測(cè)試表明:
測(cè)試者穿戴完畢上電后,設(shè)備智能工作。測(cè)試者可以實(shí)時(shí)收到生理數(shù)據(jù)短信提示,同時(shí)也可以通過網(wǎng)頁快速的訪問、修改生理數(shù)據(jù)。但受傳感器信號(hào)覆蓋范圍的影響(據(jù)測(cè)試,兩個(gè)傳感節(jié)點(diǎn)間可傳遞數(shù)據(jù)包的間隔距離上限為1.5米),測(cè)試者的自有度有限。同時(shí)嵌入式設(shè)備存儲(chǔ)空間有限,存儲(chǔ)在SQLite數(shù)據(jù)中的數(shù)據(jù)會(huì)每隔一個(gè)小時(shí)以數(shù)據(jù)包的形式通過GSM發(fā)送給測(cè)試者。
總體來說該系統(tǒng)與傳統(tǒng)的醫(yī)療監(jiān)測(cè)設(shè)備相比,具有易攜帶、低功耗、低成本等優(yōu)點(diǎn),在未來的家庭子女遠(yuǎn)程監(jiān)護(hù)老人和提高人們生活質(zhì)量方面,有很大的市場(chǎng)前景。但系統(tǒng)仍存在不足,今后的工作主要是戶外無線傳感網(wǎng)絡(luò)環(huán)境的搭建研究,實(shí)現(xiàn)更大范圍、更實(shí)用的遠(yuǎn)程醫(yī)療監(jiān)控。