錢涵舟,馮辰宇,石壘壘,譚睿,馮月芹
(南京工程學(xué)院 信息與通信工程學(xué)院,江蘇南京,211167)
當(dāng)今社會(huì)正迅速發(fā)展,人們工作節(jié)奏較快,壓力也越來(lái)越大,導(dǎo)致到了一定年紀(jì)后心臟病發(fā)作比例越來(lái)越高;由于某些心臟疾病存在突發(fā)性的因素,醫(yī)院的繁瑣醫(yī)療程序與高成本的醫(yī)療檢查并不能滿足許多有潛在心臟病患者的需求,所以促使了便攜性家庭形式的醫(yī)療產(chǎn)品迅速發(fā)展,家庭式的心電監(jiān)護(hù)儀器就是其中一種;患者可以在家中進(jìn)行心電監(jiān)護(hù)。
本文的研究目的是設(shè)計(jì)家用便攜式無(wú)線數(shù)據(jù)傳輸心電監(jiān)護(hù)儀中的兩個(gè)基本部分:心電信號(hào)采集系統(tǒng)和NB-IOT無(wú)線數(shù)據(jù)傳輸系統(tǒng),為設(shè)計(jì)能夠應(yīng)用物聯(lián)網(wǎng)進(jìn)行遠(yuǎn)程監(jiān)護(hù)的家用心電監(jiān)護(hù)儀提供良好的硬件平臺(tái)。心電信號(hào)采集模塊采用STM32F407微處理器作為控制單元,采用ADS1292R心電采集芯片實(shí)現(xiàn)心電信號(hào)進(jìn)行放大,濾波,模數(shù)轉(zhuǎn)換。NBIOT無(wú)線數(shù)據(jù)傳輸模塊通過微處理器STM32F407與NBIOT模塊硬件接口部分,實(shí)現(xiàn)數(shù)據(jù)的無(wú)線發(fā)送;數(shù)據(jù)發(fā)送到云端服務(wù)器。用戶可以通過個(gè)人家用計(jì)算機(jī)訪問網(wǎng)頁(yè)或者用微信小程序來(lái)實(shí)現(xiàn)心電信號(hào)的重現(xiàn),以及心臟健康狀態(tài)。
數(shù)據(jù)采集終端設(shè)備以STM32F407為主控制器,采用中國(guó)電信物聯(lián)網(wǎng)模塊NB-IOT模組作為無(wú)線通信模塊,主控制器控制生理參數(shù)采集傳感器,對(duì)人體的心電信號(hào),體溫等進(jìn)行數(shù)據(jù)采集,將采集到的數(shù)據(jù)通過單片機(jī)串口傳輸?shù)綗o(wú)線收發(fā)NB-IOT模組,再由NB-IOT模組發(fā)送到基站,最后由基站傳送到云服務(wù)器,數(shù)據(jù)存儲(chǔ)在云服務(wù)器,用戶使用客戶端軟件或微信小程序來(lái)查看數(shù)據(jù)。系統(tǒng)整體架構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)圖
無(wú)線通信模塊采用BC20,它是一款高性能、低功耗、多頻段、支持GNSS定位功能的NB-IoT無(wú)線通信模塊。其尺寸僅為18.7mm×16.0mm×2.1mm,滿足便攜式設(shè)備的要求。BC20兼容移遠(yuǎn)通信GSM/GPRS/GNSS系列MC20模塊,BC20提供豐富的外部接口和協(xié)議棧,同時(shí)支持中國(guó)移動(dòng)OneNET、中國(guó)電信IoT以及阿里云IoT等物聯(lián)網(wǎng)云平臺(tái)。
模組擁有2個(gè)串口端,分別為主串口端和調(diào)試串口端,調(diào)試串口通過TTL轉(zhuǎn)USB電平與電腦端連接,主串口端與STM32串口端進(jìn)行連接。主串口端用以AT指令的傳送,支持的波特率為9600、115200。調(diào)試串口端僅用作軟件調(diào)試,調(diào)試波特率配置為9600bps。
心電、體溫是反映人體健康狀況的重要參數(shù),對(duì)心電、體溫進(jìn)行長(zhǎng)期準(zhǔn)確的測(cè)量與監(jiān)護(hù)能夠?yàn)轭A(yù)防和診斷疾病起到至關(guān)重要的作用,特別是獨(dú)居老人或有心臟病的人來(lái)說(shuō),預(yù)防更為重要。
2.2.1 心電信號(hào)監(jiān)測(cè)模塊
心電信號(hào)檢測(cè)模塊采用TI公司的ADS1292R芯片完成;ADS1292R的特征如下: ADS129X是低功耗、多通道、同時(shí)采樣、具有集成可編程放大器(PGA)的24位delta-sigma(ΔΣ)模擬-數(shù)字轉(zhuǎn)換器。每個(gè)PGA前面有個(gè)EMI濾波器,可以抑制電磁干擾,減少噪聲。這些設(shè)備包含各種不同的心電圖的特定功能,使它們非常適用于可擴(kuò)展的心電圖(ECG),腦電圖(EEG)和肌電圖(EMG)的應(yīng)用。通過關(guān)閉適用于心電圖的特定功能電路,這些設(shè)備也可用于高性能多通道數(shù)據(jù)采集系統(tǒng)中。ADS1292R提供兩種不同的器件時(shí)鐘方法:內(nèi)部和外部,內(nèi)部時(shí)鐘非常適合低功耗、電池供電系統(tǒng)。
有2路差分輸入,減少共模干擾,IN1P, IN1N是通道1組,可用于呼吸測(cè)量;IN2P,IN2N是通道2,可用于采集心電信號(hào),ADS1292R 內(nèi)部右腿驅(qū)動(dòng)電路選擇通信號(hào)加載在人體上,從而降低共模干擾。從TI的資料可以知道,引腳RESP_MODP,RESP_MODN是 輸出調(diào)制頻率的,其頻率可設(shè)置為32KHz或者64kHz,與31腳32腳相連的電阻R11和R12是限制電流輸出的,因?yàn)樽鳛獒t(yī)療產(chǎn)品在標(biāo)準(zhǔn)上是有漏電流的限制。C19~C24電容都是限制直流留到人體,防止對(duì)人體造成傷害的。ADS1292R的呼吸通道是通道1,要注意,測(cè)量呼吸時(shí),PGA1P,PGA1N引腳接的濾波電容為47nF,測(cè)量心電圖時(shí)4.7nF即可。
ADS129X有一個(gè)高度可編程多路復(fù)用器,可用于溫度、供電、輸入短路和RLD(右腿驅(qū)動(dòng))測(cè)量。此外,該多路復(fù)用器允許任何輸入電極被編程為患者參考驅(qū)動(dòng)器。PGA增益從7個(gè)設(shè)置中選擇:1、2、3、4、6、8或12。使用SPI兼容的接口與設(shè)備通信。硬件連接圖如圖2所示。由于篇幅限制,這里僅畫出三導(dǎo)聯(lián)與ADS1292R的電路連接圖。詳細(xì)原理圖可以參考ADS1292R芯片數(shù)據(jù)手冊(cè)。
圖2 ADS1292R模塊與三導(dǎo)聯(lián)的電路原理圖
2.2.2 人體體表溫度的測(cè)量
人體溫度監(jiān)測(cè)模塊采用TI公司的LMT70溫度傳感器與ADS1115 AD轉(zhuǎn)換實(shí)現(xiàn)。LMT70是一款超小型、高精度、低功耗CMOS模擬溫度傳感器,具有輸出使能引腳。LMT70在溫度感測(cè)方面應(yīng)用廣泛,例如物聯(lián)網(wǎng)(IOT)傳感器節(jié)點(diǎn)、醫(yī)用溫度計(jì)、高精度儀器儀表和電池供電設(shè)備。其特點(diǎn)是精度高,功耗低。
ADS1115是具有16位分辨率的高精度模數(shù)轉(zhuǎn)換器 (ADC),采用超小型的無(wú)引線 QFN-10 封裝或 MSOP-10 封裝, ADS1115 具有一個(gè)板上基準(zhǔn)和振蕩器。 數(shù)據(jù)通過一個(gè) I2C 兼容型串行接口進(jìn)行傳輸; ADS1115 具有一個(gè)板上可編程增益放大器 (PGA),該 PGA 可提供從電源電壓到低至 ±256mV 的輸入范圍,因而使得能夠以高分辨率來(lái)測(cè)量大信號(hào)和小信號(hào)。 ADS1115 可工作于連續(xù)轉(zhuǎn)換模式或單觸發(fā)模式,后者在一個(gè)轉(zhuǎn)換完成之后將自動(dòng)斷電,從而極大地降低了空閑狀態(tài)下的電流消耗。這些低功耗的特征,適合電池供電的便攜式設(shè)備。數(shù)字型AD轉(zhuǎn)換方便了數(shù)據(jù)的讀取,I2C總線接口節(jié)約了芯片的引腳,易于開發(fā)。硬件電路圖如圖3所示。
圖3 體溫測(cè)量原理圖
系統(tǒng)的軟件包括下位機(jī)數(shù)據(jù)采集程序與客戶端應(yīng)用程序,下位機(jī)負(fù)責(zé)傳感器的控制采集與數(shù)據(jù)傳輸,客戶端對(duì)下位機(jī)的數(shù)據(jù)進(jìn)行接收與處理、顯示。
BC20采 用MQTT 協(xié) 議 接 入 ONENET 平 臺(tái), 進(jìn) 入ONENET 平臺(tái)后,就可以進(jìn)入到平臺(tái)端了。第一次使用需要注冊(cè),現(xiàn)在一般都是實(shí)名制要求,用戶注冊(cè)的時(shí)候,按照模塊操作說(shuō)明,來(lái)進(jìn)行注冊(cè),當(dāng)注冊(cè)好,設(shè)備會(huì)顯示離線,這時(shí)只要單片機(jī)端控制模塊發(fā)送數(shù)據(jù)到ONENET平臺(tái)進(jìn)行激活就可以了。
設(shè)備接入步驟如圖4所示。
圖4 onenet接入流程
數(shù)據(jù)采集程序由初始化程序,傳感器控制程序,與NBIOT模組串口通信程序等組成。監(jiān)測(cè)模塊上電之后先進(jìn)行初始化,保證串口通信正常。先由控制器向NB-IOT模組發(fā)送AT指令,通過NB-IOT模組的應(yīng)答信息判斷模組是否正常連接NB-IOT網(wǎng)絡(luò)。在完成正常接入網(wǎng)絡(luò)之后,通過LCD顯示程序主要功能操作說(shuō)明,通過按鍵來(lái)選擇需要開啟的傳感器,主控芯片將傳感器采集到的數(shù)據(jù)通過串口發(fā)送給NBIOT模組,同時(shí)也將數(shù)據(jù)經(jīng)過處理在顯示屏上顯示。單元模塊溫度采集ADS1115操作流程:
(1)初始化配置寄存器
①寫入器件地址0x90(從機(jī)地址)
②寫入0x01(配置寄存器地址)
③寫入高字節(jié)(配置寄存器的高8位)
④寫入低字節(jié)(配置寄存器的低8位)
(2)配置轉(zhuǎn)換寄存器
①寫入0x90(從機(jī)地址)
②寫入0x00(轉(zhuǎn)換寄存器地址)
(3)讀取轉(zhuǎn)換結(jié)果
①寫入0x91(從機(jī)地址)
②讀轉(zhuǎn)換結(jié)果高字節(jié)
③讀轉(zhuǎn)換結(jié)果低字節(jié)
ADS1115與主機(jī)通信,采用的是IIC總線協(xié)議,它的初始化、讀數(shù)據(jù)C語(yǔ)言程序如下:
unsigned chr ADS1115_Init( )
{ IIC_Start();//啟動(dòng)
IIC_Send_Byte(0x90); //發(fā)送器件地址
IIC_Wait_Ack();//等待應(yīng)答
IIC_Send_Byte(0x01); //寫配置寄存器地址
IIC_Wait_Ack();//等待應(yīng)答
IIC_Send_Byte(0xB3);//寫配置寄存器數(shù)據(jù)高8位,模擬信號(hào)從通道0單端輸入,兩成4.096V
IIC_Wait_Ack(); //等待從機(jī)應(yīng)答
IIC_Send_Byte(0x83); //寫配置寄存器數(shù)據(jù)低8位,單次轉(zhuǎn)換,轉(zhuǎn)換速率128SPS
IIC_Wait_Ack();
IIC_Stop();
delay_us(20);//延時(shí)
return 1;}
根據(jù)ADS1115工作時(shí)序圖,寫出ADS1115讀數(shù)據(jù)的函數(shù)如下:
float ADS1115_ReadAD(void)
{float ret;
unsigned int data;
IIC_Start(); //主機(jī)發(fā)送啟動(dòng)信號(hào)
IIC_Send_Byte(0x90);//ads1115器件寫地址
IIC_Wait_Ack();
IIC_Send_Byte(0x00);//寫轉(zhuǎn)換結(jié)果寄存器地址
IIC_Wait_Ack();//從機(jī)應(yīng)答
IIC_Stop();
IIC_Start();
IIC_Send_Byte(0x91);//寫讀器件地址
IIC_Wait_Ack();
data=IIC_Read_Byte(1);
master_Ack();//主機(jī)發(fā)送應(yīng)答信號(hào)
data=(data<<8)+IIC_Read_Byte(1);
master_Ack();//主機(jī)發(fā)送應(yīng)答信號(hào)IIC_Stop();
//數(shù)值計(jì)算取決于PGA配置
if(data>0x8000)
ret=((float)(0xffff-data)/32768.0)*4.096;
else
ret=((float)data/32768.0)*4.096;
return ret;
}
單元模塊心率采集ADS1292R軟件配置寄存器初始化有關(guān)寄存器:
①寫配置寄存器1=0x01,連續(xù)轉(zhuǎn)換模式,采樣率為250。
②寫配置寄存器2=0xa0,內(nèi)部參考電壓為2.42V,禁止CLK引腳輸出信號(hào)。
③ 寫通道1設(shè)置寄存器=0x30,設(shè)置增益為3,正常節(jié)點(diǎn)輸入。
④寫通道2設(shè)置寄存器:0X40-正常操作,接電極,放大4倍
⑤右腿驅(qū)動(dòng)寄存器RLD_SENS:0X2C-RLD緩沖使能,RLD接入2N,2P,PGA16分頻
⑥ 寫呼吸控制寄存器1=0xF2,使能呼吸調(diào)制解調(diào)電路,呼吸解調(diào)相位為135°,時(shí)鐘為32kHz,內(nèi)部時(shí)鐘
⑦寫呼吸寄存器2:0X03-32K,RLD參考接(AVDD+AVSS)/2
⑧GPIO寄存器:0X0C-設(shè)置為輸入
⑨start引腳置高電平,AD采樣啟動(dòng)
ADS1292R提供較為靈活的操作命令:
(1)系統(tǒng)命令:
WAKEUP喚醒待機(jī)模式-0x02
STANDBY進(jìn)入待機(jī)模式-0x04
RESET 復(fù)位命令-0x06
(2)讀數(shù)據(jù)命令
RDATAC使能連續(xù)讀模式-0x10
SDATAC停止讀-0x11
(3)寄存器命令:
RREG讀寄存器命令-0x20
WREG寫寄存器命令-0x40
對(duì)ADS1292R的操作包括讀寄存器(器件的ID號(hào))、寫寄存器(初始化寄存器)、讀數(shù)據(jù)、寫命令。
根據(jù)SPI通信協(xié)議,調(diào)用SPI寫庫(kù)函數(shù),寫寄存器流程:
CS=0 ;//引腳片選信號(hào)低
SPI_I2S_SendData(SPI1,0x40|寄存器地址);
SPI_I2S_SendData(SPI1, 寄存器數(shù)量);
SPI_I2S_SendData(SPI1寄存器數(shù)據(jù));
寫命令操作流程:
START=0;//引腳start低電平
CS=0 ; //引腳片選信號(hào)低
SPI_I2S_SendData(SPI1, SPI操作命令);
START=1;//引腳start高電平
CS=1 ; //引腳片選信號(hào)高
ADS1292R輸出數(shù)據(jù)格式時(shí)序如圖5所示。
圖5 ADS1292R輸出數(shù)據(jù)時(shí)序圖
當(dāng)18腳片選信號(hào)CS低電平,啟動(dòng)ADS1292R轉(zhuǎn)換,22引腳DRDY低電平時(shí),數(shù)據(jù)轉(zhuǎn)換完成,讀21腳DOUT輸出信號(hào),共讀取9個(gè)字節(jié),其中前3個(gè)字節(jié)是有關(guān)狀態(tài)數(shù)據(jù),后面6個(gè)字節(jié)分別是通道一3個(gè)字節(jié)呼吸信號(hào),通道二3個(gè)字節(jié)心電信號(hào)。
ADS1292R與主機(jī)通信采用的同步串行總線SPI協(xié)議,需要注意的就是讀寫寄存器時(shí),SPI的時(shí)鐘頻率不能太快,不能超過芯片內(nèi)部時(shí)鐘的2倍。如果使用芯片內(nèi)部時(shí)鐘的話就是512K,SPI時(shí)鐘不能超過1M,如果使用外部的2.048M時(shí)鐘的話,那么SPI的速度不能超過4.096M。讀寫寄存器時(shí)SPI的速度太快會(huì)造成讀寫不正常。
使用QT軟件進(jìn)行終端人機(jī)交互界面的開發(fā),容易開發(fā)具有良好的圖形用戶界面。終端應(yīng)用軟件通過監(jiān)聽端口訪問遠(yuǎn)程服務(wù)器讀取心電、溫度信號(hào),利用C++編程語(yǔ)言實(shí)現(xiàn)心電信號(hào),溫度數(shù)據(jù)的動(dòng)態(tài)顯示、回放,存儲(chǔ)以及異常的分析報(bào)警。用戶界面包括用戶登錄,數(shù)據(jù)顯示,遠(yuǎn)程控制等操作軟件可以從數(shù)據(jù)庫(kù)中調(diào)取最近一周的數(shù)據(jù),通過軟件處理使數(shù)據(jù)可視化,觀察心率,心電圖,體溫在一段時(shí)間內(nèi)的變化趨勢(shì)。
設(shè)計(jì)系統(tǒng)基于NB-IOT傳輸,終端設(shè)備通過移動(dòng)OneNet平臺(tái)方便快捷連入互聯(lián)網(wǎng),實(shí)現(xiàn)遠(yuǎn)程監(jiān)測(cè)數(shù)據(jù)變化。測(cè)試結(jié)果表明,該系統(tǒng)操作簡(jiǎn)單,通信準(zhǔn)確可靠,便捷的使用極其適合中老年人,具有一定的應(yīng)用前景。