李鴻揚,陳德為,丁文芳
(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;新生兒保溫箱探視系統
傳統的新生兒保溫箱探視系統采用醫院定點定時大屏幕輪流探視,不僅效率低下,探視時間短,且探視體驗差,便捷性差,無法滿足家屬探視需求。
隨著物聯網技術的發展,醫療物聯網的構建也給新生兒家屬和醫護人員帶來了便利。本文基于物聯網技術,設計的新生兒保溫箱遠程探視系統主要實現的功能是:短信提示家屬探視時間到;家屬無論身處何地,都可通過手機客戶端對新生兒進行遠程探視,并了解其基本健康狀況。
本文設計的新生兒保溫箱遠程探視系統可分為以下幾個部分:中央處理器模塊、攝像頭模塊、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.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.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線程有一幀新的圖像等待提取,直到終端輸人
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 手機客戶端測試圖
本系統的宿主機采用的是Ubuntu-16.04系統,交叉編譯工具采用的是arm-linux-gcc4.4.3。對修改后的MJPG-streamer項目和libjpeg庫進行交叉編譯后,移植至mini2440開發板。各模塊接線完成后,開機執行程序,建立SSH反向隧道后輸入VPS密碼獲得連接權限,客戶端發送請求連接公網IP,得到視頻圖像如圖4所示。
本文實現了視頻圖像的公網傳輸,視頻質量較為清晰,用戶無需到醫院現場輪流看監控視頻,只需通過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-),女,在讀碩士研究生,主要研究方向:兒童腦癱、傳統針灸、現代康復治療技術。