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