《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Linux和Qt的智能家居系統的設計與實現
基于Linux和Qt的智能家居系統的設計與實現
來源:電子技術應用2012年第4期
劉治國,陳新華
山東科技大學 信息科學與工程學院,山東 青島266590
摘要: 針對智能家居的特點及功能,提出一種家庭多功能控制系統的設計方案。系統采用飛思卡爾公司的i.MX51處理器作為MCU,在Linux平臺上搭建了LTIB開發環境,實現了開發板上的GUI界面顯示。詳細論述了客戶端與服務器的Socket多線程通信和音視頻同步傳輸的設計過程。測試結果表明,系統穩定可靠、易于操作,基本達到了設計目標。
中圖分類號: TP277
文獻標識碼: A
文章編號: 0258-7998(2012)04-0023-04
Design and implementation of smart home system based on Linux and Qt
Liu Zhiguo,Chen Xinhua
College of Information Science and Engineering,Shandong University of Science and Technology,Qingdao 266590,China
Abstract: By analyzing the features and functions of smart home, this paper proposes a design of family multi-function control system. The system uses Freescale's i.MX51 processor as the MCU, and builds a LTIB embedded environment on the Linux platform, a GUI interface ultimately displays on development board. This paper discusses multithread communication with TCP/IP Socket and synchronized transmission of audio/video between the client and the server. Test results show that the system is stable and reliable, easy to operate, and reaches the design goals.
Key words : smart home;Linux;Qt;Freescale;multithread communication;synchronized transmission of audio/video

    針對智能家居的特點及應用背景,設計了一種家庭多功能控制系統。該系統采用飛思卡爾公司ARM Cortex A8系列的i.MX51處理器作為MCU,在其上移植嵌入式Linux作為軟件開發平臺,并利用Qt相關技術為基礎設計友好的用戶界面,實現了ARM板的各功能模塊與服務器端的交互。系統同時具備數字可視對講、信息收發、家電控制、安防報警、家庭娛樂等功能。

1 系統的架構和功能
    家庭智能控制系統主要由室內分機、單元門口機、小區圍墻機、管理中心終端機、管理中心服務器以及附件組成。系統采用分布式網絡結構,可以根據住戶數量對系統的容量進行擴充。
    (1)室內機是用戶在室內進行操作的主要平臺,其功能組成為:可視對講、信息服務、家電控制、安防報警、家庭娛樂等??梢晫χv模塊主要實現雙向可視通話、視頻監控、留言/留影、開鎖等功能;信息服務模塊主要用來收發物業信息和小區廣播,支持文本、圖片形式,并實現與可視對講模塊的影音共享;家電控制模塊包括對燈光、窗簾、空調、電梯等設施的無線控制,并預設了情境模式;安防報警模塊支持對煙感、門磁、煤氣泄漏檢測等的自動報警,并可通過GPRS/3G技術將報警信息傳送到用戶手機上;家庭娛樂模塊支持常見格式的音視頻文件的播放(主要依靠硬件解碼)以及對常見格式的圖片的瀏覽(電子相框)。
    (2)單元門口機的主要功能是完成與所在單元樓的任意住戶以及管理中心機的可視通話,除了具備留言/留影功能外,還提供觸摸屏校準、背光調節、密碼設置等功能。
    (3)圍墻機的基本功能和單元門口機類似,但可視對講、留言/留影功能是針對小區內所有住戶的。
    (4)中心機是整個系統的神經中樞,管理人員通過管理中心的控制設備管理各子系統的終端,其功能包括:可視對講、視頻監控、查看報警信息、排除設備故障、信息服務、系統設置、遠程管理等。
