基于ARM9的新生儿保温箱远程探视系统设计

2017-11-20 01:44李鸿扬陈德为丁文芳
网络安全与数据管理 2017年21期
关键词:公网保温箱客户端

李鸿扬,陈德为,丁文芳

(1.福州大学 机械工程及自动化学院,福建 福州 350116; 2.福建中医药大学 针灸学院,福建 福州 350122)

基于ARM9的新生儿保温箱远程探视系统设计

李鸿扬1,陈德为1,丁文芳2

(1.福州大学 机械工程及自动化学院,福建 福州350116;2.福建中医药大学 针灸学院,福建 福州350122)

针对传统新生儿保温箱探视系统不能满足家属灵活探视需求的问题,提出了一种远程新生儿保温箱探视系统的设计方案。该方案以ARM9嵌入式处理器为硬件平台,移植开源项目MJPG-streamer进行视频传输,通过安全外壳协议(SecureShell,SSH)反向隧道技术实现公网视频传输,并采用GSM模块短信通知探视时间。最后,使用图形用户界面应用程序QtforAndroid编写了基于Android系统的手机客户端,实现了手机客户端对新生儿进行远程视频探视的功能。实验结果表明,该系统能够较好地满足家属的探视需求。

ARM9;QtforAndroid;SSH;GSM通信;MJPG-streamer;新生儿保温箱探视系统

0 引言

传统的新生儿保温箱探视系统采用医院定点定时大屏幕轮流探视,不仅效率低下,探视时间短,且探视体验差,便捷性差,无法满足家属探视需求。

随着物联网技术的发展,医疗物联网的构建也给新生儿家属和医护人员带来了便利。本文基于物联网技术,设计的新生儿保温箱远程探视系统主要实现的功能是:短信提示家属探视时间到;家属无论身处何地,都可通过手机客户端对新生儿进行远程探视,并了解其基本健康状况。

1 系统总体设计

本文设计的新生儿保温箱远程探视系统可分为以下几个部分:中央处理器模块、摄像头模块、GSM模块、客户端模块、云服务器模块。系统移植开源视频项目MJPG-streamer和libjpeg库文件至S3C2440开发板,通过V4L2(Video for Linux 2)编程技术初始化摄像头并采集视频图像数据。视频数据的网络传输采用TCP/IP协议,通过套接字(Socket)进行网络编程。公网通信上采用安全外壳协议(Secure Shell,SSH)反向隧道技术进行内网穿透,将开发板服务器端口代理到公网虚拟专用服务器(Virtual Private Server,VPS)上,继而通过直接访问VPS实例的公网IP即可访问内网的开发板服务器。GSM模块设置开机同时发送短信提醒开机,手机客户端即可连接访问。系统总体设计如图1所示。

图1 系统总体设计图

2 系统硬件构架

2.1处理器模块

系统采用mini2440开发板作为主控模块,其中CPU为基于ARM9架构的三星S3C2440处理器,具有较高性能,能够处理视频数据,并且实现对各个模块的调度[1]。处理器移植了Linux操作系统(内核2.6)。

2.2GSM模块

GSM模块采用的是德国西门子公司研发的TC53i模块,该模块芯片为全球鹰SIM900A,支持5 V 1 A直流电源,使用TTL电平接口与开发板串口进行通信。模块内部将基带电路和射频集成在一起,共有40个引脚,分为电源、控制开关、输入输出、SIM卡接口和音频端口等接口类型[2]。嵌入式处理器通过发送AT指令控制模块发送短信至目标手机号码。

2.3摄像头模块

选用锐尔威视-30万像素高速60帧监控摄像头CMOS OV7725。该摄像头采用USB接口,支持硬件MJPEG压缩,可以直接输出压缩后的数据,极大地节省了CPU工作量和USB带宽,适合用于嵌入式设备。

3 系统软件设计

3.1视频采集、传输

视频的采集通过调用V4L2接口实现。打开摄像头设备文件/dev/video0,进行初始化设置后开始采集视频,采集流程如图2所示[3]。每次采集一帧图像数据后,因摄像头直接输出MJPEG格式图片,无需再压缩编码,直接调用memcpy_picture函数,插入Huffman表,转为JPEG图像后拷贝至全局缓冲区等待线程发送,循环执行。

图2 视频图像采集流程图

视频的传输方面,开源项目MJPG-streamer为嵌入式设备提供了一个轻量级的视频传输解决方案,通过硬件压缩来降低CPU的开销,并且以流的形式进行网络传输。该项目内有多个输入输出组件可供选择,本系统只调用input_uvc.so和output_http.so两个组件。对项目代码进行适应性修改和交叉编译后,使用终端软件Secure CRT发送命令:

