王維 康世英 張忠
摘要:現(xiàn)有的家居系統(tǒng)僅實(shí)現(xiàn)了對(duì)環(huán)境信息的監(jiān)測,缺乏智能性。針對(duì)該問題,本系統(tǒng)基于FS2410開發(fā)板,采用Linux操作系統(tǒng),使用C語言開發(fā),利用USB攝像頭采集圖像,Coretx-M0開發(fā)板采集溫濕度、光照等環(huán)境信息,借助Zigbee模塊發(fā)送到FS2410開發(fā)板搭建的服務(wù)器,用戶可以通過Web瀏覽器和Qt界面進(jìn)行遠(yuǎn)程實(shí)時(shí)監(jiān)控,同時(shí)在環(huán)境信息不符合用戶的需求時(shí)能進(jìn)行自動(dòng)調(diào)節(jié)。
Abstract: The monitoring of environmental information is implemented in the existing home system, but the intelligence is lacked. For this problem, this system adapted Linux operating system, FS2410 development board, C language, and used USB camera to collect images, Coretx-M0 development board to collect environmental information such as temperature, humidity, light and etc. The data is sent to the server built by FS2410 development board with Zigbee modules, and the server is sent to the client, users can remote real-time monitoring through Web browser and Qt interface. At the same time, the environmental information can be automatically adjusted when it does not meet the needs of the user.
關(guān)鍵詞:智能;嵌入式Linux操作系統(tǒng);FS2410;Cortex-M0;自動(dòng)調(diào)節(jié)
Key words: intelligence;embedded Linux operating system;FS2410;Cortex-M0;automatic adjust
中圖分類號(hào):TP368? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào):1006-4311(2020)05-0258-02
0? 引言
隨著嵌入式技術(shù)、物聯(lián)網(wǎng)技術(shù)、無線通信技術(shù)等技術(shù)的飛速發(fā)展,智能家居得到了廣泛的應(yīng)用。智能家居場景聯(lián)動(dòng)是智能家居系統(tǒng)提供的一種自動(dòng)化服務(wù),通過智能設(shè)備感知環(huán)境及場景變化,并自動(dòng)執(zhí)行相應(yīng)的動(dòng)作,全面提升用戶體驗(yàn)[1]。依據(jù)該思想,本系統(tǒng)使用攝像頭采集室內(nèi)視頻畫面,使用ARM Cortex-M0內(nèi)核的LPC111C14C開發(fā)板采集溫度、濕度和光照等環(huán)境信息;然后將硬件采集到的信息通過FS2410傳輸給PC機(jī)的Qt界面,同時(shí)能夠?qū)κ覂?nèi)環(huán)境條件進(jìn)行自動(dòng)調(diào)節(jié):當(dāng)溫濕度傳感器采集的溫度超過設(shè)定溫度,蜂鳴器報(bào)警,同時(shí)自動(dòng)開啟電機(jī)風(fēng)扇實(shí)施降溫處理;當(dāng)光敏傳感器采集到的光照信息小于設(shè)定值時(shí),蜂鳴器報(bào)警,自動(dòng)打開LED燈進(jìn)行光照增強(qiáng)處理。本系統(tǒng)具體硬件連接框圖如圖1所示。
1? 系統(tǒng)軟件設(shè)計(jì)
1.1 系統(tǒng)功能分析
本智能家居監(jiān)控系統(tǒng)主要包括以下模塊:
1.1.1 M0模塊
M0開發(fā)板負(fù)責(zé)采集室內(nèi)的溫度、濕度和光照等信息,借助M0開發(fā)板主板集成的ZigBee模塊將數(shù)據(jù)借助協(xié)調(diào)器發(fā)送給開發(fā)板。
1.1.2 攝像頭模塊
攝像頭通過USB接口連接到FS2410開發(fā)板,完成實(shí)時(shí)圖像采集。
1.1.3 服務(wù)器模塊
FS2410開發(fā)板作為服務(wù)器,需要移植JPEG庫,使用C語言編程。該模塊主要完成溫度、濕度、光照、圖像的采集信息,將攝像頭采集的YUYV格式圖片轉(zhuǎn)換為RGB24和JPEG,將采集的信息通過TCP協(xié)議傳給遠(yuǎn)程PC機(jī)的圖形界面,當(dāng)溫度、光照信息與設(shè)定信息不符時(shí),發(fā)送信息給M0開發(fā)板,控制蜂鳴器、電機(jī)風(fēng)扇或Led燈等硬件設(shè)備。
1.1.4 客戶端模塊
該模塊在PC機(jī)上使用QT語言開發(fā),主要完成登陸、與服務(wù)器連接、顯示溫度、濕度、光照和圖像信息,同時(shí)設(shè)置房間的溫度、濕度和光照信息,并進(jìn)行自動(dòng)調(diào)節(jié)。
1.2 系統(tǒng)詳細(xì)設(shè)計(jì)
1.2.1 服務(wù)器模塊(server)
服務(wù)器模塊主要是實(shí)現(xiàn)數(shù)據(jù)的解析和傳遞并完成對(duì)所有設(shè)備的控制。
首先,使用socket通信技術(shù)搭建服務(wù)器,創(chuàng)建socket套接字,然后用bind函數(shù)綁定端口號(hào)和本地地址,用listen函數(shù)監(jiān)聽是否有客戶端請(qǐng)求,如果發(fā)現(xiàn)客戶端有請(qǐng)求,用accept函數(shù)接收請(qǐng)求并處理,使用TCP傳輸協(xié)議,保證各個(gè)客戶端與服務(wù)器之間通信的可靠性。由于存在多個(gè)設(shè)備和客戶端,使用select函數(shù)同時(shí)監(jiān)聽多個(gè)請(qǐng)求。為了解決信息處理的并行性,用pthread_create線程函數(shù)。
1.2.2 攝像頭模塊
負(fù)責(zé)控制攝像頭進(jìn)行圖像采集,將采集的yuyv格式的圖像數(shù)據(jù)轉(zhuǎn)換為.jpeg格式,供其他設(shè)備讀取顯示。本功能依靠V4L2提供的API實(shí)現(xiàn)。video4linux2(V4L2)是Linux內(nèi)核的視頻設(shè)備驅(qū)動(dòng)程序,它為Linux視頻設(shè)備訪問提供了通用接口,在Linux系統(tǒng)中,V4L2驅(qū)動(dòng)的視頻設(shè)備在用戶空間通過各種ioctl調(diào)用進(jìn)行控制,并且可以使用mmap進(jìn)行內(nèi)存映射[2]。具體轉(zhuǎn)換算法如下:
①使用camera_open()函數(shù)打開攝像頭準(zhǔn)備采集視頻,使用camera_init()函數(shù)初始化,將攝像頭空間映射(nmap)到用戶空間,將申請(qǐng)到的緩沖區(qū)逐個(gè)入隊(duì),之后用start_camera()函數(shù)啟動(dòng)攝像頭開始采集,并用camera_dgbuf()緩沖區(qū)去保存,以上采集到的圖片是yuyv格式,yuyv是不可打開的圖片格式,需要借助yuyv圖片查看器才能查看。
②由于本系統(tǒng)需要在遠(yuǎn)程PC機(jī)端顯示,因此用yuv_to_rgb()函數(shù)將采集到的yuyv圖片轉(zhuǎn)化為rgb格式,用yuv_to_jpeg()函數(shù)將圖片轉(zhuǎn)化為jpeg格式,經(jīng)過網(wǎng)絡(luò)傳輸給PC機(jī)端的QT界面顯示。
③采用入隊(duì)、處理、出隊(duì)的方式使用while循環(huán)保持視頻的持續(xù)采集。
④停止使用攝像頭時(shí),用stop_camera()接口函數(shù)關(guān)閉攝像頭,停止圖像數(shù)據(jù)的采集,同時(shí)用camera_mmup()解除映射關(guān)系。
1.2.3 M0模塊
由于Linux操作系統(tǒng)中的設(shè)備看成文件處理,因此對(duì)M0開發(fā)板的操作在完成相應(yīng)的初始化工作后,整個(gè)過程即對(duì)文件進(jìn)行讀寫操作。M0開發(fā)板主要功能為獲取溫濕度和光照信息,在接收到環(huán)境數(shù)據(jù)包后,對(duì)數(shù)據(jù)進(jìn)行解析,該數(shù)據(jù)包由36位二進(jìn)制位構(gòu)成,其中第1位為id位,表示開發(fā)板主板編號(hào)信息,第4~5位為tmp位,表示溫度信息,第6~7位為bum位,表示濕度信息,第20~23位為light位,表示光照信息[3],因此取出這些位對(duì)應(yīng)的數(shù)據(jù)即可得到溫度、濕度和光照信息。在溫度達(dá)到設(shè)定值或光照不足時(shí),在發(fā)送數(shù)據(jù)中進(jìn)行相應(yīng)設(shè)置。發(fā)送命令包的第1位id表示M0開發(fā)板主板編號(hào),第2位len表示接收的數(shù)據(jù)長度,第4位opid表示設(shè)備命令(0~10)[3]。M0開發(fā)板獲取的傳感器數(shù)據(jù)借助USB轉(zhuǎn)串口傳輸?shù)紽S2410開發(fā)板。
①傳感器獲取數(shù)據(jù)模塊。
M0開發(fā)板的傳感器獲取數(shù)據(jù)后借助協(xié)調(diào)器使用ZigBee協(xié)議發(fā)送給M0,M0使用USB轉(zhuǎn)串口將數(shù)據(jù)發(fā)送給FS2410,具體獲取數(shù)據(jù)的過程如下:首先打開串口0,然后對(duì)串口初始化,讀取串口信息,即可獲取溫、濕度、光照信息。
②控制模塊的實(shí)現(xiàn)。
當(dāng)溫度、濕度或者光照信息不符合用戶的需求時(shí),可以實(shí)現(xiàn)對(duì)設(shè)備的自動(dòng)控制,使環(huán)境信息滿足用戶需求。該模塊主要包括對(duì)Led燈、風(fēng)扇、蜂鳴器的控制,實(shí)現(xiàn)方法基本相同,僅以風(fēng)扇為例進(jìn)行講解。
當(dāng)采集到的溫度信息不滿足用戶需求時(shí),系統(tǒng)會(huì)自動(dòng)發(fā)送控制命令給M0開發(fā)板,啟動(dòng)電機(jī)風(fēng)扇降溫,當(dāng)溫度信息達(dá)到用戶需求后,電機(jī)風(fēng)扇停止工作。
1.2.4 客戶端模塊
QT模塊主要搭建可視化人機(jī)交互界面,包括顯示圖片、溫度、濕度、光照信息及設(shè)置環(huán)境信息等功能,方便用戶的查看和調(diào)節(jié)。
此模塊主要功能包括:
①信息顯示。
用戶登陸需通過on_login_button_clicked()函數(shù)驗(yàn)證,通過端口和IP地址調(diào)用connectToHost(QHostAddress(“172.19.9.109”),9999)與服務(wù)器連接,在圖片經(jīng)過socket通信時(shí),用main_socket->write(request_a,30)函數(shù)請(qǐng)求接收?qǐng)D片,確定接收?qǐng)D片完整后用main_socket->write(request_a,strlen(request_a))獲取圖片的大小,最后用pixmap_loadFromData((const uchar *)picbuf,piclen,”JPEG”)顯示獲取的圖片。同理,溫濕度、光照信息通過自定義接口函數(shù),main_socket->read(response_env,sizeof(response_env))獲取。
②遠(yuǎn)程控制。
此部分主要實(shí)現(xiàn)對(duì)環(huán)境信息的處理及響應(yīng)。根據(jù)設(shè)定的溫、濕度和光照信息自動(dòng)監(jiān)控,達(dá)到設(shè)定值時(shí)蜂鳴器報(bào)警,同時(shí)進(jìn)行自動(dòng)調(diào)節(jié)。光照強(qiáng)度的調(diào)節(jié)借助on_lab_pushButton_clicked()函數(shù),當(dāng)光照太強(qiáng)時(shí)關(guān)閉LED燈,太弱時(shí)打開LED燈;溫度調(diào)節(jié)借助on_air_ctr_pushButton_clicked(),當(dāng)溫度達(dá)到設(shè)定值時(shí),需要開啟風(fēng)扇進(jìn)行降溫處理。
1.3 系統(tǒng)測試
本系統(tǒng)使用640*480的USB接口V4L攝像頭、FS2410開發(fā)板、M0開發(fā)板及相關(guān)數(shù)據(jù)線,使用一臺(tái)PC機(jī)或者筆記本作為客戶端,用網(wǎng)線連接構(gòu)成局域網(wǎng),然后通過超級(jí)終端調(diào)試程序。將攝像頭和M0板采集到的環(huán)境信息和視頻數(shù)據(jù)通過TCP協(xié)議傳輸?shù)絇C機(jī),在QT界面顯示。
通過測試,代碼成功運(yùn)行。登陸系統(tǒng)后即可實(shí)時(shí)采集圖像、溫度、濕度和光照信息,不間斷地傳輸?shù)角芭_(tái)顯示界面進(jìn)行實(shí)時(shí)顯示。
2? 結(jié)束語
在FS2410硬件平臺(tái)上基于Linux操作系統(tǒng)采用C/S模式構(gòu)建了智能監(jiān)控系統(tǒng),借助M0開發(fā)板實(shí)時(shí)獲取溫度、濕度和光照信息,借助攝像頭實(shí)時(shí)監(jiān)控,并能實(shí)現(xiàn)溫濕度和光照的自動(dòng)調(diào)節(jié)功能。該系統(tǒng)能夠在智能家居領(lǐng)域發(fā)揮較好的智能監(jiān)測和調(diào)節(jié)作用。
參考文獻(xiàn):
[1]肖丁,王乾宇,蔡銘,李秀.智能家居場景聯(lián)動(dòng)中基于知識(shí)圖譜的隱式?jīng)_突檢測方法研究[J].計(jì)算機(jī)學(xué)報(bào),2019,42(06):1190-1204.
[2]黃新,梁洋洋.基于V4L2嵌入式視頻監(jiān)控系統(tǒng)[J].儀器儀表用戶,2017(5):46-50.
[3]屈鵬.基于ARM和Linux的嵌入式智能家居網(wǎng)絡(luò)視頻監(jiān)控[D].天津理工大學(xué),2017.