2 系統的實現方案
2.1 Qt的信號/槽機制

    Qt是一個跨平臺的C++應用程序框架,完全面向對象、易于擴展且允許真正的組件編程。Qt的C++類庫封裝了適應不同操作系統的訪問細節,這使得它能夠快速地部署于各種桌面與嵌入式系統中[1]。
    信號/槽機制是 Qt 的核心特性,這種機制真正實現了消息的封裝,完全可以取代原始的回調和消息機制。信號和槽的連接通過connect()函數完成,connect()函數是QObject類中的靜態函數,其函數原型如下:
    Bool QObject::connect(const QObject* sender,
const char*signal,const QObject* receiver,const char* member)
其中,sender和receiver是指向QObject的指針,signal和slot是不帶有參數的函數名。
2.2 基于XML格式的Socket多線程通信
    Linux中的網絡編程主要通過Socket接口實現,在Qt環境里,對Socket進行了封裝,并建立了相應的QTcpSocket類來實現TCP客戶端和服務器的通信。QTcpSocket繼承了QIODevice,所以QTcpSocket可以使用QDataStream進行數據的讀取和寫入。
    可擴展標記語言XML(eXtensible Markup Language)是一種用于數據交換和數據存儲的多用途文本格式。對于XML格式的數據,Qt中的QtXml模塊提供了DOM和SAX兩種處理方式。本文采用的DOM方式把XML文檔轉換成一個可以遍歷的樹形結構,這樣便可以隨意訪問其中的節點,因此要明顯簡潔得多。
    室內機和中心機之間的通信采用多線程方式實現。多線程方式具有降低內存、提高程序響應速度等優點,特別適用于嵌入系統。系統中建立了三個主線程:(1)GUI線程:用于執行main()主函數,響應用戶的界面操作;(2)tcpServer偵聽線程:用于對指定端口進行監聽;(3)tcpSocket傳輸線程:負責消息的接收和回復。下面以用戶主動更新小區廣播為例詳細說明Socket通信的流程:(1)室內機首先啟動一個線程,將用戶的更新請求結構轉化成標準的XML格式(如果是新設備第一次開機,要先手動進行IP的設置),(2)調用connectToHost()函數請求與中心機建立連接,處于監聽狀態的中心機接到請求后,就會分配一個Socket套接字來處理連接:首先根據解析出來的XML的Type節點判斷請求類型,如果是純文本則從數據庫的Text表讀取,如果是圖片則從硬盤讀取,然后調用QIODevice::write()函數發送;(3)室內機接到應答信號readyRead()后就開始進行信息的收取,根據消息的Type節點類型分別寫入數據庫和硬盤。Socket多線程通信流程如圖1所示。

2.3 并行數據庫設計
    為了實現數據庫的并行操作,使GUI界面與數據庫相分離,從而讓界面能更快地響應用戶的一般操作,同樣要用到Qt的多線程編程。在系統啟動時,首先要建立一個全局對象m_query,以便于各個實體類與數據庫類進行連接。這樣,每當有數據庫操作請求時便會實例化一個m_query來創建一個線程用于處理該請求。m_query對象中包含兩個類:(1)QueryThread,用于為每個數據操作創建一個線程;(2)Worker,用于實現數據庫的相關操作,如加載數據庫驅動、進行數據查詢/插入/刪除等。
    圖2為數據庫的查詢操作流程。首先在實體類里創建兩個connect連接,分別用于發送和接收查詢結果,并生成SQL語句向QueryThread提交查詢請求信號。QueryThread收到請求后為其創建一個線程,并交由Worker類進行具體數據庫查詢操作。Worker類得出查詢結果后,先傳遞給QueryThread,再由其將查詢結果返回到實體類。

    關鍵代碼如下:
    connect( this,SIGNAL(seek(const QString& ) ),m_query,
SIGNAL(seek_execute(const QString& )) );
    connect( m_query,SIGNAL(seek(const QList<QSqlRecord>
& ) ),this,SLOT( slotResult( const QList<QSqlRecord>& ) ) );
    &hellip;
    void text:: database() {
      QString sql = "select * from Text order by date desc ";
      emit seek_execute (sql);
    }
