引言
近年,由于微电子技术和便携式电子设备的发展,使用传感器获取身体的生理数据成为热门的研究领域[12]。越来越多的嵌入式处理器和无线技术应用于生理参数的获取。使用传感器可以获取如血压、血氧饱和度、血糖、脉搏、体温、呼吸、心率、心电、脑电等生理信息。这方面的研究已经许多成果,如使用安卓手机进行心电监测[3]、ZigBee的多生理参数监测[4]等,这些信息可以通过无线方式发送给便携式数据记录仪或远程服务器。如今,智能手机有足够的处理和存储能力来完成这些身体参数的处理,可以使用蓝牙或WiFi接收这些数据,但考虑到蓝牙或WiFi芯片的体积和功耗,胶囊内窥镜[56]的图像不宜采用蓝牙或WiFi进行传输。因此,如不借助其他设备,胶囊内窥镜使用专用的无线传输芯片采集到的图像无法直接传输到智能手机或远程服务器。
为了解决这个问题,本文设计了一种用于胶囊内窥镜的转发器,主要功能是转发胶囊内窥镜的图像数据。提出的适配器通过使用与胶囊内窥镜配套的无线收发模块来接收图像数据,然后由微处理器控制WiFi模块转发图像数据到手持设备。此外,适配器也可直接通过WiFi将图像发送到远程服务器存储,从而实现胶囊内窥镜的远程诊断。
1 系统总体设计
作为胶囊内窥镜和数据采集终端的中间设备,转发器主要用于转发胶囊内窥镜的图像数据。本文使用Android手机作为数据采集终端,胶囊内窥镜使用的是nRF24L01+传输芯片。图1是使用转发器的胶囊内窥镜远程诊断系统。
2 转发器设计
2.1 硬件设计
转发器的硬件设计如图2所示,包括微控制器STM32F103RCT6[7]、无线收发芯片nRF24L01+、WiFi芯片CC3000[8],各模块使用SPI总线进行通信。转发器保留了其他传输方式的外部接口,因此也能用于其他传输方式的生理传感器。
(1) 微控制器图3CC3000外围电路设计
微控制器STM32F103RCT6,主要负责数据的缓存、处理转换,并根据预定义的方式从相关接口传送数据。它控制RF接收器和WiFi模块的数据传输相关的所有活动,以及总体管理产生的控制信号。STM32系列专为要求高性能、低成本、低功耗的嵌入式应用而设计。时钟频率为72 MHz时,STM32功耗为36 mA,相当于0.5 mA/MHz。
(2) RF接收器
选择nRF24L01+作为转发器的接收芯片,是由于其具有低功耗、小尺寸和高带宽等特点。它与单片机SPI口的通信速度可达8 MHz;最大支持2 Mbps的数据传输速率,且正常的功耗为14 mA;支持自动应答及自动重发,内置地址及CRC数据校验等功能。虽然自动应答降低了通信速度,但它是生物医学应用中所必需的。
(3) WiFi模块
转发器的功能取决于设备本身和接收工作站之间的通信。WiFi的应用越来越广泛,在许多地方都作为一种主要的通信媒介。本文使用TI公司的WiFi嵌入式芯片CC3000,为电子设备提供Internet连接能力。这款芯片包含完整的TCP/IP协议栈和WiFi驱动,支持标准的Socket编程,具有IEEE802.11b/g无线网卡功能。在IEEE802.11g工作模式下,传输功耗为190 mA,接收功耗为92 mA。CC3000的外围电路设计如图3所示,只保留了SPI通信接口和UART调试接口。
(4) 电源供应
采用输出3.7 V的锂电池作为电源的供应,电池可以通过USB线进行充电。
2.2 控制程序设计
软件控制程序是分层模块化的,以便添加新的硬件时不必对软件进行大规模改动。底层驱动程序是由ST公司提供的一个完整的STM32设备固件库。该库提供了STM32所有外设的底层驱动函数,开发人员不必自己编写驱动函数,只需在这些底层函数的基础上编写应用程序。CC3000使用官方提供的Hostdriver驱动库,上层应用层包括数据处理、系统配置等模块。STM32通过SPI初始化CC3000和RF射频模块,配置nRF24L01+为接收模式,自动应答,每次传输32字节数据。为了确保数据接收与发送同步操作,CC3000的数据包也设置为32字节。因为针对的是远程诊断,而远程服务器的IP地址一般是固定的,因此配置CC3000为服务端的工作模式。转发器工作时,从RF的SPI口读取到的数据先存到存储缓冲器中,然后由STM32将数据交由CC3000转发出去。
转发器的工作流程如图4所示。
当连接指定AP超时,CC3000便进入Smart_Config模式[9],Smart Config是CC3000独有的AP配置信息模式,可以使用任何带WiFi的设备配置CC3000连接到AP。很多嵌入式的设备不带有键盘和液晶,而WiFi配置又极其复杂,为了便于客户重新配置WiFi的连接,CC3000模块设计了Smart Config模式。
3 Android手机接收程序
本文使用Android手机完成图像数据的接收、处理、显示、保存。转发器通过WiFi将图片发送到手机,图像数据是通过转发器的TCP/IP协议转发的。Android是一个开源移动操作系统,它有一个强大的基于Java框架的软件开发包。Bitmap类[10]是Android系统中有关图像处理的最重要类之一,可以用于获取图像文件信息,进行图像相关处理。
开发的图像采集应用程序主要由3部分组成:
① DeviceListActivity:主要完成设备的连接,连接后的设备通过Socket通信。
② RecieveService: Android后台服务进程,它长时间运行在手机应用程序进程的主线程内,不会干扰其他组件或用户界面。这里包括Socket的监听、数据的接收、图片的显示与写入SD卡的后台服务。
③ WiFiWCERecieve:与用户交互的Activity组件,是应用程序的可见部分。
CC3000与手机利用WiFi连接立TCP连接,通过Socket传输图片。配置Android手机为服务端,使用ServerSocket来建立带有端口的Socket服务器,然后一直监听请求连接。其中Android终端和CC3000处于同一局域网。图像启动采集的时候,客户端使用Socket的构造器连接服务器,指定服务器IP和端口号。服务器端的accept()方法得到响应后,服务器端和客户端就形成了一对互相连接的Socket。Socket通信时都是通过输入/输出流进行。从手机Socket口获取到的图像数据流,通过Android里面的bitmap类生成JPEG图像并显示,添加SD权限,把图像写进SD卡中。
4 实验与分析
胶囊内窥镜使用nRF24L01+发送图像数据。转发器处理接收到的数据,通过无线网络转发给Android处理、显示、保存。图5为Android机接收到的图片。
不同组件的平均功耗如图6所示。可以看出,最耗电的为CC3000。总的耗电量为200 mA,在2 000 mAh锂电源的工作环境下,能工作10小时。由于胶囊内窥镜一般工作8小时左右,因此足够胶囊内窥镜的应用。
实验结果表明,该转发器能够稳定转发胶囊内窥镜图片,可作为胶囊内窥镜远程诊断的转发装置。转发器有以下优势:
① 体积小、功耗低。
② 安装相关软件,任何带有WiFi的安卓手机都可以用作胶囊内窥镜数据采集和处理设备。
③ 可以使用手机实时监控胶囊内窥镜图像。
④ 可以直接通过WiFi将图像传输到远程服务器。
⑤ 预留其他外部接口,可以支持其他的传感器。
结语
本文设计了基于STM32F103的WiFi转发器,并用于胶囊内窥镜的图像转发;系统地分析了胶囊内窥镜图像数据的转发、数据传输的原理和过程,在软件设计方面,设计了基于Android智能手机的采集程序。通过系统测试,整个系统成功实现了对图像的实时监测和数据接收。