./mjpg-streamer -i “/lib/input_uvc.so” -o

“/lib/output_http.so -w 192.168.1.230:8080”执行项目。

图3 MJPG-streamer运行流程图

MJPG-streamer运行流程如图3所示。MJPG-streamer项目采用了多线程编程,线程称为轻量级的进程,对线程的调度只占系统很小的开销,且多线程之间数据共享,故多线程可提高系统并发执行多个程序的效率[4]。图3中,input_init是输入设备初始化函数,包括对摄像头和V4L2接口初始化。output_init函数负责输出初始化,包括监听端口号和文件目录等。input_run函数创建的cam_thread线程负责以阻塞的方式捕捉每一帧图像,处理为JPEG图像后存入全局缓冲区,并通知client_thread线程有一帧新的图像等待提取,直到终端输人+c命令后停止捕捉。output_run函数创建的server_thread线程创建socket,绑定IP地址和端口号,负责监听请求。收到请求后,创建client_thread线程发送HTTP响应头,等待连接后从全局缓冲区拷贝一帧图像数据并发送。pause函数负责等待中断信号。

3.2公网通信

要在公网进行通信,主要的问题是内网穿透。探视系统服务器端处于局域网内,没有配置路由器的端口映射,外网无法访问内网服务器。因此,首先通过Secure CRT建立SSH反向隧道使外网可访问本地8080端口:“ssh -fN -R 18080:localhost: 8080VPS服务器SSH用户名@VPS服务器IP”。其中,“-R 18080:localhost:8080”定义了反向隧道,通过中继服务器的18080端口转发流量,“-fN”设置ssh在后台运行。其次,执行MJPG-streamer程序后在云服务器端用命令“curl 127.0.0.1:18080/?action=stream”测试是否接收到视频流,如不断接收乱码,即接收成功。最后,修改云服务器端apache的mod_proxy模块,将18080端口代理出去并重启http服务。如此,借助云服务器在外网的合法IP,外网用户通过直接访问这个服务器就可访问内网服务器。

3.3GSM通信

GSM模块的软件设计为开机即发送短信至目标手机号码提示探视时间到。程序通过访问系统文件夹 /dev/ttySAC1 调用GSM模块,调用程序和初始配置的部分代码如下:

int fd;

fd=open(“/dev/ttySAC1”,O_RDWR|O_NOCTT-

Y|O_NDELAY);

//打开设备

if(fd<0){

perror(“Can’t Open Serial Port”);

return -1;

}

set_opt( fd,9600,8,‘N’,1);

//配置串口

send_message(fd);

close(fd);

该GSM模块采用AT指令发送短信,在send_message(fd)函数中,短信发送的主要参数设置如表1所示。设置短信发送模式为test可发送英文信息,若指令成功执行,模块会向上位机返回“OK”信息[5]。

表1 AT指令及其含义

3.4手机客户端

手机客户端的开发基于Qt for Android平台。Qt是一个跨平台应用程序和UI开发框架。在Qt上开发应用程序,只需编写一次源代码,就可跨不同的操作系统和桌面部署应用程序,目前其已支持Windows、Linux、Android、iOS、嵌入式Linux、Mac等平台[6]。

手机客户端实现的主要功能是实时接收视频数据和新生儿基本数据。Qt对网络编程的数据结构和函数进行了封装,提供了QtNetwork模块进行网络编程。针对TCP协议,Qt客户端程序采用QTcpSocket类[7]。服务器端调用listen函数监听8080端口,当客户端通过sendrequest函数发送连接请求时,服务器端则发送newConnection()信号,客户端收到信号后,由信号与槽机制,关联相应槽函数,并发送readyRead()信号到读取视频数据的槽函数get_video()。信号与槽关联代码如下:

connect(btn1,SIGNAL(clicked(bool)),this,SLOT(conne-ct_clicked()));

connect(btn2,SIGNAL(clicked(bool)),this,SLOT(discon-nect_clicked()));

connect(monitor_client,SIGNAL(connected()),this,SL-OT(sendrequest()));

connect(monitor_client,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(socketerror()));

connect(monitor_client,SIGNAL(readyRead()),this,SL-OT(get_video()));

