張紅艷 王 萍 張振亞
(安徽建筑大學 電子與信息工程學院,安徽 合肥 230601)
溫濕度數(shù)據(jù)采集是建筑物聯(lián)網(wǎng)的最基本應用之一,溫濕度傳感器在應用系統(tǒng)程序的設定下能夠定時的采集當前環(huán)境下的環(huán)境溫濕度數(shù)據(jù),并將采集到的數(shù)據(jù)在應用系統(tǒng)中實時顯示,用戶在客戶端就能夠?qū)崿F(xiàn)實時且智能的掌握環(huán)境溫濕度信息。應用系統(tǒng)軟件為用戶提供了一種便捷和實時收集環(huán)境參數(shù)的途徑,可以根據(jù)用戶需求查詢歷史環(huán)境溫濕度數(shù)據(jù),還可以根據(jù)用戶的需求選擇特定時間段內(nèi)的環(huán)境溫濕度數(shù)據(jù)變化曲線等功能。
基于Arduino 的溫濕度數(shù)據(jù)采集系統(tǒng)由兩部分組成,一部分時溫濕度數(shù)據(jù)采集與發(fā)送硬件平臺,另一部分是基于所實現(xiàn)硬件平臺的數(shù)據(jù)采集與發(fā)送程序。因此,本系統(tǒng)設計的任務也由硬件設計和軟件設計兩個子任務組成。對硬件設計子任務,需要對硬件的選型、硬件原理闡述的基礎(chǔ)上給出硬件平臺的設計方案并實現(xiàn);而對軟件設計子任務,需要基于所設計的硬件平臺,設計并實現(xiàn)建筑物內(nèi)建筑環(huán)境中溫度、濕度數(shù)據(jù)的采集的程序。
本系統(tǒng)總體框圖如圖1 所示,本文使用Arduino UNO R3 開發(fā)板和DHT11 溫濕度傳感器來實現(xiàn)測量和數(shù)據(jù)采集模塊功能,控制模塊主要將DHT11 溫濕度傳感器采集到的數(shù)據(jù)進行讀取并實現(xiàn)對DHT11 溫濕度傳感器采集周期和數(shù)據(jù)顯示格式進行設定;數(shù)據(jù)處理與通信模塊實現(xiàn)對DHT11 溫濕度傳感器數(shù)據(jù)的收集、處理并通過Wifi 網(wǎng)絡將處理后的數(shù)據(jù)傳輸?shù)綉孟到y(tǒng)程序模塊,應用系統(tǒng)程序模塊實現(xiàn)了對采集的建筑室內(nèi)溫濕度數(shù)據(jù)進行數(shù)據(jù)庫數(shù)據(jù)存儲功能、查詢建筑室內(nèi)環(huán)境溫濕度的具體參數(shù)、溫濕度數(shù)據(jù)的實時顯示和數(shù)據(jù)曲線展示等功能。
圖1 系統(tǒng)總體框圖
該溫濕度數(shù)據(jù)采集系統(tǒng)軟件的設計考慮基于B/S 架構(gòu)采用java 編程語言來實現(xiàn),主要希望實現(xiàn)以下的功能:
2.2.1 實現(xiàn)對建筑環(huán)境溫濕度的感知、采集。
2.2.2 實現(xiàn)對建筑環(huán)境溫濕度的獲取。
2.2.3 實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)存儲功能。
2.2.4 可以查詢建筑環(huán)境溫濕度的具體參數(shù)。
2.2.5 實現(xiàn)溫濕度數(shù)據(jù)的實時顯示和數(shù)據(jù)曲線展示。
2.2.6 實現(xiàn)對歷史數(shù)據(jù)進行記錄,可以對數(shù)據(jù)進行分析和查詢。
首先,查閱Arduino UNO 開發(fā)板、DHT11 溫濕度傳感器和Wifi 模塊相關(guān)引腳說明,然后,使用面包板將DHT11和Arduino UNO 開發(fā)板連接,使用USB 線纜將Arduino UNO 開發(fā)板和計算機連接。完成采集程序的編碼,在源程序經(jīng)過驗證/編譯后上傳到Arduino UNO R3 開發(fā)板后,保持Arduino UNO R3 開發(fā)板與上位機通過USB 線纜的連接,硬件平臺上電。
主要是通過讓服務器端持續(xù)的監(jiān)聽數(shù)據(jù)發(fā)送端的請求,一旦讀取到數(shù)據(jù),則根據(jù)設定好的數(shù)據(jù)格式完成數(shù)據(jù)的提取存入數(shù)據(jù)庫,并實時顯示在曲線圖上。
首先需要建立一個數(shù)據(jù)庫DB,并在數(shù)據(jù)庫中建立相關(guān)數(shù)據(jù)表;其次執(zhí)行與數(shù)據(jù)庫建立連接操作,與數(shù)據(jù)庫建立好連接之后,我們就可以執(zhí)行相應的SQL 存儲語句,最后,數(shù)據(jù)庫操作完成后,關(guān)閉與數(shù)據(jù)庫的連接,具體操作如下所示:
建立一個SQL server 2008 數(shù)據(jù)庫DB,在DB 數(shù)據(jù)庫中建立DataRecord 表,列名和數(shù)據(jù)類型的設置如圖2 所示。載入驅(qū)動及連接數(shù)據(jù)庫程序過程如下所示:
圖2 DataRecord 表列名和數(shù)據(jù)類型的設置
其中com.microsoft.sqlserver.jdbc.SQLServerDriver 為該驅(qū)動程序的名稱,Connection 的對象conn 代表與數(shù)據(jù)庫的連接,DriverManager 負責管理驅(qū)動程序,作用于用戶和驅(qū)動程序之間,在數(shù)據(jù)庫和相應的驅(qū)動程序之間建立連接。DriverManager.getConnection(URL,USER,PASSWORD)方法將建立與數(shù)據(jù)庫的連接。
建立數(shù)據(jù)庫連接的操作,通過定義一個getConnection()方法實現(xiàn),執(zhí)行SQL 存儲語句,通過定義一個InsertIntoTable(DataRecorddataRecord)方法,執(zhí)行結(jié)果是將dataRecord 里的DHT11 溫濕度傳感器采集到的溫度數(shù)據(jù)、濕度數(shù)據(jù)和采集時間插入到數(shù)據(jù)庫表DataRecord 里,并返回是否存儲成功。
關(guān)閉數(shù)據(jù)連接的操作,通過定義一個closeConnection()方法來實現(xiàn)。
查詢建筑環(huán)境溫濕度的具體參數(shù)的過程實際上就是向數(shù)據(jù)庫里查找相應的數(shù)據(jù),我們定義了一個SelectFromTable(String sqlString)方法,其中sqlString 為查詢條件為查詢的條件,返回的是符合查詢條件的數(shù)據(jù)列表dataRecords。
主要是通過對溫度歷史數(shù)據(jù)和濕度歷史數(shù)據(jù)的查詢結(jié)果進行分析,反映一定規(guī)律或者是得到相關(guān)的數(shù)據(jù),比如:某個時間段的平均溫度、平均濕度或最高溫度及歷史曲線等,數(shù)據(jù)曲線展示就是將歷史數(shù)據(jù)通過曲線的方式表。
web 文件編碼部分主要是對
和的描述。首先要安裝數(shù)據(jù)庫,如本文選用SQl server 數(shù)據(jù)庫,安裝完成后進行網(wǎng)絡配置,運行命令框進行網(wǎng)絡測試,如本機設定IP 端口號為1433,在命令框輸入telnet 127.0.0.1 1433 進行測試;
其次完成tomcat 的安裝和配置;
最后運行服務器后,打開應用系統(tǒng)。
4.2.1 實現(xiàn)對建筑環(huán)境溫濕度的感知、采集和獲取
對建筑環(huán)境溫濕度的感知、采集是否成功可以通過對Arduino UNO 開發(fā)板相應模塊指示燈的觀察得知,而實現(xiàn)對建筑環(huán)境溫濕度數(shù)據(jù)的獲取主要是通過讓服務器端持續(xù)的監(jiān)聽數(shù)據(jù)發(fā)送端的請求,一旦讀取到數(shù)據(jù),則根據(jù)設定好的數(shù)據(jù)格式完成數(shù)據(jù)的提取。若數(shù)據(jù)提取成功,則存入數(shù)據(jù)庫成功。
4.2.2 實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)存儲功能
當應用程序監(jiān)聽到有數(shù)據(jù)接收時,通過定義的插入方法執(zhí)行SQL 存儲語句,將DHT11 溫濕度傳感器采集到的溫度數(shù)據(jù)、濕度數(shù)據(jù)和采集時間插入到數(shù)據(jù)庫表里,并返回是否存儲成功,存儲成功后在數(shù)據(jù)庫表里就可以看到最下一行新增加的數(shù)據(jù),如圖3 所示。
圖3 表數(shù)據(jù)存儲
4.2.3 查詢建筑環(huán)境溫濕度的具體參數(shù)的測試
用戶可以根據(jù)需求選擇不同的查詢條件和查詢時間的選擇,通過點擊查詢按鈕,查詢相關(guān)的參數(shù)信息。例如查詢濕度的最大值和最小值,過程如圖4-6 所示。
圖4 選擇查詢條件
圖5 選擇查詢開始日期和結(jié)束日期
圖6 結(jié)果查詢顯示
4.2.4 實現(xiàn)溫濕度數(shù)據(jù)的實時顯示的編碼
當啟動應用系統(tǒng)通信功能時,可以實時的接收當前Arduino UNO 開發(fā)板采集到的溫濕度數(shù)據(jù),并顯示如圖7所示。
圖7 當前采集到的溫濕度數(shù)據(jù)顯示
4.2.5 實現(xiàn)對歷史數(shù)據(jù)進行記錄,隨時可以對數(shù)據(jù)進行分析和查詢;
實現(xiàn)將歷史數(shù)據(jù)保存在數(shù)據(jù)庫表里,可以隨時對數(shù)據(jù)庫表進行相應的查詢操作,并且實現(xiàn)對數(shù)據(jù)進行簡單分析功能??赏ㄟ^拆線的方式來顯示歷史溫濕度數(shù)據(jù)和當前溫濕度數(shù)據(jù),橫坐標表示時間,縱坐標表示溫度和濕度值,當鼠標放至曲線上時,也可讀取到相應時間上的溫度和濕度數(shù)據(jù),如圖8 所示。
圖8 歷史數(shù)據(jù)查詢
目前隨著物聯(lián)網(wǎng)技術(shù)的普及,特別是感知技術(shù)和接入技術(shù)的普及,為智能建筑中智能應用的設計與實現(xiàn)提供了新的支持。本實驗系統(tǒng)通過對溫濕度傳感器的數(shù)據(jù)采集控制,用戶通過客戶端實現(xiàn)實時獲取環(huán)境溫濕度數(shù)據(jù)并進行相應的數(shù)據(jù)分析處理操作,為后續(xù)相關(guān)應用打下基礎(chǔ)。該實驗可作為物聯(lián)網(wǎng)工程專業(yè)學生的綜合性、創(chuàng)新性實驗開放。