邸元帥 羅吉 高大地 楊皓文 復(fù)旦大學(xué)附屬腫瘤醫(yī)院放射治療中心,復(fù)旦大學(xué)上海醫(yī)學(xué)院腫瘤學(xué)系 (上海 200032)
內(nèi)容提要: 設(shè)計(jì)了一款基于微信小程序的醫(yī)用直線加速器機(jī)房環(huán)境監(jiān)測(cè)系統(tǒng),該系統(tǒng)通過NodeMCU最小系統(tǒng)、溫濕度傳感器、氣壓傳感器以及空氣質(zhì)量傳感器等硬件終端獲取環(huán)境參數(shù),使用WiFi模塊將數(shù)據(jù)上傳至巴法云服務(wù)器,然后通過微信小程序查詢需要監(jiān)測(cè)的參數(shù),從而實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。通過測(cè)試,該系統(tǒng)能夠通過硬件終端按照通訊協(xié)議實(shí)現(xiàn)與巴法云服務(wù)器和微信小程序的數(shù)據(jù)交互,實(shí)現(xiàn)醫(yī)用直線加速器機(jī)房的環(huán)境監(jiān)測(cè)。
近年來,惡性腫瘤作為一種常見病正在嚴(yán)重危害人類身體健康與生命安全[1]。據(jù)研究顯示,放射治療在癌癥治療領(lǐng)域占有很大的比重,近70%的腫瘤患者在各個(gè)時(shí)期都必須接受放射治療[2,3]。目前,世界上實(shí)現(xiàn)放射治療的重要手段是醫(yī)用直線加速器,隨著醫(yī)療水平的提升,直線加速器正逐漸在我國(guó)各大醫(yī)院普及。作為一種結(jié)構(gòu)精密、原理復(fù)雜的大型醫(yī)療設(shè)備,醫(yī)用直線加速器中有很多高壓、大功率電氣元件,在日常工作中機(jī)房?jī)?nèi)過高的溫度和濕度會(huì)使這些元器件出現(xiàn)老化、損傷,從而降低設(shè)備的使用壽命[4]。另外,機(jī)房?jī)?nèi)的空氣質(zhì)量也會(huì)影響加速器的使用,如果機(jī)房?jī)?nèi)的灰塵太多可能會(huì)導(dǎo)致電路板發(fā)熱,持續(xù)一段時(shí)間會(huì)燒壞電路板,還可能會(huì)弄臟反光鏡頭,影響光學(xué)信號(hào)的傳輸,從而致使直線加速器出現(xiàn)各種故障,影響患者的治療進(jìn)程。同時(shí),物理師在做機(jī)器質(zhì)控時(shí)需要記錄機(jī)房氣壓的變化,因此每個(gè)加速器機(jī)房都需要保證溫度控制在18°C~25°C,濕度控制在40%~70%,并且空氣質(zhì)量較好[5-7]。基于上述情況,對(duì)加速器機(jī)房的環(huán)境監(jiān)測(cè)就尤為重要,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和微信小程序的普遍使用,采用硬件終端監(jiān)測(cè)環(huán)境參數(shù),傳感器采集數(shù)據(jù),通過WiFi模塊將數(shù)據(jù)傳輸?shù)皆品?wù)器,最后使用微信小程序查詢數(shù)據(jù)的監(jiān)測(cè)方法逐漸成為一種趨勢(shì)[8]。本設(shè)計(jì)采用NodeMCU主控芯片,通過WiFi模塊傳送數(shù)據(jù)到巴法云物聯(lián)網(wǎng)平臺(tái),完成數(shù)據(jù)的采集、儲(chǔ)存、上傳和微信小程序?qū)崟r(shí)查詢數(shù)據(jù)等功能,實(shí)現(xiàn)直線加速器機(jī)房的環(huán)境監(jiān)測(cè)。
本系統(tǒng)使用傳感器模塊監(jiān)測(cè)室內(nèi)環(huán)境,將采集到的數(shù)據(jù)傳輸?shù)絅odeMCU主控芯片中進(jìn)行處理后通過ESP8266WiFi模塊上傳到巴法云服務(wù)器再使用微信小程序查詢各項(xiàng)數(shù)據(jù),系統(tǒng)流程圖見圖1。本系統(tǒng)主要分為硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì),硬件部分設(shè)計(jì)包括硬件終端與接口電路設(shè)計(jì)、傳感器模塊設(shè)計(jì),軟件部分設(shè)計(jì)包括上位機(jī)設(shè)計(jì)與下位機(jī)設(shè)計(jì),以及硬件終端與云端的通訊。

圖1.系統(tǒng)流程圖
硬件終端包括主控芯片NodeMCU。該芯片是基于ESP8266的開發(fā)芯片,配備了所需要的電路來供電,可以便捷地上傳代碼,輕松訪問GPIO引腳以連接傳感器和執(zhí)行器,并且支持WiFi功能。ESP8266是一款超低功耗的UARTWIFI透?jìng)髂K,用于網(wǎng)絡(luò)連接和用戶讀取,可將用戶的物理設(shè)備與無線網(wǎng)絡(luò)連接,進(jìn)行互聯(lián)網(wǎng)或局域網(wǎng)通信,實(shí)現(xiàn)聯(lián)網(wǎng)功能,其核心電路如圖2所示[9]。ESP8266有板載PCB天線、IPEX接口和郵票孔接口三種封裝方式,同時(shí)也支持STA/AP/STA+AP三種工作模式,本設(shè)計(jì)把ESP8266設(shè)置為STA模式,通過路由器連接網(wǎng)絡(luò)[10]。

圖2.ESP8266核心電路
本設(shè)計(jì)主控芯片正常工作需要3.3V的電壓供電,而其他模塊需要5V的電壓供電,所以需要設(shè)計(jì)一個(gè)電源電路。采用輸出電壓為3.3V的NCP1117ST33T3G穩(wěn)壓芯片進(jìn)行穩(wěn)壓,該芯片是一款低壓差正壓線性穩(wěn)壓器,最大的輸入電壓為20V,靜態(tài)電流為10mA,正常工作溫度范圍在0°C~125°C,輸出的精準(zhǔn)度在±1%。
設(shè)計(jì)采用的主控芯片自帶USB轉(zhuǎn)串口模塊,在使用時(shí)不再需要外接USB轉(zhuǎn)TTL的轉(zhuǎn)接器。采用CP2102芯片實(shí)現(xiàn)USB轉(zhuǎn)串口的功能,其原理如圖3所示,CP2102高度集成,包括有USB2.0全速功能控制器、USB收發(fā)器、振蕩器、和帶有全部的調(diào)制解調(diào)器控制信號(hào)的異步串行數(shù)據(jù)總線(UART),全部的功能集成在一個(gè)MIP-28封裝的IC中。

圖3.USB轉(zhuǎn)串口電路
本設(shè)計(jì)監(jiān)測(cè)機(jī)房環(huán)境的溫濕度選用的傳感器為DHT11數(shù)字溫濕度傳感器,該傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,內(nèi)部由一個(gè)8位的單片機(jī)控制一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,因此DHT11既可以檢測(cè)溫度又可以檢測(cè)濕度,其溫度測(cè)量范圍為0°C~50°C,誤差在±2°C;濕度的測(cè)量范圍在20%~90%RH,誤差在±5%RH。
為了保證機(jī)房?jī)?nèi)的安全以及直線加速器的正常使用,本設(shè)計(jì)選用MQ-2空氣質(zhì)量傳感器監(jiān)測(cè)機(jī)房空氣質(zhì)量,該傳感器屬于二氧化錫半導(dǎo)體氣敏材料,表面離子式N型半導(dǎo)體,其工作時(shí)的重復(fù)性較好,且初始工作時(shí)較為穩(wěn)定,響應(yīng)時(shí)間短,能夠長(zhǎng)時(shí)間工作,其檢測(cè)的氣體的范圍是100~10000ppm,煙霧濃度越大,導(dǎo)電率越大,輸出電阻越低,則輸出的模擬信號(hào)越大,其電路原理如圖4所示。