2.4 音視頻同步傳輸技術
    i.MX51處理器包含了支持硬件視頻編解碼的VPU單元,并自帶了完整的多媒體解決方案。因此,系統中采用其自帶的多媒體軟件包進行音視頻流的采集和編解碼[2]。
    考慮到小區內可視通話時因并發數過大而可能導致的網絡擁塞情況,系統還需要提供一定的QoS機制來保證在網絡帶寬較低時也能達到音視頻的同步傳輸。本文采用基于時間戳的實時同步傳輸技術,通過設置可變大小的緩沖區機制,根據小區網絡情況自動調節傳輸參數,以音頻質量優先保證為原則,根據時間戳實時調節視頻數據的播放。具體實現過程如下[3]:
    (1)發送端采用兩個獨立的進程分別對音視頻信息進行采樣和打包,然后放到各自的緩沖隊列中等待發送。
    (2)音視頻數據通過同一個通道發送到網絡(采用信號量機制保證音視頻數據對通道的互斥訪問)。
    (3)由于音視頻兩個數據包的長度差別很大,所以將接收端收到的數據根據包的大小進行區分。
    (4)音視頻各自拆包組幀。由于人的聽覺對聲音的不連續比視覺對圖像的不連續更敏感,所以采用音頻流作為主流,視頻流作為從流??蛻舳私邮盏揭纛l數據包后,不必與視頻數據包協調就可立即播放,而視頻幀到達時則根據時間戳進行對比,從而進行相應的同步處理。
    (5)為保證音視頻的實時同步,采用多線程分別對音頻和視頻進行播放。
3 i.MX51平臺移植
3.1 搭建LTIB開發環境

 


    LTIB(Linux Target Image Builder)是飛思卡爾公司開發的一個用于部署BSP的工具,含有U-Boot等引導加載程序,支持Bootloader和內核映像的構建。利用該工具,可以定制出符合GNU/Linux標準的跨平臺的根文件系統。本設計選擇使用飛思卡爾公司提供的L2.6.31_10.07.11_
ER_source.tar.gz集成源碼包,在一臺安裝了Ubuntu 10.04操作系統的PC機上配置安裝LTIB[4]。其過程如下:

    (1)解壓縮源碼包,執行./install進入安裝LTIB的命令提示。
    (2)執行./ltib進入LTIB的配置界面。
    (3)在LTIB配置Platform時選擇i.MX51平臺。
    (4)配置Kernel時選擇CLAA WVGA Panel(LCD觸摸屏驅動)和SoC Audio support for IMX - SGTL5000(聲卡驅動),其他保持默認。
    (5)將交叉編譯工具arm-none-linux-gnueabi-gcc加入PATH環境變量,在ltib根目錄執行下述命令,交叉編譯Qt庫:
    ./ltib -m prep -p qt-embedded.spec
    ./ltib -m scbuild -p qt-embedded.spec
    (6)執行make install,在ltib下的rootfs目錄就會生成相應的U-Boot、內核和文件系統,將將其復制到目標板的TF卡上。
3.2 架設NFS文件系統
    為了簡化調試過程和縮短開發周期,在Linux主機上建立了NFS網絡文件系統,這樣就實現了宿主機與目標板的文件共享。開發過程簡化為:Linux主機編譯生成目標平臺的可執行文件&rarr;復制文件到NFS共享目錄&rarr;目標板運行程序,從而省去了重復制作鏡像、下載鏡像、重啟開發板等步驟,節省了大量的開發時間。目標板的NFS啟動信息如圖3所示。

4 系統測試及結果
4.1 并發測試

    并發測試主要用來測試多個用戶同時訪問同一個應用程序、同一個數據記錄時是否存在死鎖或其他問題。由于本系統是面向一個小區的住戶,因此系統的并發測試尤為重要。
    數據庫并發測試:室內機開啟多個線程同時訪問中心機服務器,界面并不會因大量的數據操作而出現&ldquo;凍結&rdquo;現象,CPU占用穩定,數據庫返回結果顯示正常。
    信息發布測試:中心機開啟多個線程同時發送廣播信息,各室內機接收正常,不會出現顯示錯誤或&ldquo;丟包&rdquo;現象。
4.2 跨網段測試
    考慮到小區用戶一般在幾百甚至上千,一個網段的IP地址不能滿足需求。為了檢測在不同網段下通信模塊能否正常工作,使用一臺華為S5300交換機(switch)和兩臺華為5200交換機搭建了一個小型的網絡環境進行相關測試。如圖4所示,測試采用IPv4靜態路由,使不同網段的任意兩臺室內機之間能夠互通。測試表明,分屬不同網段的室內機之間,可視通話、信息互發等模塊均正常工作,從而驗證了本設計方案的可行性。