读取视频数据时首先要进行一定的延时,以确保一帧图像数据读取完全了再显示,避免出现显示的图像有残缺。读取的JPEG图像数据,加载到QImage对象中,使用setPixmap函数不断绘制图像形成视频。槽函数get_video()主要代码如下:

for(int i=0;i<1500000;i++){};

//延时

QByteArray tmpBlock = (monitor_client->readAll());

//读取一帧图像

QBuffer buffer(&tmpBlock);

buffer.open(QIODevice::ReadOnly);

QImageReader reader(&buffer);

QImage image = reader.read();

if(!image.isNull()){

Imagelabel->setPixmap(QPixmap::

fromImage(image));

//绘制图像

Imagelabel->setText(tr(""));

}

图4 手机客户端测试图

4 运行测试

本系统的宿主机采用的是Ubuntu-16.04系统,交叉编译工具采用的是arm-linux-gcc4.4.3。对修改后的MJPG-streamer项目和libjpeg库进行交叉编译后,移植至mini2440开发板。各模块接线完成后,开机执行程序,建立SSH反向隧道后输入VPS密码获得连接权限,客户端发送请求连接公网IP,得到视频图像如图4所示。

5 结论

本文实现了视频图像的公网传输,视频质量较为清晰,用户无需到医院现场轮流看监控视频,只需通过APP即可独自远程查看摄像头实时拍摄视频。本设计还通过整合新生儿基本健康数据,显示于手机客户端,使其更好地完成与家属之间的信息交互。采用嵌入式系统具有成本低、稳定性好、功耗低等优点,具有较高的实用性。本系统还可以进一步扩展,在医院系统允许的情况下,连接部分医疗设备,将更多健康信息整合起来同步于家属。

[1] 广州友善之臂计算机科技有限公司.mini2440用户手册[Z].2014.

[2] 徐丽丽.基于ARM9的智能家居安防报警系统的设计[D].太原:中北大学,2014

[3] 陈恒鑫.基于ARM11的移动视频监控系统的设计与实现[D].哈尔滨:哈尔滨工业大学,2014.

[4] 雷铭哲,张勇.Linux线程机制研究[J].火力与指挥控制,2010,35(2):112-114,118.

[5] 芯讯通无线科技(上海)有限公司.SIM900A_AT命令手册_V1.05[Z].2011.

[6] 蔡志明.精通Qt4编程[M].北京:电子工业出版社,2008.

[7] 黄翩,张琼,祝婷.基于Qt的一个服务器多个客户端的TCP通信[J].电子科技,2015,28(3):76-78,82.

Design of remote visiting system of newborn incubator based on ARM9

Li Hongyang1, Chen Dewei1, Ding Wenfang2

(1.School of Mechanical Engineering and Automation,Fuzhou University, Fuzhou 350116, China;2.School of Acupuncture,Fujian University of Traditional Chinese Medicine, Fuzhou 350122, China)

Aiming at the problem that traditional system of visiting newborns in incubators can not meet the flexible visit need of family members, a design plan of the visit system of long-distance incubator for newborns is proposed in this paper.The plan takes the embedded processor of ARM9 as the hardware platform,transplants the open-source item MJPG-streamer to transmit videos,realizes public network video transmission through the inverse tunnel technology of Secure Shell (SSH),while adopting GSM module to notify the time of visit with short messages.Finally, using Qt for Android,an image user surface application program to write the cellphone user’s terminal based on Android system, so as to realize the function of long-distance video visit of newborns with the cellphone user’s terminal.The result of the experiment shows that the system can well satisfy the visiting needs of the family members.

ARM9; Qt for Android; SSH; GSM communications; MJPG-streamer; the visiting system of newborn incubator

TP277

A

10.19358/j.issn.1674-7720.2017.21.030

李鸿扬,陈德为,丁文芳.基于ARM9的新生儿保温箱远程探视系统设计J.微型机与应用,2017,36(21):104-107.

2017-06-05)

李鸿扬(1992-),男,在读硕士研究生,主要研究方向:机电系统控制技术。

陈德为(1962-),男,博士,教授,主要研究方向:测控技术与仪器。

丁文芳(1992-),女,在读硕士研究生,主要研究方向:儿童脑瘫、传统针灸、现代康复治疗技术。

猜你喜欢
公网保温箱客户端
浅析大临铁路公网覆盖方案
暖箱就是体外子宫,4种新生儿需要它
暖箱就是体外子宫,4种新生儿需要它
公网铁路应急通信质量提升的技术应用
如何看待传统媒体新闻客户端的“断舍离”?
在保温箱里的日子
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
如何迎接公网对讲的春天