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