李鴻揚(yáng),陳德為,丁文芳
(1.福州大學(xué) 機(jī)械工程及自動化學(xué)院,福建 福州 350116; 2.福建中醫(yī)藥大學(xué) 針灸學(xué)院,福建 福州 350122)
基于ARM9的新生兒保溫箱遠(yuǎn)程探視系統(tǒng)設(shè)計
李鴻揚(yáng)1,陳德為1,丁文芳2
(1.福州大學(xué) 機(jī)械工程及自動化學(xué)院,福建 福州350116;2.福建中醫(yī)藥大學(xué) 針灸學(xué)院,福建 福州350122)
針對傳統(tǒng)新生兒保溫箱探視系統(tǒng)不能滿足家屬靈活探視需求的問題,提出了一種遠(yuǎn)程新生兒保溫箱探視系統(tǒng)的設(shè)計方案。該方案以ARM9嵌入式處理器為硬件平臺,移植開源項目MJPG-streamer進(jìn)行視頻傳輸,通過安全外殼協(xié)議(SecureShell,SSH)反向隧道技術(shù)實(shí)現(xiàn)公網(wǎng)視頻傳輸,并采用GSM模塊短信通知探視時間。最后,使用圖形用戶界面應(yīng)用程序QtforAndroid編寫了基于Android系統(tǒng)的手機(jī)客戶端,實(shí)現(xiàn)了手機(jī)客戶端對新生兒進(jìn)行遠(yuǎn)程視頻探視的功能。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)能夠較好地滿足家屬的探視需求。
ARM9;QtforAndroid;SSH;GSM通信;MJPG-streamer;新生兒保溫箱探視系統(tǒng)
傳統(tǒng)的新生兒保溫箱探視系統(tǒng)采用醫(yī)院定點(diǎn)定時大屏幕輪流探視,不僅效率低下,探視時間短,且探視體驗(yàn)差,便捷性差,無法滿足家屬探視需求。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,醫(yī)療物聯(lián)網(wǎng)的構(gòu)建也給新生兒家屬和醫(yī)護(hù)人員帶來了便利。本文基于物聯(lián)網(wǎng)技術(shù),設(shè)計的新生兒保溫箱遠(yuǎn)程探視系統(tǒng)主要實(shí)現(xiàn)的功能是:短信提示家屬探視時間到;家屬無論身處何地,都可通過手機(jī)客戶端對新生兒進(jìn)行遠(yuǎn)程探視,并了解其基本健康狀況。
本文設(shè)計的新生兒保溫箱遠(yuǎn)程探視系統(tǒng)可分為以下幾個部分:中央處理器模塊、攝像頭模塊、GSM模塊、客戶端模塊、云服務(wù)器模塊。系統(tǒng)移植開源視頻項目MJPG-streamer和libjpeg庫文件至S3C2440開發(fā)板,通過V4L2(Video for Linux 2)編程技術(shù)初始化攝像頭并采集視頻圖像數(shù)據(jù)。視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸采用TCP/IP協(xié)議,通過套接字(Socket)進(jìn)行網(wǎng)絡(luò)編程。公網(wǎng)通信上采用安全外殼協(xié)議(Secure Shell,SSH)反向隧道技術(shù)進(jìn)行內(nèi)網(wǎng)穿透,將開發(fā)板服務(wù)器端口代理到公網(wǎng)虛擬專用服務(wù)器(Virtual Private Server,VPS)上,繼而通過直接訪問VPS實(shí)例的公網(wǎng)IP即可訪問內(nèi)網(wǎng)的開發(fā)板服務(wù)器。GSM模塊設(shè)置開機(jī)同時發(fā)送短信提醒開機(jī),手機(jī)客戶端即可連接訪問。系統(tǒng)總體設(shè)計如圖1所示。
圖1 系統(tǒng)總體設(shè)計圖
2.1處理器模塊
系統(tǒng)采用mini2440開發(fā)板作為主控模塊,其中CPU為基于ARM9架構(gòu)的三星S3C2440處理器,具有較高性能,能夠處理視頻數(shù)據(jù),并且實(shí)現(xiàn)對各個模塊的調(diào)度[1]。處理器移植了Linux操作系統(tǒng)(內(nèi)核2.6)。
2.2GSM模塊
GSM模塊采用的是德國西門子公司研發(fā)的TC53i模塊,該模塊芯片為全球鷹SIM900A,支持5 V 1 A直流電源,使用TTL電平接口與開發(fā)板串口進(jìn)行通信。模塊內(nèi)部將基帶電路和射頻集成在一起,共有40個引腳,分為電源、控制開關(guān)、輸入輸出、SIM卡接口和音頻端口等接口類型[2]。嵌入式處理器通過發(fā)送AT指令控制模塊發(fā)送短信至目標(biāo)手機(jī)號碼。
2.3攝像頭模塊
選用銳爾威視-30萬像素高速60幀監(jiān)控攝像頭CMOS OV7725。該攝像頭采用USB接口,支持硬件MJPEG壓縮,可以直接輸出壓縮后的數(shù)據(jù),極大地節(jié)省了CPU工作量和USB帶寬,適合用于嵌入式設(shè)備。
3.1視頻采集、傳輸
視頻的采集通過調(diào)用V4L2接口實(shí)現(xiàn)。打開攝像頭設(shè)備文件/dev/video0,進(jìn)行初始化設(shè)置后開始采集視頻,采集流程如圖2所示[3]。每次采集一幀圖像數(shù)據(jù)后,因攝像頭直接輸出MJPEG格式圖片,無需再壓縮編碼,直接調(diào)用memcpy_picture函數(shù),插入Huffman表,轉(zhuǎn)為JPEG圖像后拷貝至全局緩沖區(qū)等待線程發(fā)送,循環(huán)執(zhí)行。
圖2 視頻圖像采集流程圖
視頻的傳輸方面,開源項目MJPG-streamer為嵌入式設(shè)備提供了一個輕量級的視頻傳輸解決方案,通過硬件壓縮來降低CPU的開銷,并且以流的形式進(jìn)行網(wǎng)絡(luò)傳輸。該項目內(nèi)有多個輸入輸出組件可供選擇,本系統(tǒng)只調(diào)用input_uvc.so和output_http.so兩個組件。對項目代碼進(jìn)行適應(yīng)性修改和交叉編譯后,使用終端軟件Secure CRT發(fā)送命令:
./mjpg-streamer -i “/lib/input_uvc.so” -o
“/lib/output_http.so -w 192.168.1.230:8080”執(zhí)行項目。
圖3 MJPG-streamer運(yùn)行流程圖
MJPG-streamer運(yùn)行流程如圖3所示。MJPG-streamer項目采用了多線程編程,線程稱為輕量級的進(jìn)程,對線程的調(diào)度只占系統(tǒng)很小的開銷,且多線程之間數(shù)據(jù)共享,故多線程可提高系統(tǒng)并發(fā)執(zhí)行多個程序的效率[4]。圖3中,input_init是輸入設(shè)備初始化函數(shù),包括對攝像頭和V4L2接口初始化。output_init函數(shù)負(fù)責(zé)輸出初始化,包括監(jiān)聽端口號和文件目錄等。input_run函數(shù)創(chuàng)建的cam_thread線程負(fù)責(zé)以阻塞的方式捕捉每一幀圖像,處理為JPEG圖像后存入全局緩沖區(qū),并通知client_thread線程有一幀新的圖像等待提取,直到終端輸人
3.2公網(wǎng)通信
要在公網(wǎng)進(jìn)行通信,主要的問題是內(nèi)網(wǎng)穿透。探視系統(tǒng)服務(wù)器端處于局域網(wǎng)內(nèi),沒有配置路由器的端口映射,外網(wǎng)無法訪問內(nèi)網(wǎng)服務(wù)器。因此,首先通過Secure CRT建立SSH反向隧道使外網(wǎng)可訪問本地8080端口:“ssh -fN -R 18080:localhost: 8080VPS服務(wù)器SSH用戶名@VPS服務(wù)器IP”。其中,“-R 18080:localhost:8080”定義了反向隧道,通過中繼服務(wù)器的18080端口轉(zhuǎn)發(fā)流量,“-fN”設(shè)置ssh在后臺運(yùn)行。其次,執(zhí)行MJPG-streamer程序后在云服務(wù)器端用命令“curl 127.0.0.1:18080/?action=stream”測試是否接收到視頻流,如不斷接收亂碼,即接收成功。最后,修改云服務(wù)器端apache的mod_proxy模塊,將18080端口代理出去并重啟http服務(wù)。如此,借助云服務(wù)器在外網(wǎng)的合法IP,外網(wǎng)用戶通過直接訪問這個服務(wù)器就可訪問內(nèi)網(wǎng)服務(wù)器。
3.3GSM通信
GSM模塊的軟件設(shè)計為開機(jī)即發(fā)送短信至目標(biāo)手機(jī)號碼提示探視時間到。程序通過訪問系統(tǒng)文件夾 /dev/ttySAC1 調(diào)用GSM模塊,調(diào)用程序和初始配置的部分代碼如下:
int fd;
fd=open(“/dev/ttySAC1”,O_RDWR|O_NOCTT-
Y|O_NDELAY);
//打開設(shè)備
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指令發(fā)送短信,在send_message(fd)函數(shù)中,短信發(fā)送的主要參數(shù)設(shè)置如表1所示。設(shè)置短信發(fā)送模式為test可發(fā)送英文信息,若指令成功執(zhí)行,模塊會向上位機(jī)返回“OK”信息[5]。
表1 AT指令及其含義
3.4手機(jī)客戶端
手機(jī)客戶端的開發(fā)基于Qt for Android平臺。Qt是一個跨平臺應(yīng)用程序和UI開發(fā)框架。在Qt上開發(fā)應(yīng)用程序,只需編寫一次源代碼,就可跨不同的操作系統(tǒng)和桌面部署應(yīng)用程序,目前其已支持Windows、Linux、Android、iOS、嵌入式Linux、Mac等平臺[6]。
手機(jī)客戶端實(shí)現(xiàn)的主要功能是實(shí)時接收視頻數(shù)據(jù)和新生兒基本數(shù)據(jù)。Qt對網(wǎng)絡(luò)編程的數(shù)據(jù)結(jié)構(gòu)和函數(shù)進(jìn)行了封裝,提供了QtNetwork模塊進(jìn)行網(wǎng)絡(luò)編程。針對TCP協(xié)議,Qt客戶端程序采用QTcpSocket類[7]。服務(wù)器端調(diào)用listen函數(shù)監(jiān)聽8080端口,當(dāng)客戶端通過sendrequest函數(shù)發(fā)送連接請求時,服務(wù)器端則發(fā)送newConnection()信號,客戶端收到信號后,由信號與槽機(jī)制,關(guān)聯(lián)相應(yīng)槽函數(shù),并發(fā)送readyRead()信號到讀取視頻數(shù)據(jù)的槽函數(shù)get_video()。信號與槽關(guān)聯(lián)代碼如下:
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()));
讀取視頻數(shù)據(jù)時首先要進(jìn)行一定的延時,以確保一幀圖像數(shù)據(jù)讀取完全了再顯示,避免出現(xiàn)顯示的圖像有殘缺。讀取的JPEG圖像數(shù)據(jù),加載到QImage對象中,使用setPixmap函數(shù)不斷繪制圖像形成視頻。槽函數(shù)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 手機(jī)客戶端測試圖
本系統(tǒng)的宿主機(jī)采用的是Ubuntu-16.04系統(tǒng),交叉編譯工具采用的是arm-linux-gcc4.4.3。對修改后的MJPG-streamer項目和libjpeg庫進(jìn)行交叉編譯后,移植至mini2440開發(fā)板。各模塊接線完成后,開機(jī)執(zhí)行程序,建立SSH反向隧道后輸入VPS密碼獲得連接權(quán)限,客戶端發(fā)送請求連接公網(wǎng)IP,得到視頻圖像如圖4所示。
本文實(shí)現(xiàn)了視頻圖像的公網(wǎng)傳輸,視頻質(zhì)量較為清晰,用戶無需到醫(yī)院現(xiàn)場輪流看監(jiān)控視頻,只需通過APP即可獨(dú)自遠(yuǎn)程查看攝像頭實(shí)時拍攝視頻。本設(shè)計還通過整合新生兒基本健康數(shù)據(jù),顯示于手機(jī)客戶端,使其更好地完成與家屬之間的信息交互。采用嵌入式系統(tǒng)具有成本低、穩(wěn)定性好、功耗低等優(yōu)點(diǎn),具有較高的實(shí)用性。本系統(tǒng)還可以進(jìn)一步擴(kuò)展,在醫(yī)院系統(tǒng)允許的情況下,連接部分醫(yī)療設(shè)備,將更多健康信息整合起來同步于家屬。
[1] 廣州友善之臂計算機(jī)科技有限公司.mini2440用戶手冊[Z].2014.
[2] 徐麗麗.基于ARM9的智能家居安防報警系統(tǒng)的設(shè)計[D].太原:中北大學(xué),2014
[3] 陳恒鑫.基于ARM11的移動視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2014.
[4] 雷銘哲,張勇.Linux線程機(jī)制研究[J].火力與指揮控制,2010,35(2):112-114,118.
[5] 芯訊通無線科技(上海)有限公司.SIM900A_AT命令手冊_V1.05[Z].2011.
[6] 蔡志明.精通Qt4編程[M].北京:電子工業(yè)出版社,2008.
[7] 黃翩,張瓊,祝婷.基于Qt的一個服務(wù)器多個客戶端的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,F(xiàn)uzhou University, Fuzhou 350116, China;2.School of Acupuncture,F(xiàn)ujian 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
李鴻揚(yáng),陳德為,丁文芳.基于ARM9的新生兒保溫箱遠(yuǎn)程探視系統(tǒng)設(shè)計J.微型機(jī)與應(yīng)用,2017,36(21):104-107.
2017-06-05)
李鴻揚(yáng)(1992-),男,在讀碩士研究生,主要研究方向:機(jī)電系統(tǒng)控制技術(shù)。
陳德為(1962-),男,博士,教授,主要研究方向:測控技術(shù)與儀器。
丁文芳(1992-),女,在讀碩士研究生,主要研究方向:兒童腦癱、傳統(tǒng)針灸、現(xiàn)代康復(fù)治療技術(shù)。