CC3000的膠囊內(nèi)窺鏡WiFi轉(zhuǎn)發(fā)器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
近年,由于微電子技術(shù)和便攜式電子設(shè)備的發(fā)展,使用傳感器獲取身體的生理數(shù)據(jù)成為熱門(mén)的研究領(lǐng)域。越來(lái)越多的嵌入式處理器和無(wú)線技術(shù)應(yīng)用于生理參數(shù)的獲取。使用傳感器可以獲取如血壓、血氧飽和度、血糖、脈搏、體溫、呼吸、心率、心電、腦電等生理信息。這方面的研究已經(jīng)許多成果,如使用安卓手機(jī)進(jìn)行心電監(jiān)測(cè)、ZigBee的多生理參數(shù)監(jiān)測(cè)等,這些信息可以通過(guò)無(wú)線方式發(fā)送給便攜式數(shù)據(jù)記錄儀或遠(yuǎn)程服務(wù)器。如今,智能手機(jī)有足夠的處理和存儲(chǔ)能力來(lái)完成這些身體參數(shù)的處理,可以使用藍(lán)牙或WiFi接收這些數(shù)據(jù),但考慮到藍(lán)牙或WiFi芯片的體積和功耗,膠囊內(nèi)窺鏡的圖像不宜采用藍(lán)牙或WiFi進(jìn)行傳輸。因此,如不借助其他設(shè)備,膠囊內(nèi)窺鏡使用專(zhuān)用的無(wú)線傳輸芯片采集到的圖像無(wú)法直接傳輸?shù)街悄苁謾C(jī)或遠(yuǎn)程服務(wù)器。
為了解決這個(gè)問(wèn)題,本文設(shè)計(jì)了一種用于膠囊內(nèi)窺鏡的轉(zhuǎn)發(fā)器,主要功能是轉(zhuǎn)發(fā)膠囊內(nèi)窺鏡的圖像數(shù)據(jù)。提出的適配器通過(guò)使用與膠囊內(nèi)窺鏡配套的無(wú)線收發(fā)模塊來(lái)接收?qǐng)D像數(shù)據(jù),然后由微處理器控制WiFi模塊轉(zhuǎn)發(fā)圖像數(shù)據(jù)到手持設(shè)備。此外,適配器也可直接通過(guò)WiFi將圖像發(fā)送到遠(yuǎn)程服務(wù)器存儲(chǔ),從而實(shí)現(xiàn)膠囊內(nèi)窺鏡的遠(yuǎn)程診斷。
1 系統(tǒng)總體設(shè)計(jì)
作為膠囊內(nèi)窺鏡和數(shù)據(jù)采集終端的中間設(shè)備,轉(zhuǎn)發(fā)器主要用于轉(zhuǎn)發(fā)膠囊內(nèi)窺鏡的圖像數(shù)據(jù)。本文使用Android手機(jī)作為數(shù)據(jù)采集終端,膠囊內(nèi)窺鏡使用的是nRF24L01+傳輸芯片。圖1是使用轉(zhuǎn)發(fā)器的膠囊內(nèi)窺鏡遠(yuǎn)程診斷系統(tǒng)。
2 轉(zhuǎn)發(fā)器設(shè)計(jì)
2.1 硬件設(shè)計(jì)
轉(zhuǎn)發(fā)器的硬件設(shè)計(jì)如圖2所示,包括微控制器STM32F103RCT6、無(wú)線收發(fā)芯片nRF24L01+、WiFi芯片CC3000,各模塊使用SPI總線進(jìn)行通信。轉(zhuǎn)發(fā)器保留了其他傳輸方式的外部接口,因此也能用于其他傳輸方式的生理傳感器。
(1)微控制器
微控制器STM32F103RCT6,主要負(fù)責(zé)數(shù)據(jù)的緩存、處理轉(zhuǎn)換,并根據(jù)預(yù)定義的方式從相關(guān)接口傳送數(shù)據(jù)。它控制RF接收器和WiFi模塊的數(shù)據(jù)傳輸相關(guān)的所有活動(dòng),以及總體管理產(chǎn)生的控制信號(hào)。STM32系列專(zhuān)為要求高性能、低成本、低功耗的嵌入式應(yīng)用而設(shè)計(jì)。時(shí)鐘頻率為72 MHz時(shí),STM32功耗為36 mA,相當(dāng)于0.5 mA/MHz。
(2)RF接收器
選擇nRF24L01+作為轉(zhuǎn)發(fā)器的接收芯片,是由于其具有低功耗、小尺寸和高帶寬等特點(diǎn)。它與單片機(jī)SPI口的通信速度可達(dá)8 MHz;最大支持2 Mbps的數(shù)據(jù)傳輸速率,且正常的功耗為14 mA;支持自動(dòng)應(yīng)答及自動(dòng)重發(fā),內(nèi)置地址及CRC數(shù)據(jù)校驗(yàn)等功能。雖然自動(dòng)應(yīng)答降低了通信速度,但它是生物醫(yī)學(xué)應(yīng)用中所必需的。
(3)WiFi模塊
轉(zhuǎn)發(fā)器的功能取決于設(shè)備本身和接收工作站之間的通信。WiFi的應(yīng)用越來(lái)越廣泛,在許多地方都作為一種主要的通信媒介。本文使用TI公司的WiFi嵌入式芯片CC3000,為電子設(shè)備提供Internet連接能力。這款芯片包含完整的TCP/IP協(xié)議棧和WiFi驅(qū)動(dòng),支持標(biāo)準(zhǔn)的Socket編程,具有IEEE802.11b/g無(wú)線網(wǎng)卡功能。在IEEE802.11g工作模式下,傳輸功耗為190 mA,接收功耗為92 mA。CC3000的外圍電路設(shè)計(jì)如圖3所示,只保留了SPI通信接口和UART調(diào)試接口。
(4)電源供應(yīng)
采用輸出3.7 V的鋰電池作為電源的供應(yīng),電池可以通過(guò)USB線進(jìn)行充電。
2.2 控制程序設(shè)計(jì)
軟件控制程序是分層模塊化的,以便添加新的硬件時(shí)不必對(duì)軟件進(jìn)行大規(guī)模改動(dòng)。底層驅(qū)動(dòng)程序是由ST公司提供的一個(gè)完整的STM32設(shè)備固件庫(kù)。該庫(kù)提供了STM32所有外設(shè)的底層驅(qū)動(dòng)函數(shù),開(kāi)發(fā)人員不必自己編寫(xiě)驅(qū)動(dòng)函數(shù),只需在這些底層函數(shù)的基礎(chǔ)上編寫(xiě)應(yīng)用程序。CC3 000使用官方提供的Hostdriver驅(qū)動(dòng)庫(kù),上層應(yīng)用層包括數(shù)據(jù)處理、系統(tǒng)配置等模塊。STM32通過(guò)SPI初始化CC3000和RF射頻模塊,配置nRF24 L01+為接收模式,自動(dòng)應(yīng)答,每次傳輸32字節(jié)數(shù)據(jù)。為了確保數(shù)據(jù)接收與發(fā)送同步操作,CC3000的數(shù)據(jù)包也設(shè)置為32字節(jié)。因?yàn)獒槍?duì)的是遠(yuǎn)程診斷,而遠(yuǎn)程服務(wù)器的IP地址一般是固定的,因此配置CC3000為服務(wù)端的工作模式。轉(zhuǎn)發(fā)器工作時(shí),從RF的SPI口讀取到的數(shù)據(jù)先存到存儲(chǔ)緩沖器中,然后由STM32將數(shù)據(jù)交由CC3000轉(zhuǎn)發(fā)出去。
轉(zhuǎn)發(fā)器的工作流程如圖4所示。
當(dāng)連接指定AP超時(shí),CC3000便進(jìn)入Smart Config模式,Smart Config是CC3000獨(dú)有的AP配置信息模式,可以使用任何帶WiFi的設(shè)備配置CC3000連接到AP。很多嵌入式的設(shè)備不帶有鍵盤(pán)和液晶,而WiFi配置又極其復(fù)雜,為了便于客戶(hù)重新配置WiFi的連接,CC3000模塊設(shè)計(jì)了Sma rt Config模式。
3 Android手機(jī)接收程序
本文使用Android手機(jī)完成圖像數(shù)據(jù)的接收、處理、顯示、保存。轉(zhuǎn)發(fā)器通過(guò)WiFi將圖片發(fā)送到手機(jī),圖像數(shù)據(jù)是通過(guò)轉(zhuǎn)發(fā)器的TCP/IP協(xié)議轉(zhuǎn)發(fā)的。Android是一個(gè)開(kāi)源移動(dòng)操作系統(tǒng),它有一個(gè)強(qiáng)大的基于Java框架的軟件開(kāi)發(fā)包。Bitmap類(lèi)是Android系統(tǒng)中有關(guān)圖像處理的最重要類(lèi)之一,可以用于獲取圖像文件信息,進(jìn)行圖像相關(guān)處理。
開(kāi)發(fā)的圖像采集應(yīng)用程序主要由3部分組成:
①DeviceListActivity:主要完成設(shè)備的連接,連接后的設(shè)備通過(guò)Socket通信。
②RecieveService:Android后臺(tái)服務(wù)進(jìn)程,它長(zhǎng)時(shí)間運(yùn)行在手機(jī)應(yīng)用程序進(jìn)程的主線程內(nèi),不會(huì)干擾其他組件或用戶(hù)界面。這里包括Socket的監(jiān)聽(tīng)、數(shù)據(jù)的接收、圖片的顯示與寫(xiě)入SD卡的后臺(tái)服務(wù)。
③WiFiWCERecieve:與用戶(hù)交互的Activity組件,是應(yīng)用程序的可見(jiàn)部分。
CC3000與手機(jī)利用WiFi連接立TCP連接,通過(guò)Socket傳輸圖片。配置Android手機(jī)為服務(wù)端,使用ServerSocket來(lái)建立帶有端口的Socket服務(wù)器,然后一直監(jiān)聽(tīng)請(qǐng)求連接。其中Android終端和CC3000處于同一局域網(wǎng)。圖像啟動(dòng)采集的時(shí)候,客戶(hù)端使用Socket的構(gòu)造器連接服務(wù)器,指定服務(wù)器IP和端口號(hào)。服務(wù)器端的accept()方法得到響應(yīng)后,服務(wù)器端和客戶(hù)端就形成了一對(duì)互相連接的Socket。Socket通信時(shí)都是通過(guò)輸入/輸出流進(jìn)行。從手機(jī)Socket口獲取到的圖像數(shù)據(jù)流,通過(guò)Android里面的bitmap類(lèi)生成JPEG圖像并顯示,添加SD權(quán)限,把圖像寫(xiě)進(jìn)SD卡中。
4 實(shí)驗(yàn)與分析
膠囊內(nèi)窺鏡使用nRF24L01+發(fā)送圖像數(shù)據(jù)。轉(zhuǎn)發(fā)器處理接收到的數(shù)據(jù),通過(guò)無(wú)線網(wǎng)絡(luò)轉(zhuǎn)發(fā)給Android處理、顯示、保存。圖5為Android機(jī)接收到的圖片。
不同組件的平均功耗如圖6所示??梢钥闯?,最耗電的為CC3000。總的耗電量為200mA,在2000 mAh鋰電源的工作環(huán)境下,能工作10小時(shí)。由于膠囊內(nèi)窺鏡一般工作8小時(shí)左右,因此足夠膠囊內(nèi)窺鏡的應(yīng)用。
實(shí)驗(yàn)結(jié)果表明,該轉(zhuǎn)發(fā)器能夠穩(wěn)定轉(zhuǎn)發(fā)膠囊內(nèi)窺鏡圖片,可作為膠囊內(nèi)窺鏡遠(yuǎn)程診斷的轉(zhuǎn)發(fā)裝置。轉(zhuǎn)發(fā)器有以下優(yōu)勢(shì):
①體積小、功耗低。
②安裝相關(guān)軟件,任何帶有WiFi的安卓手機(jī)都可以用作膠囊內(nèi)窺鏡數(shù)據(jù)采集和處理設(shè)備。
③可以使用手機(jī)實(shí)時(shí)監(jiān)控膠囊內(nèi)窺鏡圖像。
④可以直接通過(guò)WiFi將圖像傳輸?shù)竭h(yuǎn)程服務(wù)器。
⑤預(yù)留其他外部接口,可以支持其他的傳感器。
結(jié)語(yǔ)
本文設(shè)計(jì)了基于STM32F103的WiFi轉(zhuǎn)發(fā)器,并用于膠囊內(nèi)窺鏡的圖像轉(zhuǎn)發(fā);系統(tǒng)地分析了膠囊內(nèi)窺鏡圖像數(shù)據(jù)的轉(zhuǎn)發(fā)、數(shù)據(jù)傳輸?shù)脑砗瓦^(guò)程,在軟件設(shè)計(jì)方面,設(shè)計(jì)了基于Android智能手機(jī)的采集程序。通過(guò)系統(tǒng)測(cè)試,整個(gè)系統(tǒng)成功實(shí)現(xiàn)了對(duì)圖像的實(shí)時(shí)監(jiān)測(cè)和數(shù)據(jù)接收。