李 超,程小勁
(上海工程技術(shù)大學(xué) 機械工程學(xué)院,上海 201620)
煤氣、天然氣是現(xiàn)代家庭主要能源之一。由于煤氣、天然氣的泄露導(dǎo)致的中毒和火災(zāi)是高層住宅的重大隱患,每年因為燃氣泄露造成的火災(zāi)數(shù)不勝數(shù)。隨著經(jīng)濟的發(fā)展和人民生活水平的不斷提高,各式各樣的原材料制成的裝修材料進入家庭,而隨之釋放出來的有害氣體時刻威脅著大家的安全。其中甲醛是最為常見的有害氣體之一,具有強烈的致癌性[1]。與此同時,PM2.5也時刻威脅著家庭成員的健康[2]。目前,室內(nèi)環(huán)境參數(shù)監(jiān)測系統(tǒng)的多數(shù)功能較為單一,完成一個完整的監(jiān)測系統(tǒng)需要使用多個產(chǎn)品。對此,文中將傳統(tǒng)的監(jiān)控系統(tǒng)和環(huán)境監(jiān)測系統(tǒng)融合在一起,實現(xiàn)環(huán)境參數(shù)查詢、監(jiān)控查詢一體化。與此同時,還可以對參數(shù)進行閾值設(shè)置,當環(huán)境里的參數(shù)值超出閾值后會及時提醒,該系統(tǒng)可以滿足大多數(shù)室內(nèi)環(huán)境的監(jiān)測要求。后期還可以進行二次開發(fā)利用,可以方便地添加傳感器,使整個系統(tǒng)的功能更加豐富,數(shù)據(jù)保存在本地,采用封閉式的管理機制也可以保護數(shù)據(jù)的安全[3]。
基于Qt的室內(nèi)環(huán)境監(jiān)測系統(tǒng)(見圖1)由三部分組成,分別為Qt制作的客戶端、上位機和下位機。Qt是由Qt Company開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架[4-5]。經(jīng)過交叉編譯器編譯后,可以運行到ARM平臺上。Qt上主要實現(xiàn)用戶的注冊、登錄,環(huán)境參數(shù)的閾值設(shè)置以及環(huán)境參數(shù)的實時查看等功能。上位機由Cortex A9組成,移植Linux3.14的內(nèi)核和文件系統(tǒng),主要運行主程序[6-7]。下位機上連接有溫濕度傳感器、甲醛氣體傳感器、可燃氣體傳感器、蜂鳴器和繼電器等。
圖1 系統(tǒng)構(gòu)成
下位機采集到傳感器的數(shù)據(jù)后,通過RS232串口通信將數(shù)據(jù)發(fā)送給上位機。經(jīng)過上位機處理后,通過TCP/IP協(xié)議發(fā)送給Qt,并在Qt界面中顯示出來。Qt中設(shè)置的閾值通過TCP/IP協(xié)議發(fā)給上位機,與下位機采集到的數(shù)據(jù)進行對比,超出閾值,將會觸發(fā)蜂鳴器。攝像頭產(chǎn)生的數(shù)據(jù)流通過TCP/IP協(xié)議傳給Qt,實時顯示在Qt界面中。
基于Qt的智能家居環(huán)境監(jiān)測系統(tǒng)硬件部分包括顯示屏、三星的Exynos4412、STM 32、以及各種傳感器等,如表1所示。
表1 系統(tǒng)主要硬件信息
溫濕度傳感器采用的型號為DS18B20,具有體積小,硬件開銷低,精度高,抗干擾能力強等特點。其硬件電路簡單,功耗較小,測量范圍大。具體硬件連接電路如圖2所示[8-9]。
圖2 DS18B20溫濕度傳感器
PM2.5傳感器采用的型號為GP2Y1010-AU0F,具有封裝體積較小,可以檢測較小的粉塵,檢測時間短等優(yōu)點。具體電路如圖3所示[8-9]。
甲醛傳感器采用的型號為MS1100-P111VOC,該傳感器是一款原裝進口的半導(dǎo)體式VOC氣體傳感器,具有質(zhì)量好,測量精準度高,靈敏度好等優(yōu)點。具體電路如圖4所示[8-9]。
圖4 甲醛氣體傳感器
軟件部分由Qt制作的客戶端、上位機程序和下位機程序組成。
為了方便用戶管理,需要滿足如下幾個需求:
(1)使用SQLite建立數(shù)據(jù)庫,完成用戶的注冊和登錄。
(2)登錄成功后,進行數(shù)據(jù)顯示頁面,可以設(shè)置環(huán)境參數(shù)的閾值以及查看實時監(jiān)控信息。
為了實現(xiàn)以上需求,Qt的客戶端控制系統(tǒng)設(shè)計主要包括用戶界面UI、Socket通信、SQLite數(shù)據(jù)庫設(shè)計。
3.1.1 Qt客戶端注冊登錄界面
Qt控制程序注冊界面如圖5所示。由于該系統(tǒng)所需要存儲的數(shù)據(jù)量小,用戶注冊登錄的數(shù)量少,無需較大的數(shù)據(jù)庫,因此該客戶端采用Qt平臺內(nèi)置的SQLite數(shù)據(jù)庫。SQLite數(shù)據(jù)庫小巧,移植性高,維護方便,便于管理,并且對資源的需求較小。同時支持NULL、TEXT、BLOB、REAL等數(shù)據(jù)類型,滿足該應(yīng)用程序的開發(fā)使用。
Qt中提供了QSqlDatabase類,可以完成對SQLite數(shù)據(jù)庫的一系列操作。QSqlDatabase類提供了addDatabase方法完成數(shù)據(jù)庫的添加,setDatabaseName方法設(shè)置數(shù)據(jù)的名稱,exec()可以執(zhí)行SQLlite語句,完成數(shù)據(jù)的插入、查找、刪除等一系列基本操作[10]。
數(shù)據(jù)庫主要存儲以下信息:用戶名和密碼,各種環(huán)境參數(shù)(溫度、濕度、甲醛氣體濃度等),各種環(huán)境參數(shù)的閾值(溫度、濕度、甲醛氣體濃度等)。
圖5 Qt注冊登錄頁面
3.1.2 Qt主頁面顯示功能
Qt主頁面顯示功能包括各參數(shù)的閾值設(shè)置,獲取各參數(shù)并顯示。與此同時使用Qt中內(nèi)嵌的繪圖工具QCustomPlot創(chuàng)建customPlot類,將各個參數(shù)實時繪制成曲線并顯示。
3.1.3 Qt中基于Socket通信
在網(wǎng)絡(luò)通信方面,Qt提供了非常好的支持。針對TCP傳輸,Qt提供QTcpSocket類和QTcpServer類。針對UDP傳輸,Qt提供QUdpSocket類。TCP(transmission control protocol,傳輸控制協(xié)議)是一個底層網(wǎng)絡(luò)協(xié)議,應(yīng)用于大多數(shù)互聯(lián)網(wǎng)協(xié)議,如HTTP和FTP,進行數(shù)據(jù)傳輸。它是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,特別適合數(shù)據(jù)的連續(xù)傳輸。通過創(chuàng)建Socket對象,就可以通過打開輸入輸出流來進行通信[11]。
基于Qt中Socket通信的客戶端和服務(wù)器之間的通信實現(xiàn)步驟如下[12]:
(1)建立QTcpServer對象,通過bind()綁定Socket和端口號,通過listen()建立監(jiān)聽,等待客戶端發(fā)出的連接請求;
(2)建立QTcpSocket對象,通過connect()連接指定的服務(wù)器和端口,向服務(wù)器發(fā)出連接請求;
(3)服務(wù)器通過accept接收客戶端的連接請求并且實現(xiàn)服務(wù)器與客戶端的連接;
(4)客戶端通過send()發(fā)出命令和相應(yīng)數(shù)據(jù)給服務(wù)器;
(5)服務(wù)器通過recv()響應(yīng)客戶端的請求,并獲取客戶端的數(shù)據(jù);
(6)服務(wù)器處理數(shù)據(jù)后返回結(jié)果;
(7)客戶端接收服務(wù)器返回的結(jié)果;
(8)重復(fù)步驟3~7;
(9)結(jié)束連接,完成通信。
上位機采用三星公司生產(chǎn)的Exynos- 4412芯片,在Ubuntu 12.04的環(huán)境下完成Linux內(nèi)核的相關(guān)配置和編譯。采用Linux 3.14內(nèi)核,通過make menuconfig 配置內(nèi)核中的USB以及和視頻相關(guān)的USB-_GSPCA_ZC3XX、VIDEO_V4L2、USB-_GSPCA等[13]。配置好相關(guān)信息后,進行編譯,然后將做好的內(nèi)核移植到芯片上。
主程序采用多線程編程,通過pthread_creat()創(chuàng)建多線程,在線程中初始化串口實現(xiàn)溫濕度讀取,可燃氣體監(jiān)控,甲醛氣體濃度讀取以及TCP/UDP通信。
下位機采用STM 32連接溫濕度傳感器DS18b20、甲醛氣體傳感器MS1100、可燃氣體傳感器MQ-2等,獲取各傳感器的數(shù)值后,通過RS232將數(shù)據(jù)傳給上位機[14]。
設(shè)計了一種室內(nèi)環(huán)境監(jiān)控系統(tǒng),克服了傳統(tǒng)系統(tǒng)的局限性,具有移動性強、簡單、可靠、經(jīng)濟、便于維護等優(yōu)點。通過測試,客戶端運行流暢,既可以運行在Windows上也可以運行在ARM相關(guān)平臺上。該系統(tǒng)能夠完成用戶的注冊和登錄,實時查看當前環(huán)境的溫濕度、甲醛氣體濃度、可燃氣體是否超出設(shè)置的閾值等關(guān)于環(huán)境的信息。
該系統(tǒng)可以實時查看和掌握室內(nèi)環(huán)境的各種環(huán)境參數(shù),可以設(shè)置各種參數(shù)的閾值。系統(tǒng)采用計算機和嵌入式相關(guān)技術(shù),使用無線通信的方式,具備較強的通用性,易于移動,并且在該系統(tǒng)上可以做二次開發(fā),具備較強的擴展性。采用的硬件簡單便宜,通用性好,便于更換,具有穩(wěn)定可靠、成本低廉等特點。