葉小嶺+趙二擺+朱春陽
摘要:為了提高農村戶用沼氣池的運行效率,設計了一種基于手機平臺的戶用沼氣池實時監控管理系統。系統結合GPRS、WEB服務器及數據庫技術,對沼氣池進行監控管理。用戶通過Android手機客戶端軟件進行注冊、登錄,查看對應沼氣池實時運行狀態、歷史數據曲線及服務器給出的管理意見,還可就一些具體問題與服務器進行交互,有效提高沼氣池的運行效率及安全性。
關鍵詞:戶用沼氣池;WEB;Android智能手機;管理系統
中圖分類號: S216.4;TP274文獻標志碼: A文章編號:1002-1302(2014)06-0358-03
收稿日期:2013-09-07
基金項目:江蘇省農業科技自主創新資金[編號:CX(12)3050];江蘇省六大人才高峰項目(編號:WLW-021)。
作者簡介:葉小嶺(1964—),女,河南封丘人,教授,碩士生導師,主要從事檢測技術等研究,E-mial:xyz.nim@163.com。
通信作者:趙二擺。E-mail:zhaoerbai200@163.com。作為人口大國,能源短缺,人均資源不足已成為制約我國可持續發展的重要因素。沼氣作為一種可再生能源,不僅是農村新能源建設至關重要的組成部分,也是中國可持續發展建設的重要一環。發展農村沼氣可以避免因為焚燒秸稈造成的空氣污染,減少化石能源的消耗,降低對環境的壓力,改善農民的生存條件和生活質量,而且在一定程度上促進了當地產業的發展[1]。然而沼氣的正常使用需要“三分建七分管”,很多地區重視建設,忽視維護管理,導致許多沼氣池運行不佳甚至廢棄。
隨著移動通訊產業的迅速發展,智能手機和3G網絡得到快速的發展和普及,預計2013年底,中國智能手機用戶可達5×108,其中Android操作系統的安裝量占51.4%[2]。此外Android智能手機操作系統開放性好、功能擴展性強,能很好地支持應用程序開發。
基于以上分析,并結合GPRS、WEB服務器及數據庫技術設計了一種基于Android手機平臺的農村沼氣管理系統。系統通過GPRS將沼氣池的狀態信息發送至統一的WEB服務器進行集中管理,用戶可通過Android手機客戶端軟件進行用戶注冊、登錄,登錄后即可查看自家沼氣池實時運行狀態、歷史數據以及服務器給出的管理意見,還可以就一些實際問題與服務器進行交互,獲得專家意見。以此提高戶用沼氣池的運行效率,普及戶用沼氣使用,減少化石能源消耗,改善民生,推動社會的可持續發展。
1系統框架設計
系統主要由數據采集器、GPRS傳輸模塊、WEB服務器、基本數據庫、無線網絡以及手機客戶端,結構圖如圖1所示。
數據采集裝置采集沼氣池狀態信息,并通過GPRS傳輸模塊及無線網絡上傳到服務器,服務器端軟件進行相應的信
息處理和數據庫存取操作,此外,服務器端還與手機客戶端進行信息的交互,響應手機信息請求。
1.1數據采集及GPRS傳輸模塊
甲烷的生產過程實際上是一個厭氧發酵的過程。厭氧發酵過程是一個很不穩定的過程,為了提高沼氣產出,同時保證一個穩定發酵過程,就需要對沼氣池發酵條件進行過程控制,以優化進料以及發酵條件[3]。針對戶用沼氣池的特點,數據采集器設計用來采集沼氣池內的運行信息(沼液溫度、池內氣壓、沼液pH值及甲烷含量)。
數據采集及GPRS傳輸模塊主要由msp430F149單片機、各種傳感器、A/D轉換電路、GPRS通信模塊及外圍電路(時鐘電路、Flash存儲、電源電路等)組成,框架圖如圖2所示。
傳感器采集到沼氣池的信息,先經過信號調理電路,然后經12位A/D芯片ADS7834轉換后送至msp430F149,單片機將采集到的信息存儲至Flash芯片AT45DB32,單片機使用串口將沼氣池ID與采集到的數據送至GPRS通訊模塊。GPRS通訊采用工業級無線模塊WG-8010-232 GPRS DTU,模塊支持GSM、GPRS等多種連接方式,TCP、UDP通訊協議,提供標準RS232數據接口,模塊可采用常見5 V電源供電。設置模塊串口波特率為9 600、通信方式為TCP、數據中心IP地址等后,即可使用RS232與單片機控制模塊通信,通過GPRS與數據中心,從而實現沼氣池信息從設備到服務器的全透明傳輸。
1.2數據庫與服務器設計
服務器通過數據采集器和數據庫的信息交互,將沼氣池信息存儲到數據庫中,并可將數據庫中信息取出通過C/S架構實時響應手機客戶端的信息請求。
服務器采用支持Servlet且可方便地部署Java Web應用的Tomcat服務器[4]。服務器中部署所需要的Servlet類,用于實現客戶端的注冊、登錄、數據接收存儲以及響應客戶端請求。服務器與客戶端通信采用Http通信協議的post方法。部署服務器時,繼承HttpServlet類,在類中采用覆蓋HttpServlet的doGet()方法,然后通過HttpServletRequest對象獲取客戶端的請求信息,由HttpServletResponse對象生成響應結果并將之送給客戶端。服務器端的Servlet程序完成后,在web.xml文件中進行屬性配置,即可通過8080端口連接已部署的服務器[5]。
系統采用關系型數據庫管理系統MySQL,服務器利用JDBC(Java數據庫連接)建立數據庫連接,執行SQL語句,對數據進行處理[4]。在服務器端將mysql-connector-java-50.7-bin.jar文件放到Java安裝目錄中,并修改環境變量。Servlet程序中的主要步驟:
Class.forName(“com.mysql.jdbc.Driver”);//加載驅動
Connection conn=DriverManager.getConnection(url,user,password);//連接數據庫
然后通過實例化的Statement對象對數據庫執行相應的更新和查詢等操作,將取得的數據存放到ResultSet對象中,最后將請求的數據發送至客戶端。
2客戶端設計
客戶端是基于Android 2.2版本(API LEVEL 8),在搭建的Android SDK+Java JDK 6+Eclipse 4.2 的環境中進行開發。客戶端主要功能是用戶注冊、登錄、在線實時監控、歷史數據顯示以及獲取服務器參考意見5模塊,如圖3所示。根據需要客戶端創建了5個Activity,使用layout文件夾下的5個xml文件實現UI(用戶界面)的設計。
2.1登錄模塊
客戶端開啟后的首個界面,用戶可在本頁面輸入用戶名和登錄密碼,點擊登錄按鈕即可將用戶信息發送至服務器,采用http post網絡通信方式,通過驗證即可跳轉至監控頁面,否則使用Toast方法提示錯誤信息。頁面還提供2個CheckBox用來選擇是否記住用戶名和密碼,采用SharedPreferences方法將用戶信息保存到本地,方便下次登錄,登錄界面如圖4所示。模塊關鍵代碼如下:
HttpPost request=new HttpPost(urlStr_login);//request繼承HttpPost方法
HttpResponse response=client.execute(request);//執行請求返回響應
editor.putString(“nameIsChecked”,“1”+“,”+username);//將信息存儲到本地
sp=getSharedPreferences(“sp_user”,Context . MODE_PRIVATE); //將本地信息取出
2.2注冊模塊
首次登錄需要注冊,通過登錄界面里的注冊按鈕跳轉到注冊界面。在注冊界面,用戶可根據提示輸入用戶名、賬號密碼及相應沼氣池編號,客戶端將信息發送至服務器進行注冊保存。
2.3實時監控
監控界面實時顯示沼氣池運行參數。為防止UI主線程堵塞和界面假死,可通過實現Runnable接口,覆寫接口的run()方法,并實例化Thread類來創建子線程,讓子線程定時向服務器請求數據,取得數據后使用SendMessage()方法向Handler傳送Message對象[6]。Handler接收消息后配合主線程更新UI,從而實現沼氣池運行信息的實時顯示。此外,系統采用json數據交換格式,程序中引入org.json包,即可使用getJSONObject()將服務器返回的數據轉換成JSONObject對象,并使用JSONObject.getString()方法將其轉換成可方便處理的字符串類型數據。
2.4歷史數據顯示
用沼氣產量與主要關聯參數的歷史數據變化曲線顯示歷史數據,從而直觀地獲得沼氣產量變化情況,有利于用戶更好地管理沼氣池。模塊獲得數據方式與實時監控模塊相同,并引入Canvas與Paint類參與繪制坐標軸及數據變化曲線。首先在Activity中自定義一個繼承View的PathView類,在類中實例化3個Paint對象,設置其各自屬性來區分不同參數的變化情況。然后在類中使用canvas.getWidth()和canvas.getHeight()函數獲得Canvas的寬度和高度,Android的 Canvas以左上角點為坐標原點,由此可方便的計算出畫筆的起始點和終點,最后應用覆寫onDraw()方法,并在方法中調用 drawLine()、drawCircle()和drawText()等方法實現歷史曲線的繪制。
2.5獲得參考意見
當沼氣池運行出現問題時,用戶可在客戶端中簡要描述故障現象,并上傳到服務器,然后通過數據庫快速匹配方法給出專家的經驗處方。模塊主要是采用Httppost()方法將故障現象發送給服務器并取得反饋信息。
客戶端程序完成后還需修改根目錄下的AndroidManifest.xml文件,在文件中注冊新添加的Activity和開啟程序所用到的權限。主要代碼如下:
3系統功能測試
在Eclipse中右擊工程導出客戶端apk(Android安裝包),安裝到Android版本為2.2及以上的智能手機。數據中心開啟服務器和數據庫服務,數據采集端開啟信息采集和GPRS DTU,手機端開啟客戶端,完成注冊,然后進入登錄界面,點擊登錄按鈕進入實時監控界面并刷新數據顯示沼氣池運行狀態,如圖5所示,然后分別進入歷史曲線和獲得參考意見界面,如圖6、7所示。經測試,系統運行正常,性能穩定,達到了預期的目標。
參考文獻:
[1]王飛,蔡亞慶,仇煥廣. 中國沼氣發展的現狀、驅動及制約因素分析[J]. 農業工程學報,2012,28(1):184-189.
[2]互聯網消費調研中心.2012年第三季度中國手機市場研究報告[R]. 北京:IDC,2012.
[3]林聰. 沼氣技術理論與工程[M]. 北京:化學工業出版社,2007:45-48.
[4]孫衛琴. Tomcat與Java Web開發技術詳解[M]. 北京:電子工業出版社,2009:156-159.
[5]吳吉義,王中友. MySQL原理與Web系統開發[M]. 北京:清華大學出版社,2009:256-257.
[6]姜凡. 基于Android的網絡化遙控器系統的研究與實現[D]. 武漢:武漢理工大學,2010:
然后通過實例化的Statement對象對數據庫執行相應的更新和查詢等操作,將取得的數據存放到ResultSet對象中,最后將請求的數據發送至客戶端。
2客戶端設計
客戶端是基于Android 2.2版本(API LEVEL 8),在搭建的Android SDK+Java JDK 6+Eclipse 4.2 的環境中進行開發。客戶端主要功能是用戶注冊、登錄、在線實時監控、歷史數據顯示以及獲取服務器參考意見5模塊,如圖3所示。根據需要客戶端創建了5個Activity,使用layout文件夾下的5個xml文件實現UI(用戶界面)的設計。
2.1登錄模塊
客戶端開啟后的首個界面,用戶可在本頁面輸入用戶名和登錄密碼,點擊登錄按鈕即可將用戶信息發送至服務器,采用http post網絡通信方式,通過驗證即可跳轉至監控頁面,否則使用Toast方法提示錯誤信息。頁面還提供2個CheckBox用來選擇是否記住用戶名和密碼,采用SharedPreferences方法將用戶信息保存到本地,方便下次登錄,登錄界面如圖4所示。模塊關鍵代碼如下:
HttpPost request=new HttpPost(urlStr_login);//request繼承HttpPost方法
HttpResponse response=client.execute(request);//執行請求返回響應
editor.putString(“nameIsChecked”,“1”+“,”+username);//將信息存儲到本地
sp=getSharedPreferences(“sp_user”,Context . MODE_PRIVATE); //將本地信息取出
2.2注冊模塊
首次登錄需要注冊,通過登錄界面里的注冊按鈕跳轉到注冊界面。在注冊界面,用戶可根據提示輸入用戶名、賬號密碼及相應沼氣池編號,客戶端將信息發送至服務器進行注冊保存。
2.3實時監控
監控界面實時顯示沼氣池運行參數。為防止UI主線程堵塞和界面假死,可通過實現Runnable接口,覆寫接口的run()方法,并實例化Thread類來創建子線程,讓子線程定時向服務器請求數據,取得數據后使用SendMessage()方法向Handler傳送Message對象[6]。Handler接收消息后配合主線程更新UI,從而實現沼氣池運行信息的實時顯示。此外,系統采用json數據交換格式,程序中引入org.json包,即可使用getJSONObject()將服務器返回的數據轉換成JSONObject對象,并使用JSONObject.getString()方法將其轉換成可方便處理的字符串類型數據。
2.4歷史數據顯示
用沼氣產量與主要關聯參數的歷史數據變化曲線顯示歷史數據,從而直觀地獲得沼氣產量變化情況,有利于用戶更好地管理沼氣池。模塊獲得數據方式與實時監控模塊相同,并引入Canvas與Paint類參與繪制坐標軸及數據變化曲線。首先在Activity中自定義一個繼承View的PathView類,在類中實例化3個Paint對象,設置其各自屬性來區分不同參數的變化情況。然后在類中使用canvas.getWidth()和canvas.getHeight()函數獲得Canvas的寬度和高度,Android的 Canvas以左上角點為坐標原點,由此可方便的計算出畫筆的起始點和終點,最后應用覆寫onDraw()方法,并在方法中調用 drawLine()、drawCircle()和drawText()等方法實現歷史曲線的繪制。
2.5獲得參考意見
當沼氣池運行出現問題時,用戶可在客戶端中簡要描述故障現象,并上傳到服務器,然后通過數據庫快速匹配方法給出專家的經驗處方。模塊主要是采用Httppost()方法將故障現象發送給服務器并取得反饋信息。
客戶端程序完成后還需修改根目錄下的AndroidManifest.xml文件,在文件中注冊新添加的Activity和開啟程序所用到的權限。主要代碼如下:
3系統功能測試
在Eclipse中右擊工程導出客戶端apk(Android安裝包),安裝到Android版本為2.2及以上的智能手機。數據中心開啟服務器和數據庫服務,數據采集端開啟信息采集和GPRS DTU,手機端開啟客戶端,完成注冊,然后進入登錄界面,點擊登錄按鈕進入實時監控界面并刷新數據顯示沼氣池運行狀態,如圖5所示,然后分別進入歷史曲線和獲得參考意見界面,如圖6、7所示。經測試,系統運行正常,性能穩定,達到了預期的目標。
參考文獻:
[1]王飛,蔡亞慶,仇煥廣. 中國沼氣發展的現狀、驅動及制約因素分析[J]. 農業工程學報,2012,28(1):184-189.
[2]互聯網消費調研中心.2012年第三季度中國手機市場研究報告[R]. 北京:IDC,2012.
[3]林聰. 沼氣技術理論與工程[M]. 北京:化學工業出版社,2007:45-48.
[4]孫衛琴. Tomcat與Java Web開發技術詳解[M]. 北京:電子工業出版社,2009:156-159.
[5]吳吉義,王中友. MySQL原理與Web系統開發[M]. 北京:清華大學出版社,2009:256-257.
[6]姜凡. 基于Android的網絡化遙控器系統的研究與實現[D]. 武漢:武漢理工大學,2010:
然后通過實例化的Statement對象對數據庫執行相應的更新和查詢等操作,將取得的數據存放到ResultSet對象中,最后將請求的數據發送至客戶端。
2客戶端設計
客戶端是基于Android 2.2版本(API LEVEL 8),在搭建的Android SDK+Java JDK 6+Eclipse 4.2 的環境中進行開發。客戶端主要功能是用戶注冊、登錄、在線實時監控、歷史數據顯示以及獲取服務器參考意見5模塊,如圖3所示。根據需要客戶端創建了5個Activity,使用layout文件夾下的5個xml文件實現UI(用戶界面)的設計。
2.1登錄模塊
客戶端開啟后的首個界面,用戶可在本頁面輸入用戶名和登錄密碼,點擊登錄按鈕即可將用戶信息發送至服務器,采用http post網絡通信方式,通過驗證即可跳轉至監控頁面,否則使用Toast方法提示錯誤信息。頁面還提供2個CheckBox用來選擇是否記住用戶名和密碼,采用SharedPreferences方法將用戶信息保存到本地,方便下次登錄,登錄界面如圖4所示。模塊關鍵代碼如下:
HttpPost request=new HttpPost(urlStr_login);//request繼承HttpPost方法
HttpResponse response=client.execute(request);//執行請求返回響應
editor.putString(“nameIsChecked”,“1”+“,”+username);//將信息存儲到本地
sp=getSharedPreferences(“sp_user”,Context . MODE_PRIVATE); //將本地信息取出
2.2注冊模塊
首次登錄需要注冊,通過登錄界面里的注冊按鈕跳轉到注冊界面。在注冊界面,用戶可根據提示輸入用戶名、賬號密碼及相應沼氣池編號,客戶端將信息發送至服務器進行注冊保存。
2.3實時監控
監控界面實時顯示沼氣池運行參數。為防止UI主線程堵塞和界面假死,可通過實現Runnable接口,覆寫接口的run()方法,并實例化Thread類來創建子線程,讓子線程定時向服務器請求數據,取得數據后使用SendMessage()方法向Handler傳送Message對象[6]。Handler接收消息后配合主線程更新UI,從而實現沼氣池運行信息的實時顯示。此外,系統采用json數據交換格式,程序中引入org.json包,即可使用getJSONObject()將服務器返回的數據轉換成JSONObject對象,并使用JSONObject.getString()方法將其轉換成可方便處理的字符串類型數據。
2.4歷史數據顯示
用沼氣產量與主要關聯參數的歷史數據變化曲線顯示歷史數據,從而直觀地獲得沼氣產量變化情況,有利于用戶更好地管理沼氣池。模塊獲得數據方式與實時監控模塊相同,并引入Canvas與Paint類參與繪制坐標軸及數據變化曲線。首先在Activity中自定義一個繼承View的PathView類,在類中實例化3個Paint對象,設置其各自屬性來區分不同參數的變化情況。然后在類中使用canvas.getWidth()和canvas.getHeight()函數獲得Canvas的寬度和高度,Android的 Canvas以左上角點為坐標原點,由此可方便的計算出畫筆的起始點和終點,最后應用覆寫onDraw()方法,并在方法中調用 drawLine()、drawCircle()和drawText()等方法實現歷史曲線的繪制。
2.5獲得參考意見
當沼氣池運行出現問題時,用戶可在客戶端中簡要描述故障現象,并上傳到服務器,然后通過數據庫快速匹配方法給出專家的經驗處方。模塊主要是采用Httppost()方法將故障現象發送給服務器并取得反饋信息。
客戶端程序完成后還需修改根目錄下的AndroidManifest.xml文件,在文件中注冊新添加的Activity和開啟程序所用到的權限。主要代碼如下:
3系統功能測試
在Eclipse中右擊工程導出客戶端apk(Android安裝包),安裝到Android版本為2.2及以上的智能手機。數據中心開啟服務器和數據庫服務,數據采集端開啟信息采集和GPRS DTU,手機端開啟客戶端,完成注冊,然后進入登錄界面,點擊登錄按鈕進入實時監控界面并刷新數據顯示沼氣池運行狀態,如圖5所示,然后分別進入歷史曲線和獲得參考意見界面,如圖6、7所示。經測試,系統運行正常,性能穩定,達到了預期的目標。
參考文獻:
[1]王飛,蔡亞慶,仇煥廣. 中國沼氣發展的現狀、驅動及制約因素分析[J]. 農業工程學報,2012,28(1):184-189.
[2]互聯網消費調研中心.2012年第三季度中國手機市場研究報告[R]. 北京:IDC,2012.
[3]林聰. 沼氣技術理論與工程[M]. 北京:化學工業出版社,2007:45-48.
[4]孫衛琴. Tomcat與Java Web開發技術詳解[M]. 北京:電子工業出版社,2009:156-159.
[5]吳吉義,王中友. MySQL原理與Web系統開發[M]. 北京:清華大學出版社,2009:256-257.
[6]姜凡. 基于Android的網絡化遙控器系統的研究與實現[D]. 武漢:武漢理工大學,2010: