汤福南,刘亚文,汪缨
南京医科大学第一附属医院江苏省人民医院 临床医学工程处,江苏 南京 210029
试管婴儿预约周期长、价格昂贵,在体外受精-胚胎移植技术(In Vitro Fertilization-Embryo Transfer,IVF-ET)获得较为长足进步的情况下,胚胎移植后的临床妊娠率约为33%[1],成功率有限。因此,试管婴儿培养流程里的每个环节都至关重要。作为生殖医学界的共识——“胚胎培养室是生殖中心的‘心脏’”,卵子和胚胎将在胚胎培养室度过形成生命最初的重要的几天[2]。而胚胎实验室内,CO2培养箱是用于进行胚胎培养的关键医疗设备,其重要程度可想而知。
CO2培养箱的重要参数包括CO2浓度、O2浓度以及温度等,当以上参数出现与设定值有偏差时,如CO2浓度过低或者温度过高,培养箱就会发出声音报警[3]。为保证高质量的胚胎培养,培养箱内的实时状态以及报警信息应该更高效地传递到相关负责人。
传统的CO2培养箱监测方式依赖于设备自身的声光报警,当处于夜间或负责人员不在实验室现场则无法接收到报警信息和查看CO2培养箱内部具体参数,从而使得胚胎培养实验面临失败的风险,容易造成患者重大损失。另外,在培养箱故障维修方面,根据赵安等[4]的研究,CO2培养箱的常见故障主要集中在气体和温度测控,这两种故障在处理之后都需要进行一段时间(如15 min)的观察[5],避免重复进行胚胎细胞转移操作而造成的胚胎污染风险,现有的监测系统无法进行CO2培养箱内部参数的历史数据追溯,需要人为地进行重复观测,这种方式效率较低。
基于上述情况,本文利用树莓派结合物联网技术专门用于医院生殖中心实验室CO2培养箱的远程监测,有助于CO2培养箱的预防性维护[6-7],降低实验室因设备故障、环境因素等造成的实验失败的可能性,进一步保障胚胎培养过程的安全稳定。
本文设计的CO2培养箱监测系统主要由主控制器、USB转串口模块和物联网云平台组成。本文所设计的系统中,树莓派作为主控制器[8],通过串口发送请求指令[9],接收返回结果之后对其进行数据分割、变量赋值和数据上传等操作,最终可以将CO2浓度、O2浓度[10]、温度以及报警代码等通过WiFi上传到物联网——OneNET云平台[11]。OneNET云平台接收数据,进行实时数据显示以及历史数据波形绘制。系统总体框图如1所示。
图1 系统总体框图
系统采用读取培养箱设备串口的方式获取数据,其意义在于无需额外使用传感器来获取培养箱内数据,这种方式获取的各种参数最为准确;另一方面,通过USB转串口模块方便系统进行扩展,有利于同时多个CO2培养箱的数据监测。
本系统设计采用树莓派3B作为主控制器,树莓派3B是一款基于ARM架构的微型电脑主板,电源输入为5 V/2 A,其外形只有信用卡片大小,尺寸为86 mm×56 mm×17 mm。树莓派3B搭载1.2 GHz的64位四核处理器,内存1 GB,采用Micro SD卡作为硬盘[12],操作系统映像文件版本为“2019-04-08-raspbian-stretch”。
本系统设计采用树莓派3B作为主控制器的原因主要有:① 树莓派3B板载BCM43438无线芯片集成了IEEE 802.11n无线网卡,可直接通过无线网连接OneNET云平台进行数据传输;② 树莓派3B自带4个USB 2.0接口,可通过USB转串口线直接与培养箱设备进行数据对接,方便快捷而且容易扩展,见图2。
图2 树莓派3B
本系统选用Z-TEK公司生产的USB转RS232串口线,型号为ZE658,可实现树莓派对CO2培养箱的数据采集监测。内部集成PL2303芯片,支持RS232协议,支持Win10、MacOS、Linux等多种操作系统,波特率300-1 Mbps,数据位7/8,停止位1/2。
通常情况下,如果选用单片机作为主控制器,TXD、RXD使用的是TTL电平,需要转换成TTL电平才能进行通信,而且单片机自带USB数量有限,扩展能力相对较低[13],因此使用树莓派结合USB转串口模块连接CO2培养箱的方式优势十分明显。本文设计的监测系统以日本ASTEC APM-30D型号CO2培养箱为例,实物如图3所示,其背部自带串口数据接口。
图3 CO2培养箱实物图
系统软件设计由树莓派软件设计以及物联网云平台端软件设计两部分组成。其中树莓派使用Python语言开发[14],控制串口向CO2培养箱发送数据请求指令,接收返回数据之后进行数据解析,最后将温度、CO2浓度、O2浓度、报警代码等关键数据上传至OneNET云平台,树莓派端软件流程如图4所示。使用Python语言开发是因为可以使用众多功能强大的开源函数库,更为重要的是其程序可直接在树莓派的操作系统上执行。
图4 软件流程图
OneNET云平台端接收到主控制器发送的数据,根据不同数据流接收对应数据设置触发器[15],判断相关数值是否在正常范围,当达到触发条件时,OneNET云平台将自动发送报警提示信息到预先设置的电子邮箱中,实现邮件报警功能。
3.1.1 查看串口相关信息
(1)首先通过运行指令 dmesg | grep ttyS* 查看树莓派串口相关信息[16],见图5,当前有三个CO2培养箱设备通过USB转串口线连接到树莓派,分别对应串口号ttyUSB0、ttyUSB1、ttyUSB2。本文以ttyUSB0为例,介绍其中一台CO2培养箱监测设计。
图5 树莓派查询串口设备图
(2)通过以下指令安装图形化串口调试工具cutecom:sudo apt-get install cutecom
安装成功之后,通过指令sudo cutecom打开串口调试工具,选择ttyUSB0,设置波特率,发送数据请求指令并等待返回数据,即可确认树莓派与CO2培养箱可以正常通讯。
(3)为了实现串口通讯和数据上传到物联网等功能,Python程序中需要通过import语句先导入serial模块、urllib.request、requests、json等相关模块;
打开串口,设置波特率语句:
serial = serial.Serial(‘/dev/ttyUSB0’,19200,timeout =3600)
串口配置完成之后,通过向培养箱发送特定指令就可以得到回传数据。以ASTEC APM-30D型号的培养箱为例,发送ASCII字符串“reqd”,即可得到返回数据,发送指令以及等待返回数据的代码如下:
send_data = ‘reqd’
send_data = send_data + ‘ ’
serial.write(send_data.encode(“utf-8”))
data=serial.read(1)
sleep(0.1)
data = (data + serial.read(serial.inWaiting())).decode()
3.1.2 数据处理及上传程序
CO2培养箱串口收到“reqd”指令后,会返回三行数据,举例如下:
“reqd
0,370,38,208,-56,0
> ”
其中“reqd”和“>”分别代表回传数据的开始和结尾,属于固定不变的部分;“370”代表当前培养箱内部温度为37.0 ℃;”38”代表当前培养箱内部CO2浓度为3.8%;”208”代表当前培养箱内部O2浓度为20.8%;最后一位数值的“0”代表当前报警代码为0,即无报警。在Python程序中分别使用find()和r find()函数通过查找逗号“,”即可定位到关键参数在返回数据中的具体位置,然后再使用split()函数把Temp、CO2、O2以及AlarmCode等变量自动分离出来,从而实现数据的自动读取和相应变量的赋值操作。报警代码表如表1所示。
表1 报警代码
OneNET云平台是中国移动通信集团在物联网应用和真实设备之间搭建的一个应用平台。该平台不仅适配多种网络环境和常见传输协议,提供各类设备快速接入方案和管理服务,而且在应用层提供丰富的API和数据分发能力,从而缩短物联网系统的形成周期,方便开发者进行数据传输和管理。
3.2.1 设备接入
在正式使用OneNET云平台物联网服务之前,需要进行账户注册登陆等操作;然后在其基础服务中选择多协议接入,进行创建产品、创建设备、生成数据流等操作[17];最后通过生成相应的应用,单个应用下可以创建多个数据流,分别对应CO2培养箱的CO2浓度、O2浓度、温度以及报警代码等参数。
3.2.2 传输协议
OneNET平台支持包括HTTP、Modbus、EDP、TCP透传、MQTT[18-19]等协议场景下的设备快速上云,本文设计的系统采用HTTP协议。本系统首先在OneNET平台上创建产品时设备接入协议选择HTTP协议,记录下云平台分配的产品ID、设备ID以及安全鉴权密钥APIKey。树莓派端通过在Python程序中利用APIurl和APIKey即可将获取到的CO2培养箱CO2浓度等数据上传到云平台。
3.2.3 应用编辑
通过OneNET应用编辑器,开发者可以在云平台端实现设备数据流的可视化:在应用编辑页面,可以通过组件库进行可视化元素的添加与删除,可视化元素包括基础元素与控制元素。本文设计的系统主要使用了基础元素中的文本、折线图以及仪表盘等控件,即可对CO2浓度、O2浓度、温度以及报警代码等数据流进行图形化展示,展示内容包括当前数据、历史数据波形和数据最近更新时间,实际运行效果如图6所示。
图6 物联网云平台数据显示
使用本文设计的监测系统之前,胚胎实验室的负责人员想要了解CO2培养箱是否处于正常运行状态通常只能通过以下两种方式:① 亲自到现场逐一查看CO2培养箱的面板,检查是否存在Led灯闪烁报警和蜂鸣器报警;② 电话敦促实验室工作人员执行以上操作。
针对传统方法的不足,本文基于树莓派和物联网技术设计了CO2培养箱监测系统,本系统具有以下优点:① 可以让相关负责人员随时随地从OneNET云平台端登录进行远程查阅当前数据信息,并且在云平台端设置数据刷新频率最快为3次/s,极大提高了当前数据监测的实时性;② 在进行历史数据追溯时,每次查询请求可以返回6000个数据点[20],相当于最近5 h的数据长度;在此基础之上,可以向前查阅30 d以内的历史数据,这样的追溯长度已经可以完全涵盖胚胎体外培养整个周期;③ 报警信息传达的及时性。OneNET云平台的触发器功能,可以设置报警范围以及数据异常实时触发[21],即使在胚胎实验室无人值守时仍然能够第一时间发现培养箱异常并报警。
因此,相比之下本系统在远程监测的实时性、历史数据追溯时间长度、报警信息及时性等方面要明显优于传统方法,见表2。
表2 效果对比
CO2培养箱的监测对胚胎质量具有重要意义,等级越高、质量越好的胚胎移植后其妊娠率越高[22]。本文设计的系统是基于树莓派和物联网平台的远程监测系统,其创新性在于:① 使用物联网技术将生殖中心实验室的CO2培养箱设备接入物联网云端,可通过网络远程随时查看各种关键参数信息和远程接收报警信息;而以往的研究主要是将培养箱报警接口进行改造设计,使得报警信息延长到相关负责人手中,不能做到真正意义上的远程监测;② 在硬件设计方面,使用树莓派微型电脑作为主控制器,其强大的处理能力和USB接口扩展能力能够实现一对多的CO2培养箱检测系统;而以往的研究思路是每一台CO2培养箱配备一个单片机对其分别进行读取控制,然后再进行数据的处理,比较分散不方便管理。
树莓派可以通过WiFi直接连入物联网平台,获取CO2培养箱的各项关键参数以及报警代码之后即可上传,相关负责人可以在物联网平台查看当前及历史数据,实现真正的CO2培养箱远程监测;不仅如此,对于拥有多台CO2培养箱的生殖中心实验室来说,能够以本系统为样本,通过工业级的USB HUB对树莓派USB口进行扩展,在物联网平台实现多台CO2培养箱的关键参数以及报警信息的同时监测,相对于传统的声光报警方式能够很大程度上减少人力物力的投入。
我院生殖中心实验室有45台CO2培养箱,本系统在我院生殖中心实验室已初步调试成功并计划投入使用。对于医院的临床工程师来说,医疗设备的内部传感器一般都经过定期校准或计量,其重要参数监测改进设计应尽可能利用设备本身传感器的信息,既能够高效准确地获取数据,又可以降低系统设计成本。