齊京
摘 要:近年來,隨著高等職業教育的快速發展,高職院校開展項目設計成為潮流,加強高職院校師資隊伍的建設成為各院校的重點任務。教師們在企業人員的指導下開展項目設計是一個可行的途徑,這樣可以使教師具備豐富的專業實踐經驗和專業操作技能,有助于提高教師的科技創新和設計能力,這對高職院校教師在科研能力的建設上有著深遠的意義。
關鍵詞:環境監測 傳感器 服務器 客戶端
中圖分類號:G71 文獻標識碼:A 文章編號:1674-098X(2015)03(a)-0060-03
環境監測是通過對人類和環境有影響的各種物質的含量、排放量的檢測,跟蹤環境質量的變化,確定環境質量水平,為環境管理、污染治理等工作提供基礎和保證。簡單地說,了解環境水平,進行環境監測,是開展一切環境工作的前提。環境監測的目的是為了準確、及時、全面地反映環境質量現狀及發展趨勢,為環境管理、污染源控制、環境規劃等提供科學依據。
環境監測指通過計算機、傳感器、通信網絡等新技術,動態實時的獲取和監測環境的各項指標。本系統設計重點集中在空氣質量監測,對一個區域內的能夠代表空氣質量的污 染物例如PM2.5等進行監測。
1 環境監測系統的組成部分
(1)客戶端:客戶端運行在平板電腦上,操作系統采用Android系統,用戶可以通過平板電腦實時看到當前環境指標數值,比如co2濃度、PM2.5數值,空氣污染等級等。
(2)服務端:服務端運行在定制實驗箱硬件上,操作系統采用Android系統,服務端一方面接受客戶端數據讀取請求,給予響應;另一方面通過串口讀取外接zigbee模塊,采集到的環境指標數據。
(3)客戶端與服務端連接:通過wifi網絡連接。
(4)協調器:一個單片機,集成了zigbee模塊,與外部各種傳感器以及繼電器通信,傳感器以及繼電器也是集成了zigbee模塊。
(5)協調器與傳感器連接:傳感器和協調器之間通過zigbee通信。
(6)服務端與協調器:通過串口數據線連接。
2 系統架構
服務端系統主要入口在HTTPServerService, 它負責創建HttpServer和串口讀線程,一旦創建完畢,后續的串口讀線程周期采集(頻率依賴外部串口設備),串口數據保存到內存變量中。而Http Server則負責接收來自客戶端的請求,當請求到達時,創建一個線程處理該請求,線程內部首先解析請求,根據請求的參數區分進行后續的業務邏輯處理,業務邏輯處理過程會從內存變量中讀取采集到的串口數據,處理完畢后構造響應消息應答客戶端設備。
3 主要流程
采集串口傳感數據流程,采集串口傳感器數據包裝在SerialportService的CO2SensorTask類中,定時任務。任務開始時,延時一秒發送外設請求,數據通過handler回傳。線程循環讀取外部設備數據,當讀滿一個采樣周期完整的數據時,對該讀到的數據按照接口協議進行解析,解析出每個傳感數據的數值,并將原始采樣數值按照約定算法進行,結果數值轉換成用戶可以理解的數值,處理完畢后將一個采樣周期的串口數據放入內存數據結構。Http Server則負責接收來自客戶端的請求,當請求到達時創建一個線程處理該請求,線程內部首先解析請求,根據請求的參數區分進行后續的業務邏輯處理,業務邏輯處理過程會從消息隊列中讀取采集到的串口數據,處理完畢后構造響應消息應答客戶端設備。設備連接后,應用程序發送0x00, 0x31命令。外設接收到指令后,返回設備物理地址,后續發送數據,解析需要依據這些地址。
4 關鍵類設計
(1)MainActivity類:該類繼承自Activity類,負責服務端界面的繪制,響應來自界面的用戶操作,serverSwitch按鈕負責打開和關閉串口和http服務。控制串口,讀取串口數據有單獨service控制,并與MainActivity綁定,使得系統更穩定。http服務也是有單獨service控制。
(2)JasonHttpServer類:該類繼承自NanoHTTPD類,負責實現android平臺下的http server,在此基礎上完成了客戶端http請求消息的解析處理,并生成響應消息應答客戶端的請求。該類主要重載了NanoHTTPD的serve方法,serve函數負責處理http請求,根據請求的uri、header等信息,解析出body,并依據這些信息獲取相關數據,構造響應應答客戶端。
(3)SerialportService類:該類在OnStart()處被創建,并啟動串口讀線程,該線程負責讀取來自串口的數據并放入消息隊列。同時從sqlite中讀取用戶之前設置的各個傳感器告警閥值,啟動http服務等待客戶端請求。
(4)DatabaseUtil類:該類基于SQLite編寫,SQLite為手機客戶端提供數據存儲功能,并且有常用的增刪改查功能api,使用便捷。該類負責保存用戶信息,提供用戶登錄驗證和用戶添加。操作串口模塊采用開源項目android-serialport-api進行android平臺下串口數據讀寫操作。
(5)http server模塊:采用開源項目nanohttpd實現android平臺下的http server,在此基礎上完成了客戶端http請求消息的解析處理,并生成響應消息應答客戶端的請求。
5 CO2氣體傳感器
CO2氣體傳感器的特點:對CO2有良好的靈敏度和選擇性,受溫濕度的變化影響較小,具有良好的穩定性、再現性。應用領域包括:空氣質量控制系統,發酵過程控制,溫室CO2濃度檢測。工作原理:本傳感器采用固體電解質電池原理,元件加熱電壓由外電路提供,當其表面溫度足夠高時,元件相當于一個電池,其兩端會輸出一電壓信號,其值與能斯特方程符合得較好。元件測量時放大器的阻抗須在100—1000GΩ之間,其測試電流應控制在1pA以下。
6 溫濕度傳感器
溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器。它應用于工業COMS過程微加工技術,確保產品具有極高的可靠性與卓越的長期穩定性。其中包括:一個電容式聚合體測濕元件和一個能隙式測溫元件,并與一個14位的A/D轉換器以及串行接口電路在同一芯片上實現無縫連接。因此,該產品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優點。每個傳感器都在極為精確的濕度校驗室中進行校準。校準系數以程序的形式儲存在OTP內存中,傳感器內部在檢測信號的處理過程中要調用這些校準系數。兩線制串行接口和內部基準電壓,使系統集成變得簡易快捷。超小的體積、極低的功耗,使其成為各類應用甚至最為苛刻的應用場合的最佳選則。產品提供表面貼片LCC(無鉛芯片)或4針單排引腳封裝。
7 移動客戶端設計
移動客戶端使用Android手機,用戶通過界面點擊注冊按鈕,輸入用戶名、密碼、郵箱地址之后點擊確定觸發用戶注冊流程。注冊將用戶信息提交到服務端,持久化到sqlite數據庫。
注冊部分實現邏輯:
(1)注冊開始。
(2)在界面上輸入用戶名,密碼,郵件等必須信息。
(3)啟動注冊線程。
(4)使用用戶名密碼等數據構造HTTP請求和JASON BODY。
(5)向服務器端發送請求。
(6)服務器應收該請求。
(7)服務器對接到到的HTTP請求,分解JasonBody中的數據。
(8)對注冊信息進行校驗。通過則注冊成功成功。
(9)校驗不成功,是返錯誤代碼。
登錄部分功能說明:用戶通過登錄界面輸入用戶名、密碼之后點擊登錄界面觸發登錄流程。
登錄部分實現邏輯:
(1)用戶在登錄界面輸入用戶名,密碼等信息。
(2)啟動登錄線程。
(3)使用用戶名密碼等數據構造HTTP請求和JASON BODY。
(4)向服務器端發送請求。
(5)服務器應收該請求。
(6)服務器對接到到的HTTP請求,分解JasonBody中的數據。
(7)對注冊信息進行校驗。通過則注冊成功成功。
(8)校驗不成功,是返錯誤代碼。
空氣溫度監測功能說明:提供空氣溫度監測數值曲線顯示:在環境監測主界面能夠動態顯示空氣溫度的狀態曲線,顯示出空氣溫度的變換狀況。每個繪圖點的高度要能夠反映出所對應時間點的數值高度,在每個繪圖點的上方有所對應數值顯示。
空氣溫度監測實現邏輯:
(1)客戶端初始化曲線圖界面。
(2)啟動一個定時線程(定時間隔可調,默認為1秒)。
(3)將空氣溫度查詢指令構造為HTTP請求和JASON BODY。
(4)向服務端發送請求。
(5)服務端響應該請求。
(6)根據指令,讀取空氣溫度傳感器的當時數據。
(7)將空氣溫度傳感器的當時數據構造HTTP請求和JASON BODY。
(8)將HTTP請求返回客戶端。
(9)客戶端接收該數據后,解析該數據,并根據當前的值在界面上畫出對應的曲線。
空氣濕度監測功能說明:提供空氣濕度監測數值曲線顯示:在環境監測主界面能夠動態顯示空氣濕度的狀態曲線,顯示出空氣濕度的變換狀況。每個繪圖點的高度要能夠反映出所對應時間點的數值高度,在每個繪圖點的上方有所對應數值顯示。
空氣濕度監測實現邏輯:
(1)客戶端初始化曲線圖界面。
(2)啟動一個定時線程(定時間隔可調,默認為1秒)。
(3)將空氣濕度查詢指令構造為HTTP請求和JASON BODY。
(4)向服務端發送請求。
(5)服務端響應該請求。
(6)根據指令,讀取空氣濕度傳感器的當時數據。
(7)將空氣濕度傳感器的當時數據構造HTTP請求和JASON BODY。
(8)將HTTP請求返回客戶端。
(9)客戶端接收該數據后,解析該數據,并根據當前的值在界面上畫出對應的曲線。
土壤濕度監測功能說明:提供土壤濕度監測數值曲線顯示:在環境監測主界面能夠動態顯示土壤濕度的狀態曲線,顯示出土壤濕度的變換狀況。每個繪圖點的高度要能夠反映出所對應時間點的數值高度,在每個繪圖點的上方有所對應數值顯示。
土壤濕度監測實現邏輯:
(1)客戶端初始化曲線圖界面。
(2)啟動一個定時線程(定時間隔可調,默認為1秒)。
(3)將土壤濕度查詢指令構造為HTTP請求和JASON BODY。
(4)向服務端發送請求。
(5)服務端響應該請求。
(6)根據指令,讀取土壤濕度傳感器的當時數據。
(7)將土壤濕度傳感器的當時數據構造HTTP請求和JASON BODY。
(8)將HTTP請求返回客戶端。
(9)客戶端接收該數據后,解析該數據,并根據當前的值在界面上畫出對應的曲線。
光照強度功能說明:提供光照強度監測數值曲線顯示:在環境監測主界面能夠動態顯示光照強度的狀態曲線,顯示出光照強度的變換狀況。每個繪圖點的高度要能夠反映出所對應時間點的數值高度,在每個繪圖點的上方有所對應數值顯示。
光照強度實現邏輯:
(1)客戶端初始化曲線圖界面。
(2)啟動一個定時線程(定時間隔可調,默認為1秒)。
(3)將光照強度查詢指令構造為HTTP請求和JASON BODY。
(4)向服務端發送請求。
(5)服務端響應該請求。
(6)根據指令,讀取光照強度傳感器的當時數據。
(7)將光照強度傳感器的當時數據構造HTTP請求和JASON BODY。
(8)將HTTP請求返回客戶端。
(9)客戶端接收該數據后,解析該數據,并根據當前的值在界面上畫出對應的曲線。
二氧化碳濃度監測功能說明:提供二氧化碳濃度監測數值曲線顯示:在環境監測主界面能夠動態顯示二氧化碳濃度的狀態曲線,顯示出二氧化碳濃度的變換狀況。每個繪圖點的高度要能夠反映出所對應時間點的數值高度,在每個繪圖點的上方有所對應數值顯示。
二氧化碳濃度監測實現邏輯:
客戶端初始化曲線圖界面
(1)啟動一個定時線程(定時間隔可調,默認為1秒)。
(2)將二氧化碳濃度查詢指令構造為HTTP請求和JASON BODY。
(3)向服務端發送請求。
(4)服務端響應該請求。
(5)根據指令,讀取二氧化碳濃度傳感器的當時數據。
(6)將二氧化碳濃度傳感器的當時數據構造HTTP請求和JASON BODY。
(8)將HTTP請求返回客戶端。
(9)客戶端接收該數據后,解析該數據,并根據當前的值在界面上畫出對應的曲線。
主動報警功能說明:用戶輸入空氣濕度上限及下限(示例中為0和100)。設置完成后點擊“確定”按鈕,系統記錄該閾值后,當查詢到的數值不在這個區間范圍之內時,能主動修改報警狀態,并觸發對應的報警機構。
主動報警實現邏輯
(1)點擊空氣濕度界面“設置”按鈕,彈出空氣濕度閥值設置界面。
(2)輸入空氣濕度閾值上限及下限數據,點擊確認按鈕。
(3)當空氣濕度超過所設定的上門限或下門限時,主界面中將顯示空氣濕度告警,(示例中空氣濕度數值為212,已經超過上門限100,所以當前狀態為“預警”)
空氣濕度閥值功能說明:用戶輸入空氣濕度閥值上限及下限(示例中為0和100)。設置完成后點擊“確定”按鈕,系統記錄該閾值后,當查詢到的數值不在這個區間范圍之內時,能主動修改報警狀態,并觸發對應的報警機構。
空氣濕度閥值實現邏輯
(1)點擊空氣濕度界面“設置”按鈕,彈出空氣濕度閥值設置界面。
(2)輸入空氣濕度閾值上限及下限數據,點擊確認按鈕。
(3)當空氣濕度超過所設定的上門限或下門限時,主界面中將顯示空氣濕度告警,(示例中空氣濕度數值為212,已經超過上門限100,所以當前狀態為“預警”)。
土壤濕度的閾值功能說明:用戶輸入土壤濕度的閾值上限及下限(示例中為0和100)。設置完成后點擊“確定”按鈕,系統記錄該閾值后,當查詢到的數值不在這個區間范圍之內時,能主動修改報警狀態,并觸發對應的報警機構。
土壤濕度的閾值實現邏輯:
(1)點擊土壤濕度界面“設置”按鈕,彈出土壤濕度閥值設置界面。
(2)輸入土壤濕度閾值上限及下限數據,點擊確認按鈕。
(3)當土壤濕度超過所設定的上門限或下門限時,主界面中將顯示土壤濕度告警,(示例中土壤濕度數值為212,已經超過上門限100,所以當前狀態為“預警”)。
光照強度閥值功能說明:用戶輸入光照強度閥值上限及下限(示例中為0和100)。設置完成后點擊“確定”按鈕,系統記錄該閾值后,當查詢到的數值不在這個區間范圍之內時,能主動修改報警狀態,并觸發對應的報警機構。
光照強度閥值實現邏輯:
(1)點擊光照強度閥值界面“設置”按鈕,彈出光照強度閥值閥值設置界面。
(2)輸入光照強度閥值閾值上限及下限數據,點擊確認按鈕。
(3)當光照強度閥值超過所設定的上門限或下門限時,主界面中將顯示光照強度閥值告警,(示例中光照強度閥值數值為212,已經超過上門限100,所以當前狀態為“預警”)。
二氧化碳的閾值功能說明:用戶輸入二氧化碳的閾值上限及下限(示例中為0和100)。設置完成后點擊“確定”按鈕,系統記錄該閾值后,當查詢到的數值不在這個區間范圍之內時,能主動修改報警狀態,并觸發對應的報警機構。
二氧化碳的閾值實現邏輯
(1)點擊二氧化碳濃度界面“設置”按鈕,彈出二氧化碳濃度閥值設置界面。
(2)輸入二氧化碳濃度閾值上限及下限數據,點擊確認按鈕。
(3)當二氧化碳濃度超過所設定的上門限或下門限時,主界面中將顯示二氧化碳濃度告警,(示例中二氧化碳濃度數值為212,已經超過上門限100,所以當前狀態為“預警”)。
空氣濕度、空氣濕度或二氧化碳濃度觸發對應的報警機構功能說明:當查詢到的空氣濕度、空氣濕度或二氧化碳濃度數值不在這個設定的范圍之內時,客戶端界面上能主動修改報警狀態,并觸發對應的報警機構。
空氣濕度、空氣濕度或二氧化碳濃度觸發對應的報警機構實現邏輯:
(1)定時查詢到空氣濕度、空氣濕度或二氧化碳濃度數值時,將該值與本地存儲的閥值進行對比。
(2)當查詢到數值在這個期間范圍之內時,在客戶端界面顯示“正常”,設置風扇的狀態標志為“關閉”。
(3)當查詢到數值不在這個期間范圍之內時,在客戶端界面顯示“報警”。
(4)設置風扇的狀態標志為“打開”。
(5)用風扇狀態標志構造HTTP請求和JASON BODY。
(6)向服務端發送請求。
(7)服務端接收請求,并分析接收到的數據。
(8)服務端將接收到的狀態,寫入到對應的傳感器狀態。
光照強度觸發對應的報警機構功能說明:當查詢到的光照強度數值不在這個設定的范圍之內時,客戶端界面上能主動修改報警狀態,并觸發對應的報警機構。
光照強度觸發對應的報警機構實現邏輯:
(1)定時查詢到光照強度數值時,將該值與本地存儲的閥值進行對比。
(2)當查詢到數值在這個期間范圍之內時,在客戶端界面顯示“正常”,設置LED燈的狀態標志為“關閉”。
(3)當查詢到數值不在這個期間范圍之內時,在客戶端界面顯示“報警”。
(4)設置LED燈的狀態標志為“打開”。
(5)用LED燈狀態標志構造HTTP請求和JASON BODY。
(6)向服務端發送請求。
(7)服務端接收請求,并分析接收到的數據。
(8)服務端將接收到的狀態,寫入到對應的傳感器狀態。
土壤濕度觸發對應的報警機構功能說明:當查詢到的土壤濕度數值不在這個設定的范圍之內時,客戶端界面上能主動修改報警狀態,并觸發對應的報警機構。
土壤濕度觸發對應的報警機構實現邏輯:
(1)定時查詢到土壤濕度數值時,將該值與本地存儲的閥值進行對比。
(2)當查詢到數值在這個期間范圍之內時,在客戶端界面顯示“正常”,設置水泵的狀態標志為“關閉”。
(3)當查詢到數值不在這個期間范圍之內時,在客戶端界面顯示“報警”。
(4)設置水泵的狀態標志為“打開”。
(5)用水泵標志構造HTTP請求和JASON BODY。
(6)向服務端發送請求。
(7)服務端接收請求,并分析接收到的數據。
(8)服務端將接收到的狀態,寫入到對應的傳感器狀態。
8 結語
通過設計環境監測系統手機客戶端,使我們接觸到了企業的真實項目,為我們的教學帶來了新的內容,同時也提升了教師的實踐能力和科研能力,可以看出項目設計是一條提升教師能力的有效途徑。
參考文獻
[1] 李楊,郭培源,劉波,等.基于嵌入式技術的居室健康環境監測系統[J].電子技術應用,2014(8).
[2] 陳家佳,肖麗.智能家居中環境監測系統懿研究與應用[J].世界電子元器件,2011(11).
[3] 崔曼,薛惠鋒,卜凡彪,等.基于物聯網與云計算的環境監測系統研究[J].西安工業大學學報,2013(7).