圖4.MQ-2傳感器原理圖
本設(shè)計(jì)選用BMP180氣壓傳感器,該傳感器是新型數(shù)字氣壓傳感器,具有非常高的性能,具有I2C總線接口,方便與單片機(jī)連接測(cè)得氣壓的數(shù)據(jù)。其工作電壓為1.8~3.6V,內(nèi)部包含電阻式壓力傳感器、AD轉(zhuǎn)換器和控制單元,控制單元包括EEPROM和I2C接口,讀取BMP180傳感器數(shù)值時(shí)會(huì)直接傳送沒有經(jīng)過補(bǔ)償?shù)臍鈮褐担贓EPROM中則儲(chǔ)存了176位單獨(dú)的校準(zhǔn)數(shù)據(jù),這些數(shù)據(jù)將對(duì)讀取的溫度壓力值進(jìn)行補(bǔ)償。
本設(shè)計(jì)的下位機(jī)開發(fā)是基于ESP8266-NodeMCU通過Arduino IDE進(jìn)行開發(fā),編程語(yǔ)言為C/C++。本次下位機(jī)開發(fā)包括WiFi和服務(wù)器的初始化并連接開發(fā)板與云服務(wù)器、監(jiān)測(cè)三種傳感器的讀數(shù)以及上傳數(shù)據(jù)到云服務(wù)器。首先定義服務(wù)器地址與端口:
#define TCP_SERVER_ADDR "bemfa.com" //定義巴法云服務(wù)器地址
#define TCP_SERVER_PORT "8344" // TCP創(chuàng)客云服務(wù)器端口8344
然后需要在云服務(wù)器上創(chuàng)建一個(gè)用于接受數(shù)據(jù)的主題,初始化用于本次開發(fā)板連接的WiFi并檢查WiFi與服務(wù)器是否連接成功,WiFi初始化成功后開始建立與服務(wù)器的連接,其核心代碼如下:

建立連接后便可以發(fā)送數(shù)據(jù)到服務(wù)器,首先獲取各個(gè)傳感器的數(shù)值信息,采集到的數(shù)據(jù)用#包裹,以便上位機(jī)分割出數(shù)據(jù),數(shù)據(jù)的標(biāo)準(zhǔn)格式為:&msg=#data1#data2# ,需要幾個(gè)數(shù)據(jù)便添加幾個(gè)data,上位機(jī)會(huì)根據(jù)#號(hào)分割字符串進(jìn)行取值。上傳數(shù)據(jù)的核心代碼如下:

本設(shè)計(jì)的上位機(jī)開發(fā)是基于微信開發(fā)者工具進(jìn)行的微信小程序開發(fā),使用的主要開發(fā)語(yǔ)言是JavaScript。本次上位機(jī)的開發(fā)主要由視圖層設(shè)計(jì)和邏輯層設(shè)計(jì)組成。其中視圖層設(shè)計(jì)又分為全局視圖設(shè)計(jì)和頁(yè)面視圖設(shè)計(jì),全局視圖設(shè)計(jì)由小程序根目錄下的app.json文件進(jìn)行配置,其中包括小程序頁(yè)面的數(shù)量、頁(yè)面文件的路徑、窗口表現(xiàn)、設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間、設(shè)置多tab等。本次設(shè)計(jì)需要監(jiān)測(cè)不同加速器機(jī)房的環(huán)境,每個(gè)機(jī)房都需要一個(gè)小程序頁(yè)面,因此全局視圖的核心代碼如下:

