沈彬,陳亦琦, 施慧彬
(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211106)
?
水中pH值遠(yuǎn)程測定方法研究
沈彬,陳亦琦, 施慧彬
(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211106)
摘要:使用pH電極傳感器結(jié)合STM32F411RE控制模塊,開發(fā)出可以遠(yuǎn)程自動(dòng)測量水中pH值的智能檢測設(shè)備。該設(shè)備可以直接測量水中的pH值,然后通過通信模塊將采集的數(shù)據(jù)發(fā)送到監(jiān)控平臺(tái)。監(jiān)控平臺(tái)記錄數(shù)據(jù)、分析數(shù)據(jù),以更好的人機(jī)交互界面呈現(xiàn)出來,還可以接入自動(dòng)報(bào)警設(shè)備,當(dāng)pH值出現(xiàn)異常時(shí),提供警示信息,防止對(duì)工業(yè)控制和食品加工的后續(xù)過程造成危害。
關(guān)鍵詞:pH值;傳感器;STM32F411RE;遠(yuǎn)程控制
引言
pH值是工業(yè)生產(chǎn)過程中的一個(gè)十分常見的控制參數(shù),保持被控過程的pH值穩(wěn)定,對(duì)穩(wěn)定生產(chǎn)過程、提高產(chǎn)品質(zhì)量、減少原材料消耗等均起到非常積極的作用。因此,在工業(yè)生產(chǎn)過程中,實(shí)施監(jiān)控pH值的自動(dòng)控制系統(tǒng)具有很重要的意義。隨著IoT概念的興起,物聯(lián)網(wǎng)硬件發(fā)展迅速,為pH值自動(dòng)監(jiān)控系統(tǒng)的建立奠定了良好的基礎(chǔ)。
1系統(tǒng)方案
基于傳感器的水中pH值遠(yuǎn)程測定系統(tǒng)主要由3部分組成:傳感器部分、微控制器部分和上位機(jī)。系統(tǒng)組成部分如圖1所示。
圖1系統(tǒng)組成部分
本課題主要負(fù)責(zé)的是微控制器部分設(shè)計(jì),在傳感器測得數(shù)據(jù)后能夠進(jìn)行處理、存儲(chǔ)和傳輸。上位機(jī)和微控制器通過網(wǎng)絡(luò)連接,可發(fā)送操作命令或讀取數(shù)據(jù)。上位機(jī)可以是電腦,也可以是Android智能手機(jī),這里采用Android智能手機(jī)作為上位機(jī),通過Wi-Fi與控制器連接。
系統(tǒng)總體設(shè)計(jì)如圖2所示,分為兩大部分:底層控制模塊和上層模塊。核心是基于ARM Cortex-M4核的STM32微控制器。
圖2 系統(tǒng)總體框架
2系統(tǒng)硬件設(shè)計(jì)
pH遠(yuǎn)程測定系統(tǒng)硬件采用ST公司基于Cortex-M4內(nèi)核的STM32F411RE,處理功能強(qiáng)大,使用方便,被廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域。STM32F411RE工作頻率高達(dá)100 MHz,有多種供電方式,Cortex-M4內(nèi)核使功耗和性能取得平衡[1]。
供電方式包括USB供電和外部電源供電。USB供電簡單可靠,但需要專門的接口和線路,而外部電源供電靈活多變,可操作性更強(qiáng)。基于以上考慮,最終采用外接電源供電。外部電源采用三星的3.7 V鋰離子電池,電池容量為1 500 mAh,可以滿足實(shí)驗(yàn)條件。
STM32F411RE有兩個(gè)晶振為內(nèi)部系統(tǒng)提供時(shí)鐘源:一個(gè)是高速外部時(shí)鐘(HSE),頻率為8 MHz的石英晶振,為系統(tǒng)提供較準(zhǔn)確的主頻;另一個(gè)是低速外部時(shí)鐘(LSE),頻率為32 MHz。系統(tǒng)的RTC功能依靠768 kHz的石英晶振實(shí)現(xiàn)。STM32F411RE系統(tǒng)時(shí)鐘(SYSCLK)為100 MHz,AHB總線時(shí)鐘為100 MHz。SysTick時(shí)鐘源采用AHB總線時(shí)鐘,設(shè)置為1 ms跳動(dòng)一次,為μC/OS-II提供系統(tǒng)的時(shí)基。
pH傳感器的電極采用上海雷磁E-201-C pH復(fù)合電極(纖維鹽橋,銀-氯化銀參比,3.0 mol/L氯化鉀外參比溶液(含氯化銀),常用于實(shí)驗(yàn)室常規(guī)pH值測量)。E-201-C的pH測量范圍為0~14,溶液溫度范圍為5~60 ℃,測量精度達(dá)到0.01。pH采集與轉(zhuǎn)換模塊將pH值通過串口傳輸?shù)組CU,模塊精度為0.05,分辨率為0.01,供電電壓為3.3 V。將STM32F411RE的GPIO口定義為推挽輸出以驅(qū)動(dòng)pH傳感器模塊工作。
遠(yuǎn)程測量離不開無線傳輸。對(duì)比Wi-Fi、藍(lán)牙、ZigBee等無線傳輸技術(shù),Wi-Fi具有無線電波的覆蓋范圍廣,傳輸速率高的優(yōu)點(diǎn)[2],故選擇Wi-Fi來實(shí)現(xiàn)遠(yuǎn)程控制。Wi-Fi模塊采用USR-Wi-Fi232-T,模塊體積小、功耗小、成本低、有外置天線,支持多種工作方式,硬件上集成了MAC、基頻芯片、射頻收發(fā)單元、TCP/IP協(xié)議棧。Wi-Fi模塊工作電壓為2.8~3.6 V,正常模式下平均電流為12 mA,待機(jī)模式下電路小于200 μA,工作溫度在-40~85 ℃之間。Wi-Fi模塊通過串口與MCU連接,可以實(shí)現(xiàn)串口的透明傳輸。
采集的pH數(shù)據(jù)一般需要記錄下來,需要一些存儲(chǔ)空間。STM32F411RE自帶512 KB Flash,程序占用了大約16 KB,還有很大的空間可以利用??梢赃x擇Flash中Sector4的64 KB,地址空間范圍是0x0801 0000~0x0801 FFFF。記錄數(shù)據(jù)格式為時(shí)間和pH值,占用空間為32 KB,于是Sector4中最多可以記錄2K項(xiàng)數(shù)據(jù)。
3系統(tǒng)軟件設(shè)計(jì)
3.1系統(tǒng)軟件總體框圖
圖3 系統(tǒng)軟件總體框圖
圖3是系統(tǒng)軟件總體框圖,按照實(shí)現(xiàn)功能不同將系統(tǒng)分為不同模塊,模塊之間既有獨(dú)立性,又有關(guān)聯(lián)性,以實(shí)現(xiàn)pH遠(yuǎn)程測定為目標(biāo)組合在一起。
3.2嵌入式系統(tǒng)程序
為了提高系統(tǒng)的實(shí)時(shí)性和可靠性,我們將μC/OS-II操作系統(tǒng)移植到STM32F411RE上。μC/OS-II是一個(gè)完整的、可移植、可固化、可裁減的搶占式實(shí)時(shí)多任務(wù)內(nèi)核,包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步和內(nèi)存管理等功能。μC/OS-II操作系統(tǒng)簡化了pH值遠(yuǎn)程測定的各種任務(wù)的調(diào)度[3]。
ST的微控制器有Keil、IAR等多種開發(fā)平臺(tái),在這里選擇ARM公司的Keil μVision5作為開發(fā)環(huán)境。STM32系列有官方的庫,源代碼開放。庫就是將底層寄存器相關(guān)代碼全部封裝成函數(shù),簡化對(duì)寄存器的操作。熟悉庫函數(shù)的操作可以降低開發(fā)難度。在此次開發(fā)中對(duì)STM32F411RE的操作是基于庫函數(shù)的,提高了代碼的可讀性。
嵌入式系統(tǒng)程序的核心是 μC/OS-II操作系統(tǒng),在 μC/OS-II下創(chuàng)建了兩個(gè)任務(wù)。主任務(wù)負(fù)責(zé)pH數(shù)據(jù)采集、處理和傳輸;輔任務(wù)負(fù)責(zé)檢測pH值是否處于安全范圍,如果超出閾值則發(fā)出警報(bào)。
在主程序之前,首先要初始化系統(tǒng)時(shí)鐘、串口等,設(shè)置好硬件接口,然后設(shè)置中斷向量,編寫USART中斷處理子程序。需要注意的是,μC/OS-II下中斷程序有專門的入口和出口,要在庫函數(shù)的中斷處理子程序上添加OSIntEnter( )和OSIntExit( ) 。
主任務(wù)可以細(xì)分為多個(gè)子程序,實(shí)現(xiàn)多種功能。具體為時(shí)間校正、報(bào)警開關(guān)、報(bào)警閾值設(shè)置、睡眠模式開關(guān)、傳感器開關(guān)、測量間隔設(shè)置、實(shí)時(shí)pH數(shù)據(jù)查看和歷史pH數(shù)據(jù)查看。為了確定調(diào)用的子程序類型,需要設(shè)計(jì)一套簡單的命令式指令來明確調(diào)用的是什么程序。上層發(fā)送指令,經(jīng)過字符串處理解析,確定指令含義,進(jìn)一步調(diào)用下層處理函數(shù)。指令的格式和含義如表1所列。
表1 指令介紹
3.3Android程序和網(wǎng)站
3.3.1Android客戶端架構(gòu)
Android是由Google開發(fā)的基于Linux內(nèi)核的操作系統(tǒng),隨著安卓設(shè)備的快速發(fā)展,其不再僅是通信的終端,還是各種網(wǎng)絡(luò)的終端[4]。本系統(tǒng)采用客戶端/服務(wù)器模式,服務(wù)器端由帶有Wi-Fi模塊的底層控制設(shè)備組成,Android客戶端負(fù)責(zé)與底層設(shè)備進(jìn)行socket通信,發(fā)送命令并暫存數(shù)據(jù),最終將數(shù)據(jù)上傳至自建的pH數(shù)據(jù)管理網(wǎng)站的數(shù)據(jù)庫中進(jìn)行存儲(chǔ)。本設(shè)計(jì)相比傳統(tǒng)的pH檢測器,更加便宜、靈活,用戶手機(jī)操控時(shí)界面更加友好,并且可以將數(shù)據(jù)長期性存儲(chǔ)在云平臺(tái)上。
3.3.2Android客戶端界面設(shè)計(jì)及主流程
Android手機(jī)客戶端支持4.0及以上手機(jī),開發(fā)環(huán)境為Android SDK+JDK8+Eclipse4.2.1,采用XML布局,具有多個(gè)Activity,包括過場檢測、連接MCU、若干參數(shù)設(shè)置、警報(bào)、測量、折線圖顯示等界面。開發(fā)時(shí)將模型層與顯示層分開,工具類單獨(dú)存放,分布在不同的包里。
運(yùn)行時(shí),底層控制模塊與客戶端通信,為其分配端口號(hào),用戶與其Socket連接成功后,可進(jìn)行下一步操作,在功能選擇界面中選擇相應(yīng)的設(shè)置內(nèi)容。具體操作時(shí),我們輸入的參數(shù),選擇的圖標(biāo)狀態(tài)會(huì)被解析、檢測,并封裝成設(shè)計(jì)的指令中的操作數(shù),再配上相應(yīng)的操作碼形成命令,進(jìn)行相應(yīng)的Socket連接,配置參數(shù)并發(fā)送。最終,通過Handler處理不同的返回碼對(duì)應(yīng)的操作,若發(fā)送成功則有對(duì)應(yīng)的數(shù)據(jù)格式解析,發(fā)送失敗會(huì)鑒別是請(qǐng)求超時(shí)還是響應(yīng)結(jié)果不對(duì),有相應(yīng)的錯(cuò)誤碼對(duì)應(yīng),方便用戶了解設(shè)備運(yùn)行情況。
在數(shù)據(jù)顯示時(shí),采用了AChartEngine[5]這一圖表引擎進(jìn)行折線圖的顯示,AChartEngine是為Android應(yīng)用而設(shè)計(jì)的繪圖工具庫,支持縮放操作,通過對(duì)其參數(shù)的相應(yīng)配置,對(duì)原有圖表的重新封裝后定制出我們自己使用的圖像數(shù)據(jù)接口。獲取的數(shù)據(jù)可以是實(shí)時(shí)的,也可以是歷史的,暫存的數(shù)據(jù)可以通過Volley[6]請(qǐng)求(Google提供的Volley庫,適合數(shù)據(jù)量不大但是通信頻繁的場景)上傳pH數(shù)據(jù)到云平臺(tái)上。
3.3.3網(wǎng)站客戶端架構(gòu)
網(wǎng)站客戶端提供對(duì)設(shè)備、測量數(shù)據(jù)(此處用于pH數(shù)據(jù))和用戶的管理,架在mopaas云平臺(tái)上,本地開發(fā)時(shí)采用Windows+Apache+PHP+MySQL的環(huán)境進(jìn)行調(diào)試,支持多用戶、多設(shè)備使用,設(shè)備ID及數(shù)據(jù)ID均通過混合的加密算法生成,加密算法以base64為基礎(chǔ),混雜著“鹽”(隨機(jī)串)和md5等方式實(shí)現(xiàn)[7],在密碼學(xué)中屬于加密算法保密的方式,登錄時(shí)含有驗(yàn)證碼,頁面間跳轉(zhuǎn)有session和隨機(jī)串的驗(yàn)證,保證唯一性和安全性,數(shù)據(jù)查詢時(shí)提供特殊查詢和折線圖顯示。
3.3.4網(wǎng)站客戶端界面設(shè)計(jì)及主流程
界面使用BootStrap+JQuery+HTML開發(fā),首先進(jìn)入登錄頁面,輸入用戶ID、密碼、驗(yàn)證碼進(jìn)入管理后臺(tái),由于權(quán)限不同,每個(gè)用戶能夠看到的功能頁面也不同,最高權(quán)限用戶可以添加用戶、添加設(shè)備、修改密碼、查看獲取數(shù)據(jù)和特殊查詢。點(diǎn)擊pH數(shù)據(jù)記錄可以看到數(shù)據(jù)的折線圖顯示,利用特殊查詢功能,可以獲取到每個(gè)用戶發(fā)送的數(shù)據(jù)條數(shù),以及最近一周發(fā)送數(shù)據(jù)最多的用戶等數(shù)據(jù)。插入記錄功能是開放給Android客戶端的接口,不能直接使用。后臺(tái)數(shù)據(jù)庫由3張表和1張視圖組成,只要接口使用正確,也可以管理其他數(shù)值類型的數(shù)據(jù)(如溫度、濕度等),為以后的功能拓展留下空間。
4系統(tǒng)評(píng)測與結(jié)論
利用本系統(tǒng)在Android客戶端進(jìn)行相關(guān)pH測定等相關(guān)功能測試。在Android客戶端進(jìn)行時(shí)間校正、睡眠模式開關(guān)、傳感器開關(guān)、測量間隔設(shè)置,底層模塊能快速響應(yīng)。報(bào)警閾值設(shè)置后打開報(bào)警開關(guān),在超出閾值時(shí)能收到以2 s為間隔的持續(xù)警告,可以手動(dòng)關(guān)閉警報(bào)或重新設(shè)置報(bào)警閾值。圖3為Android客戶端pH測量界面。
圖3 Android客戶端測試
用內(nèi)存查看工具打開Flash,測量數(shù)據(jù)按照固定格式存儲(chǔ)在Sector4以0x0801 0000為開始地址的64 KB空間內(nèi)??蛻舳四軌蛱崛?shí)時(shí)數(shù)據(jù)并且正確顯示。選擇提取歷史數(shù)據(jù)的條數(shù)后,歷史數(shù)據(jù)可以以折線圖的形式直觀體現(xiàn)pH變化。
當(dāng)采集到一定數(shù)量的pH值后,可以將數(shù)據(jù)保存到云端,方便記錄和分析pH值的變化范圍和趨勢(shì)。將數(shù)據(jù)上傳到云端后,網(wǎng)頁pH值折線圖如圖4所示。網(wǎng)站數(shù)據(jù)庫中提取的部分?jǐn)?shù)據(jù)見表2。
表2 測試數(shù)據(jù)
由于環(huán)境和電路等原因,pH值是不斷變化的,于是我們添加了對(duì)細(xì)小擾動(dòng)的判斷,只有pH數(shù)值真正發(fā)生變化時(shí)才會(huì)顯示。經(jīng)過測試,系統(tǒng)能對(duì)命令作出正確響應(yīng),反應(yīng)時(shí)間在理想范圍之內(nèi),能順利完成pH值遠(yuǎn)程測定的任務(wù)。
圖4 pH數(shù)據(jù)折線圖
隨著嵌入式系統(tǒng)硬件和無線通信技術(shù)的不斷發(fā)展,結(jié)合這兩者的遠(yuǎn)程測控系統(tǒng)將是未來的潮流。pH值遠(yuǎn)程測定系統(tǒng)還需進(jìn)行下一步的研究,之后的研究方向是pH傳感器組網(wǎng)和數(shù)據(jù)壓縮和加密。
參考文獻(xiàn)
[1] ST公司.STM32F411RE使用手冊(cè)[EB/OL].[2015-09].http://www.st.com/.
[2] 蔡型, 張思全. 短距離無線通信技術(shù)綜述[J].現(xiàn)代電子技術(shù),2004,27(3): 65-67.
[3] 尹江會(huì).嵌入式實(shí)時(shí)操作系統(tǒng)μC /OS-II在ARM中的應(yīng)用研究[D].濟(jì)南:山東大學(xué),2005.
[4] 劉俊賢.基于Android平臺(tái)的橋梁監(jiān)測終端應(yīng)用程序設(shè)計(jì)與開發(fā)[D].西安:西安科技大學(xué),2011.
[5] Achartengine[EB/OL].[2015-09].http://code.google.com/p/achartengine/.
[6] Volley[EB/OL].[2015-09].https://android.googlesource.com/platform/frameworks/volley.
[7] 王健.基于MVC模式的AOP安全框架的研究與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2007.
沈彬、陳亦琦(本科生),主要研究方向?yàn)槲锫?lián)網(wǎng)工程;施慧彬(副教授),主要研究方向?yàn)橛?jì)算機(jī)體系結(jié)構(gòu)、嵌入式系統(tǒng)等。
[4] 駱曉娟,許力.基于AJAX與B/S架構(gòu)的實(shí)時(shí)監(jiān)測系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2013,26(4):64-65.
[5] 劉火良,楊森.STM32庫開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013:394-426.
[6] 王莉,周偉.基于ARM的嵌入式Web服務(wù)器設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(14):90-93.
[7] 范賢學(xué),金興華.數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)[J].指揮信息系統(tǒng)與技術(shù),2014,5(3):64-69.
王夢(mèng)瀟、李璐(助理工程師),研究方向?yàn)榍度胧介_發(fā)與系統(tǒng)集成。
Research on Remote Measurement Method of pH Value in Water
Shen Bin,Chen Yiqi,Shi Huibin
(College of Computer Science and Technology,Nanjing University of Aeronautics&Astronautics,Nanjing 211106,China)
Abstract:An intelligent detection device is designed using the pH electrode sensor and the STM32F411RE control module.The device can measure the pH value in the water directly,and then sends the data to the monitoring platform through the communication module.The monitoring platform is responsible for the data storage,the data analysis and can show a better human-machine interaction interface.Also,it can access to the automatic alarming device to provide warning when the pH value is abnormal,so as to prevent the damage to the subsequent processes of the industrial control and food processing.
Key words:pH value;sensor;STM32F411RE;remote control
收稿日期:(責(zé)任編輯:楊迪娜2015-09-26) (責(zé)任編輯:薛士然2015-09-06)
中圖分類號(hào):TP277
文獻(xiàn)標(biāo)識(shí)碼:A