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