4.3 可視對講性能測試
    可視對講性能測試主要是檢測室內機終端中音視頻的采集、編解碼、收發和顯示。對于音視頻的采集、收發和顯示,可通過揚聲器和LCD顯示直觀地檢測。而對編解碼的測試則比較復雜,本設計是從最長時間、最短時間和平均時間三個方面來測試編解碼一幀音視頻所需要消耗的時間。i.MX51平臺上音視頻編解碼的性能測試如表1所示。

    由表1可以看出,i.MX51平臺上能夠實時地完成音頻和視頻通信,且音頻清晰、視頻流暢、失真度小,達到了可視對講對音視頻編解碼器的實時性要求。
    本文采用Linux和Qt相關技術,在飛思卡爾公司i.MX51平臺上設計了一種多功能的智能家居控制系統,實現了客戶端與服務器的Socke通信和音視頻同步傳輸等核心功能。下一步還需要擴展家電控制、安防控制等功能。

參考文獻
[1] 楊瀟.基于Qt的富客戶端軟件設計與實現[D].成都:電子科技大學,2009.
[2] BLANCHETTE J,SUMMERFIELD M.C++ GUI programming  with Qt4,second edition[M].北京:電子工業出版社,2008.
[3] Freescale Cooperation.i.MX51_EVK_Linux_BSP_userguide.  2010.
[4] RICQUEBOURG V,DURAND D,MENGAETAL D.Context  inferring in the smart home:an SWRL approach[C].21st International Conference on Advanced Information Networking  and Applications Workshops(AINAW'07).IEEE CS Press, 2007.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久精品观看| 国产精品国产精品国产专区不蜜| 国产欧美精品在线观看| 亚洲国产成人av在线| 欧美日本二区| 欧美一级大片在线观看| 蜜臀久久久99精品久久久久久| 日韩一级黄色av| 麻豆久久精品| 亚洲欧美另类在线| 欧美日韩成人免费| 久久国产精品久久久| 欧美三级在线播放| 亚洲黄色大片| 国产一区二区在线免费观看| 亚洲视频观看| 一区二区三区四区蜜桃| 欧美一区=区| 亚洲视频一区在线| 黄色日韩网站| 久久精品国产96久久久香蕉| 在线一区二区三区四区五区| 免费的成人av| 亚洲国产精品123| 国产亚洲永久域名| 久久国内精品自在自线400部| 亚洲视频欧洲视频| 欧美日韩ab片| 国产精品99久久不卡二区| 亚洲人人精品| 欧美日本亚洲视频| 99视频有精品| 亚洲欧洲另类国产综合| 欧美高清视频在线 | 午夜精品久久久久久久白皮肤| 欧美日韩午夜视频在线观看| 一本色道久久99精品综合| 亚洲精品国产日韩| 欧美视频在线观看视频极品| 亚洲调教视频在线观看| 亚洲午夜影视影院在线观看| 国产欧美一区二区视频| 久久久www成人免费无遮挡大片 | 欧美日韩国产成人| 亚洲午夜在线观看视频在线| 亚洲视频中文| 国产综合亚洲精品一区二| 欧美69视频| 亚洲一区在线视频| 欧美有码在线视频| 亚洲精品少妇30p| 国产伦精品一区二区三区在线观看| 午夜视频在线观看一区二区| 欧美一区二区三区婷婷月色| 亚洲国产一区二区三区青草影视| 欧美午夜片在线免费观看| 久久av二区| 日韩一区二区精品| 亚洲午夜极品| 亚洲日本va午夜在线影院| 国产精品任我爽爆在线播放| 久热精品视频在线观看| 亚洲一级高清| 亚洲人成精品久久久久| 日韩视频在线观看| 黑人中文字幕一区二区三区| 欧美日韩三级| 久久亚洲综合色一区二区三区| 亚洲一区二区免费| 亚洲黄色一区| 久久精品亚洲| 亚洲一区二区三区在线观看视频| 亚洲国产精品久久久久秋霞蜜臀| 亚洲自拍都市欧美小说| avtt综合网| 亚洲精品自在在线观看| 在线免费日韩片| 极品日韩久久| 黄色精品网站| 国内精品久久久久久久影视蜜臀| 国产精品狼人久久影院观看方式| 欧美高清视频在线播放| 久久免费视频在线观看| 久久精品视频导航| 久久国产精品黑丝| 欧美在线三级| 久久av一区| 久久久久久久国产| 欧美在线欧美在线| 久久精彩免费视频| 久久国产一区| 久久免费高清视频| 蜜桃av综合| 欧美理论视频| 欧美三级欧美一级| 国产精品日本一区二区 | 欧美另类专区| 国产精品国产福利国产秒拍| 国产精品福利久久久| 欧美性猛交视频| 国产日韩亚洲欧美综合| 在线观看欧美| 99精品热视频| 亚洲欧美成人精品| 久久国产精品第一页| 99国产精品久久久久久久成人热| 亚洲一区二区三区在线播放| 欧美在线视频在线播放完整版免费观看 | 亚洲国产欧美日韩另类综合| 亚洲欧洲在线免费| 午夜视频在线观看一区| 亚洲看片网站| 性欧美1819sex性高清| 美女视频网站黄色亚洲| 欧美婷婷久久| 伊人久久婷婷| 亚洲午夜激情在线| 亚洲人成在线观看一区二区| 亚洲无限乱码一二三四麻| 久久久噜噜噜久久狠狠50岁| 欧美日韩国产影院| 国外成人在线视频网站| 99亚洲精品| 亚洲精品女人| 久久免费视频在线观看| 国产精品久久久久久模特 | 国产精品一区二区在线观看网站 | 国产亚洲欧美中文| 9l国产精品久久久久麻豆| 久久国内精品自在自线400部| 在线一区二区三区四区| 欧美电影免费观看网站| 韩国自拍一区| 欧美一区二区在线| 欧美一级在线亚洲天堂| 欧美日韩中文字幕精品| 亚洲人永久免费| 99国产精品自拍| 欧美成人在线免费观看| 一区在线免费观看| 亚洲福利一区| 免播放器亚洲| 亚洲国产精品成人久久综合一区| 欧美一区三区三区高中清蜜桃| 亚洲电影一级黄| 老司机免费视频一区二区三区 | 亚洲另类黄色| 欧美刺激性大交免费视频| 尤物精品在线| 99riav1国产精品视频| 欧美日韩mv| 亚洲一区二区在线播放| 久久精品国产亚洲5555| 国产亚洲一区二区三区在线播放| 欧美夜福利tv在线| 鲁大师影院一区二区三区| 影音先锋日韩有码| av成人福利| 国产精品亚洲综合久久| 性久久久久久久久| 免费成人在线观看视频| 99国产一区二区三精品乱码| 亚洲综合色在线| 黑人一区二区| 亚洲一二三区视频在线观看| 国产精品一区久久久| 亚洲激情电影中文字幕| 国产精品久久777777毛茸茸| 午夜亚洲精品| 欧美日韩 国产精品| 欧美一区激情视频在线观看| 欧美成人精品福利| 亚洲在线播放| 欧美日韩精品一区| 久久激情久久| 国产精品久久97| 91久久香蕉国产日韩欧美9色| 欧美日韩一区二区高清| 久久国产精品亚洲va麻豆| 欧美日韩在线播| 亚洲国产精品传媒在线观看| 国产精品久久久久影院色老大 | 国产精品日韩二区| 亚洲人成在线影院| 欧美日韩国产探花| **欧美日韩vr在线| 一区二区三区www| 在线观看国产欧美| 久久精品人人做人人爽| 一区二区三区欧美日韩| 欧美激情久久久久| 亚洲韩国精品一区| 激情久久五月天| 久久aⅴ国产欧美74aaa| 亚洲在线第一页| 国产精品jizz在线观看美国 | 一本一本久久| 欧美日韩国产综合视频在线观看中文 | 尤物yw午夜国产精品视频| 久久精品久久综合|