其中,page目錄表示小程序的頁(yè)面數(shù)量和路徑,windows目錄表示小程序的標(biāo)題、字體和背景,tabBar目錄表示小程序頂部或底部切換頁(yè)面的tab欄的數(shù)量、標(biāo)題及各個(gè)屬性。頁(yè)面視圖設(shè)計(jì)是由小程序根目錄下page文件中的.wxml文件和.wxss文件進(jìn)行配置,其中.wxml文件負(fù)責(zé)描述頁(yè)面內(nèi)容以及變量的數(shù)據(jù)綁定,本次設(shè)計(jì)的頁(yè)面內(nèi)容包括:該頁(yè)面標(biāo)題、設(shè)備狀態(tài)、數(shù)據(jù)上傳時(shí)間、監(jiān)測(cè)數(shù)據(jù)的標(biāo)識(shí)及數(shù)值,.wxss文件負(fù)責(zé)描述頁(yè)面內(nèi)容的大小、位置等樣式。
邏輯層設(shè)計(jì)由小程序根目錄下page文件中的.js文件進(jìn)行配置,該文件定義了Page對(duì)象,在該對(duì)象中分別定義了.wxml綁定的變量、onload()函數(shù)、getOnline()函數(shù)、getdht11()函數(shù)。本次設(shè)計(jì)綁定的變量有溫度、濕度、液位狀態(tài)和空氣質(zhì)量;getOnline()函數(shù)是請(qǐng)求設(shè)備狀態(tài)的函數(shù),用來檢查設(shè)備是否在線,使用wx.request()函數(shù)請(qǐng)求接入云服務(wù)器API接口,接入成功設(shè)備狀態(tài)顯示“在線”,接入失敗則設(shè)備狀態(tài)顯示“離線”;getdht11()函數(shù)是獲取云服務(wù)器上儲(chǔ)存的各傳感器采集的數(shù)據(jù),首先使用wx.request()函數(shù)接入云服務(wù)器,然后對(duì)用#包裹的數(shù)據(jù)進(jìn)行字符串分割,將分割后的數(shù)據(jù)放在一組數(shù)組里,再賦值給各個(gè)變量,從而實(shí)現(xiàn)環(huán)境變量的監(jiān)測(cè)。
通過對(duì)硬件終端電路的調(diào)試、數(shù)據(jù)的采集與上傳進(jìn)行測(cè)試,可以在巴法云服務(wù)器端和微信小程序接收并顯示數(shù)據(jù)。在調(diào)試過程中,首先將硬件電路各部件連接好,通電后將控制代碼加載到硬件芯片中,然后進(jìn)行網(wǎng)絡(luò)配置,檢測(cè)到WiFi正確連接后,便可以觀察到巴法云物聯(lián)網(wǎng)平臺(tái)和微信小程序同步接收到硬件電路上各個(gè)傳感器采集的數(shù)據(jù)。圖5所示為微信小程序接收數(shù)據(jù)界面。

圖5.微信小程序界面
放療直線加速器機(jī)房的環(huán)境因素對(duì)加速器的正常工作與物理師質(zhì)控時(shí)測(cè)量的加速器參數(shù)都會(huì)產(chǎn)生一定影響,因此對(duì)加速器機(jī)房環(huán)境的監(jiān)測(cè)就尤為重要,目前大部分醫(yī)院都是使用溫度計(jì)、濕度計(jì)以及氣壓計(jì)來監(jiān)測(cè)加速器機(jī)房的環(huán)境,這種方式可以簡(jiǎn)單地實(shí)現(xiàn)監(jiān)測(cè)環(huán)境的目的,但是無法及時(shí)獲得信息。本研究設(shè)計(jì)了一款放療直線加速器機(jī)房環(huán)境的監(jiān)測(cè)系統(tǒng),本系統(tǒng)基于ESP8266-NodeMCU主控芯片,使用傳感器采集數(shù)據(jù),通過ESP8266WiFi模塊上傳到巴法云服務(wù)器,最后使用微信小程序完成數(shù)據(jù)的查詢與實(shí)時(shí)顯示。本系統(tǒng)能夠?qū)崿F(xiàn)加速器機(jī)房?jī)?nèi)溫度、濕度、氣壓與空氣質(zhì)量的實(shí)時(shí)監(jiān)測(cè),并通過微信小程序同步顯示,使技術(shù)員或物理師能夠及時(shí)了解機(jī)房?jī)?nèi)環(huán)境的變化,如果發(fā)生異常情況可以在第一時(shí)間采取措施,避免直線加速器的損壞,保證放療患者的正常治療。