




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-PAGEIV-基于單片機(jī)的水質(zhì)檢測(cè)儀的設(shè)計(jì)摘要隨著經(jīng)濟(jì)的快速增長(zhǎng),水污染變得愈發(fā)嚴(yán)重,其主要來(lái)源來(lái)自于生活廢水、工業(yè)廢水、醫(yī)院廢水以及農(nóng)業(yè)地表徑流。水資源的保護(hù)成為了我們重要的任務(wù)之一。水質(zhì)檢測(cè)是水資源保護(hù)的第一個(gè)環(huán)節(jié),也是較為重要的環(huán)節(jié),良好的水質(zhì)檢測(cè)儀能夠及時(shí)地檢測(cè)出水質(zhì)變化以及污染情況。本課題在了解和掌握了水質(zhì)檢測(cè)的原理,結(jié)合了硬件電路和軟件代碼,通過(guò)各類(lèi)傳感器對(duì)水源進(jìn)行采集處理產(chǎn)生模擬和數(shù)字信號(hào),再以單片機(jī)進(jìn)行接收并轉(zhuǎn)換成水質(zhì)檢測(cè)的各個(gè)參數(shù)。本文所設(shè)計(jì)的基于單片機(jī)的水質(zhì)檢測(cè)儀對(duì)比于傳統(tǒng)的水質(zhì)檢測(cè)儀,具有成本低、適用范圍廣、多參數(shù)等特點(diǎn)。它是基于ArduinoMega2560開(kāi)發(fā)板和ESP8266開(kāi)發(fā)板進(jìn)行開(kāi)發(fā),可以檢測(cè)pH值、水溫、濁度、溶解性總固體四個(gè)參數(shù),通過(guò)OLED顯示屏能夠?qū)崟r(shí)顯示數(shù)據(jù)的變化,通過(guò)無(wú)線網(wǎng)絡(luò)與Blinker物聯(lián)網(wǎng)平臺(tái)的實(shí)現(xiàn)網(wǎng)絡(luò)連接進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)手機(jī)APP實(shí)時(shí)查看數(shù)據(jù),通過(guò)Python編程和USB串口通信將所有參數(shù)數(shù)據(jù)整合生成Excel表格,具有一定的實(shí)用價(jià)值。關(guān)鍵詞:水質(zhì)檢測(cè),Arduino,Python,物聯(lián)網(wǎng)目錄引言 11緒論 21.1國(guó)內(nèi)飲用水水質(zhì)標(biāo)準(zhǔn)指標(biāo) 21.2國(guó)內(nèi)外水質(zhì)檢測(cè)儀差距 31.3本文研究主要內(nèi)容 32水質(zhì)檢測(cè)儀方案設(shè)計(jì) 52.1設(shè)計(jì)要求 52.2總體設(shè)計(jì)框圖 53硬件電路部分設(shè)計(jì) 73.1數(shù)據(jù)采集模塊 73.1.1DS18B20溫度探頭 73.1.2渾濁度傳感器 83.1.3模擬TDS傳感器 93.1.4pH值采集傳感器 103.2數(shù)據(jù)處理模塊 123.2.1ArduinoMega2560開(kāi)發(fā)板 123.2.2ESP8266開(kāi)發(fā)板 123.3警示模塊 133.3.1LED警告燈 133.3.2蜂鳴器 143.4數(shù)據(jù)顯示模塊 153.4.1OLED顯示模塊 153.4.2手機(jī)APP顯示 163.5總體電路 163.6PCB設(shè)計(jì) 173.7外框設(shè)計(jì) 183.8元件清單 183.9電路實(shí)物圖 194軟件編程部分設(shè)計(jì) 204.1總體流程框圖 204.2器件程序調(diào)試 214.2.1溫度傳感器 214.2.2濁度傳感器 224.2.3pH傳感器 254.2.4TDS傳感器 274.2.5OLED顯示屏 284.3ESP8266程序調(diào)試 314.4Python程序調(diào)試 345系統(tǒng)調(diào)試 375.1市場(chǎng)上的水質(zhì)檢測(cè)儀 375.2樣品檢測(cè) 375.2.1家中水質(zhì)檢測(cè) 375.2.2樣品1檢測(cè) 385.2.3樣品2檢測(cè) 405.3總結(jié) 415.4調(diào)試中遇到的問(wèn)題 41結(jié)論 43參考文獻(xiàn) 44附錄AArduinoMega2560程序 45附錄BESP8266程序 54附錄CPython程序 57·1··PAGE21·PAGE1引言水是一切生命的源泉,是我們?nèi)粘I詈褪澜绨l(fā)展最重要、最不能夠或缺的物質(zhì)資源中的一個(gè)。人體內(nèi)的水分含量占體重的四分之三左右,它在人體內(nèi)的生理反應(yīng)以及新陳代謝等各個(gè)方面起著較為重要的作用。隨著現(xiàn)代社會(huì)的不斷變遷和科技的不斷進(jìn)步,為了實(shí)現(xiàn)利益的增長(zhǎng)使得水污染變得越來(lái)越嚴(yán)重,威脅到了人們?nèi)粘I钣盟约帮嬘盟陌踩?。水質(zhì)檢測(cè)作為我們邁向保護(hù)環(huán)境的第一步,有助于我們作出科學(xué)的決策,有效預(yù)防和治理水污染,保證日常生活用水的質(zhì)量和飲水安全等其他方面具有非常重要的現(xiàn)實(shí)意義[1]。因此,對(duì)于檢測(cè)水質(zhì)是否符合飲用水和日常用水的標(biāo)準(zhǔn)這一課題是保證國(guó)家安全建設(shè)和人民生活健康的重要課題。目前國(guó)內(nèi)傳統(tǒng)的水質(zhì)檢測(cè)儀大部分是單參數(shù)水質(zhì)檢測(cè)儀,需要攜帶其他儀器設(shè)備[2],而且單單一項(xiàng)內(nèi)容的檢測(cè)往往不能夠說(shuō)明水質(zhì)的具體情況,參考意義不大,若要測(cè)量多個(gè)參數(shù)就需要購(gòu)買(mǎi)并攜帶多個(gè)儀器設(shè)備,開(kāi)銷(xiāo)大,便捷性較差。為此,本文設(shè)計(jì)了一款多參數(shù)、低成本、結(jié)構(gòu)簡(jiǎn)單、適用范圍性比較廣的水質(zhì)檢測(cè)儀,適用于家庭生活用水的實(shí)時(shí)檢測(cè),確保飲用水的安全。
1緒論1.1國(guó)內(nèi)飲用水水質(zhì)標(biāo)準(zhǔn)指標(biāo)對(duì)于水資源保護(hù)的首要環(huán)節(jié),水質(zhì)檢測(cè)的標(biāo)準(zhǔn)是分辨水質(zhì)好壞的重要條件。在國(guó)家頒布的《生活飲用水衛(wèi)生標(biāo)準(zhǔn)》(GB5749-2006)[3]中查詢(xún)到有關(guān)于渾濁度、pH值和溶解性總固體三項(xiàng)指標(biāo)的參數(shù),并列成表格如表1.1所示。表1.1生活飲用水水質(zhì)指標(biāo)(部分參數(shù))項(xiàng)目標(biāo)準(zhǔn)限值色色度不得超過(guò)15度,并且不得呈現(xiàn)其他異色臭和味不能有異味、異臭的現(xiàn)象渾濁度(NTU)≤1(水源與凈水技術(shù)條件限制時(shí)為≤3)pH值6.5~8.5溶解性總固體(ppm)<1000渾濁度是水質(zhì)檢測(cè)中檢測(cè)水的清亮程度。水的渾濁往往由細(xì)微的懸浮顆粒如泥土、膠體顆粒、浮游生物以及其他微生物等所造成的。渾濁度超標(biāo)則代表了水中的固體懸浮顆粒超標(biāo)。若是懸浮顆粒中含有大量的重金屬,那么會(huì)導(dǎo)致慢性的重金屬中毒;若懸浮顆粒中含有大量的有毒的成分,那么會(huì)導(dǎo)致慢性中毒或者急性中毒;若是其中含有大量的泥沙則會(huì)對(duì)于人類(lèi)的消化系統(tǒng)有影響。所以渾濁度的檢測(cè)是衡量水質(zhì)良好程度的重要指標(biāo)之一。pH值是水質(zhì)檢測(cè)中檢測(cè)水的酸堿度。pH值為7代表水溶液呈中性,pH<7代表水溶液呈酸性,pH>7代表水溶液呈堿性。國(guó)內(nèi)對(duì)于酸堿度的標(biāo)準(zhǔn)是pH值位于6.5至8.5之間,易于保持人體的酸堿平衡。同時(shí)還能夠防止腐蝕輸送水的金屬管道,減少水中的鈣鎂離子的沉淀而產(chǎn)生水垢。溶解性總固體(TDS)水質(zhì)檢測(cè)中檢測(cè)水中全部溶質(zhì)的總量,是日常生活中較簡(jiǎn)易的檢測(cè)方式。它可以給出明確具體的數(shù)據(jù),直觀的展示飲用水是否在安全健康的范圍之內(nèi)。
表1.20~1000ppm的水質(zhì)分布TDS值(單位:ppm)品質(zhì)0~50純度高50~100純度較高100~300純度一般300~600容易結(jié)水垢600~1000口感較差如表1.2所示,可以看出0ppm~100ppm屬于較為優(yōu)秀的水質(zhì)范圍,100ppm~600ppm屬于較為一般的水質(zhì)范圍,600ppm~1000ppm屬于口感較差,水里可溶解性固體較多,不太適宜。因此,在這里以0ppm~600ppm為本設(shè)計(jì)的TDS值可接受范圍。1.2國(guó)內(nèi)外水質(zhì)檢測(cè)儀差距相對(duì)于美國(guó)、德國(guó)、日本等發(fā)達(dá)國(guó)家來(lái)說(shuō),中國(guó)起步較晚。因此在水處理技術(shù)領(lǐng)域,我國(guó)也處于相對(duì)較低的水平。隨著國(guó)家經(jīng)濟(jì)方面的發(fā)展速度愈發(fā)變快,對(duì)環(huán)保要求越來(lái)越高,國(guó)內(nèi)行業(yè)對(duì)于水處理設(shè)備的需求與日俱增,國(guó)內(nèi)的有關(guān)企業(yè)仍然面臨著巨大的困難去挑戰(zhàn)。由于專(zhuān)業(yè)人才短缺、關(guān)鍵電子元器件的穩(wěn)定性和供應(yīng)不足、設(shè)計(jì)流程和理念落后和較少采用有效的質(zhì)量控制方法[4],導(dǎo)致了國(guó)內(nèi)的水處理技術(shù)較為落后。在工業(yè)水處理監(jiān)控、污水處理、環(huán)境監(jiān)測(cè)等領(lǐng)域是國(guó)內(nèi)水質(zhì)檢測(cè)儀的主要市場(chǎng),改革開(kāi)放的短短幾十年里,對(duì)于我國(guó)的在線水質(zhì)檢測(cè)儀自動(dòng)控制技術(shù)、軟件技術(shù)、電子技術(shù)、精密制造產(chǎn)業(yè)技術(shù)等基礎(chǔ)技術(shù),都是近幾十年來(lái)慢慢發(fā)展起來(lái)的。這兩方面的原因造成了中國(guó)水質(zhì)檢測(cè)儀以及檢測(cè)技術(shù)發(fā)展的差距。水質(zhì)檢測(cè)儀同國(guó)內(nèi)外差距的另外一點(diǎn)就是創(chuàng)新。與發(fā)達(dá)國(guó)家相比,他們對(duì)于水質(zhì)檢測(cè)所應(yīng)用的新分析原理、新材料和算法都是十分完善的。而中國(guó)目前使用的還是較為傳統(tǒng)的電化學(xué)和比色法[5],作為水質(zhì)檢測(cè)儀的主要檢測(cè)方法,不能完全滿足目前水處理工業(yè)過(guò)程控制的要求。1.3本文研究主要內(nèi)容本設(shè)計(jì)擬采用單片機(jī)設(shè)計(jì)一款水質(zhì)檢測(cè)儀,該檢測(cè)儀的功能主要從以下幾個(gè)方面考慮:多參數(shù):目前市場(chǎng)上大多數(shù)的水質(zhì)檢測(cè)儀是單參數(shù)檢測(cè),比如小米和格力品牌的TDS水質(zhì)檢測(cè)筆等。而且一項(xiàng)檢測(cè)內(nèi)容并不能完全說(shuō)明水質(zhì)的好壞,需要多參數(shù)綜合考慮。智能性:手機(jī)在我們?nèi)粘I钪兴闶潜夭豢缮俚摹T撛O(shè)計(jì)可以通過(guò)聯(lián)網(wǎng)進(jìn)行手機(jī)互聯(lián),利用手機(jī)實(shí)時(shí)觀察數(shù)據(jù)變化。同時(shí)還能通過(guò)一根USB數(shù)據(jù)線通過(guò)Python編程進(jìn)行以一段時(shí)間間隔輸出數(shù)據(jù)并生成EXCEL表格,便于后續(xù)的觀察以及分析。便捷性:將所有模塊焊接在一塊PCB板上,相較于單參數(shù)水質(zhì)檢測(cè)儀而言,方便攜帶。
2水質(zhì)檢測(cè)儀方案設(shè)計(jì)2.1設(shè)計(jì)要求搭建水質(zhì)檢測(cè)儀的實(shí)物,可以測(cè)量溫度、TDS值、渾濁度和pH值,測(cè)量精度控制在±10%以?xún)?nèi)。可實(shí)現(xiàn)OLED屏幕實(shí)時(shí)顯示溫度、TDS值、渾濁度和pH值,當(dāng)超過(guò)各項(xiàng)標(biāo)準(zhǔn)指標(biāo)(pH值范圍為6.5~8.5、TDS值范圍為0ppm~600ppm、濁度范圍0NTU~1NTU)時(shí)會(huì)點(diǎn)亮對(duì)應(yīng)的LED燈,蜂鳴器工作。手機(jī)APP上能夠?qū)崿F(xiàn)清晰地實(shí)時(shí)顯示各項(xiàng)指標(biāo)數(shù)值。通過(guò)Python編程可以實(shí)現(xiàn)單片機(jī)與電腦串口通信收集數(shù)據(jù)生成Excel數(shù)據(jù)表格。2.2總體設(shè)計(jì)框圖本次設(shè)計(jì)的水質(zhì)檢測(cè)儀的硬件電路部分包括數(shù)據(jù)采集模塊、數(shù)據(jù)顯示模塊、數(shù)據(jù)處理模塊和警示模塊。在這里采用的器件主要有ArduinoMega2560R3開(kāi)發(fā)板、ESP8266V3開(kāi)發(fā)板、DS18B20數(shù)字溫度探頭、渾濁度傳感器、TDS傳感器、pH值傳感器、OLED(0.96寸)顯示屏、蜂鳴器、三個(gè)LED燈??傮w的設(shè)計(jì)流程框圖如圖2.1所示。圖2.1水質(zhì)檢測(cè)儀設(shè)計(jì)框圖其中,數(shù)據(jù)處理模塊是整個(gè)設(shè)計(jì)的核心模塊,主要包括ArduinoMega2560R3開(kāi)發(fā)板和ESP8266V3開(kāi)發(fā)板。ArduinoMega2560R3開(kāi)發(fā)板主要用于信號(hào)的接收和處理。ESP8266V3開(kāi)發(fā)板主要用于聯(lián)網(wǎng)發(fā)送數(shù)據(jù)至Blinker平臺(tái)。數(shù)據(jù)采集模塊主要包括四個(gè)傳感器,分別為濁度傳感器、TDS傳感器、pH傳感器以及DS18B20數(shù)字溫度探頭。其中溫度測(cè)量的目的是為了實(shí)現(xiàn)溫度補(bǔ)償,讓濁度傳感器和TDS傳感器的數(shù)值更加精準(zhǔn)。數(shù)據(jù)顯示模塊包括兩部分,一個(gè)是檢測(cè)儀上的實(shí)時(shí)顯示,考慮到要顯示的內(nèi)容比較多,故本設(shè)計(jì)選用OLED0.96英寸顯示屏,放棄了LCD1602的想法。另一個(gè)是手機(jī)APP顯示。警示顯示模塊包括LED警示燈和蜂鳴器。三個(gè)LED燈用于分別顯示當(dāng)pH值、TDS值和濁度超過(guò)標(biāo)準(zhǔn)指標(biāo)時(shí)會(huì)點(diǎn)亮。整個(gè)工作過(guò)程描述如下:首先通過(guò)渾濁度傳感器、模擬TDS傳感器、pH值采集傳感器以及DS18B20數(shù)字溫度探頭將感受到的信息轉(zhuǎn)化為電信號(hào),再由單片機(jī)模塊進(jìn)行AD轉(zhuǎn)換數(shù)據(jù)處理從而得到相應(yīng)的參數(shù)數(shù)值,判斷是否超出標(biāo)準(zhǔn)指標(biāo)。若超出則會(huì)點(diǎn)亮相應(yīng)的LED警告燈,同時(shí)觸發(fā)一次蜂鳴器。通過(guò)串口通信進(jìn)行數(shù)據(jù)傳輸,再由Wi-Fi模塊進(jìn)行與Blinker物聯(lián)網(wǎng)平臺(tái)的互聯(lián),進(jìn)行數(shù)據(jù)存儲(chǔ),再通過(guò)Blinker軟件進(jìn)行實(shí)時(shí)的數(shù)據(jù)展示。通過(guò)USB串口通信與電腦PC互聯(lián),經(jīng)過(guò)Python編程進(jìn)行一段時(shí)間的Excel數(shù)據(jù)表格的生成。
3硬件電路部分設(shè)計(jì)根據(jù)上述的設(shè)計(jì)框圖,可知硬件電路主要包括數(shù)據(jù)采集模塊、數(shù)據(jù)顯示模塊、數(shù)據(jù)處理模塊和警示模塊四個(gè)部分,下面就各個(gè)部分進(jìn)行詳細(xì)的說(shuō)明。3.1數(shù)據(jù)采集模塊3.1.1DS18B20溫度探頭DS18B20溫度探頭采用的是常用的數(shù)字溫度傳感器型號(hào)DS18B20,輸出為數(shù)字信號(hào),具有體積很小,硬件開(kāi)銷(xiāo)很低,適用范圍很廣,抗干擾能力很強(qiáng),測(cè)量范圍較廣(-55℃~+125℃),精度高(±0.5℃)的特點(diǎn)。因此在水質(zhì)檢測(cè)儀中使用較為合適。圖3.1DS18B20溫度傳感器圖3.2DS18B20溫度傳感器與ArduinoMega2560的接線如圖3.1所示,DS18B20溫度傳感器總共有三個(gè)引腳,從左到右依次是GND引腳、DQ引腳和VDD引腳。如圖3.2所示,DS18B20數(shù)字溫度探頭的VCC引腳接ArduinoMega2560的5V接口為DS18B20數(shù)字溫度傳感器提供5V的工作電壓。注意的是在D引腳處連接ArduinoMega2560的D2接口時(shí)需要外接4.7KΩ上拉電阻。由于DS18B20是單線通信,它的接收和發(fā)送都是同一個(gè)引腳(D)進(jìn)行的。輸出0時(shí)通過(guò)三極管下拉為低電平,而輸出1時(shí),則為高阻,需要外接上拉電阻將其拉為高電平[6]。這里將上拉電阻的高電平與VCC相接。使用DS18B20數(shù)字溫度探頭進(jìn)行溫度的測(cè)量目的是為了給渾濁度傳感器、pH值采集傳感器和模擬TDS傳感器進(jìn)行溫度補(bǔ)償,從而使得數(shù)據(jù)更加精確。3.1.2渾濁度傳感器渾濁度傳感器采用的是TSW-30濁度傳感器,它是通過(guò)溶液樣品中的透光率和散射率進(jìn)行綜合判斷濁度情況[7],接收端把發(fā)射端穿透過(guò)溶液的光強(qiáng)度轉(zhuǎn)換為電流大小,通過(guò)電阻將經(jīng)過(guò)該電阻的電流轉(zhuǎn)換成電壓信號(hào),具有實(shí)用性強(qiáng),適用范圍廣,測(cè)量范圍為0NTU~1000NTU,誤差為±30。圖3.3TSW-30濁度傳感器圖3.4TSW-30濁度傳感器原理圖圖3.5TSW-30濁度傳感器與ArduinoMega2560的接線如圖3.4所示,TSW-30濁度傳感器通過(guò)EL-23G紅外發(fā)射二極管和ST-23G紅外接受二極管,把透過(guò)液體的光強(qiáng)度轉(zhuǎn)換成其對(duì)應(yīng)的電流大小,再通過(guò)電阻轉(zhuǎn)換成電壓,輸出濁度信號(hào)。如圖3.5所示,VCC引腳接ArduinoMega2560的5V接口為T(mén)SW-30濁度傳感器提供5V工作電壓,A引腳接ArduinoMega2560的模擬輸入A0口。ArduinoMega2560通過(guò)讀取模擬輸入A0口的模擬信號(hào)轉(zhuǎn)換成電壓數(shù)值。3.1.3模擬TDS傳感器模擬TDS傳感器有3.3V~5.5V的寬電壓供電,0V~2.3V的模擬信號(hào)輸出,兼容5V、3.3V兩種控制系統(tǒng),測(cè)量范圍為0ppm~1000ppm,誤差為±10%。通過(guò)在這兩個(gè)電極之間施加電壓,將帶正電的離子向負(fù)電荷的電極移動(dòng),再將帶負(fù)電荷的離子將向正電荷的電極移動(dòng),從而形成了電流[8]。測(cè)量所使用的激勵(lì)源采用交流信號(hào),這樣做可以有效防止探頭極化[9],加了輸出信號(hào)的穩(wěn)定性,具有價(jià)格低廉,簡(jiǎn)單易用的特點(diǎn),適用于水質(zhì)檢測(cè)儀。圖3.6模擬TDS傳感器圖3.7模擬TDS傳感器與ArduinoMega2560的接線如圖3.6所示,模擬TDS傳感器由TDS探頭和轉(zhuǎn)接板組成。如圖3.7所示,VCC引腳接ArduinoMega2560的5V接口為模擬TDS傳感器提供5V工作電壓,其A引腳接ArduinoMega2560的模擬輸入A1口。ArduinoMega2560通過(guò)讀取模擬輸入A1口的模擬信號(hào)轉(zhuǎn)換成電壓。3.1.4pH值采集傳感器pH值檢測(cè)傳感器的電極采用的是塑料式不可填充式復(fù)合電極,是由玻璃電極和參比電極組合在一起的,在玻璃膜與被檢測(cè)溶液中的氫離子進(jìn)行離子交換時(shí),通過(guò)測(cè)量?jī)蓚€(gè)電極之間的電位差[10],檢測(cè)到該樣品溶液中所含有的氫離子濃度,從而得到被測(cè)液體的pH數(shù)值。它具備了連線簡(jiǎn)單、方便實(shí)用等特點(diǎn),同時(shí)在水質(zhì)檢測(cè)儀中是不可缺少的檢測(cè)項(xiàng)目。圖3.8pH值采集傳感器圖3.9pH值采集傳感器原理圖圖3.10pH值采集傳感器與ArduinoMega2560的接線如圖3.9所示,三端可調(diào)分流基準(zhǔn)電壓源TL431的輸出電壓用兩個(gè)電阻就能夠任意地設(shè)置從2.5V至36V該范圍內(nèi)的任意一個(gè)電壓值。將負(fù)極與參考端連接起來(lái),得2.5V作為輸入基準(zhǔn)源供TLC4502進(jìn)行轉(zhuǎn)換。根據(jù)運(yùn)算放大器的工作原理以及電壓跟隨電路,通過(guò)調(diào)節(jié)RP1電位器給參比電極賦予合適的電壓值,則可以保證信號(hào)電極電壓恒為正值,運(yùn)放單電源供電即可滿足要求[11]。經(jīng)過(guò)運(yùn)算放大器可使其達(dá)到模數(shù)轉(zhuǎn)換所需電壓范圍,即可送入Mega2560進(jìn)行數(shù)據(jù)處理。如圖3.10所示,VCC引腳接ArduinoMega2560的5V接口為pH值采集傳感器提供5V工作電壓,Po引腳接ArduinoMega2560的A2口。ArduinoMega2560通過(guò)讀取A2口的模擬信號(hào)轉(zhuǎn)換成電壓值。3.2數(shù)據(jù)處理模塊3.2.1ArduinoMega2560開(kāi)發(fā)板本次設(shè)計(jì)采用ArduinoMega2560開(kāi)發(fā)板作為對(duì)于各個(gè)傳感器的電信號(hào)的接收和發(fā)送以及數(shù)據(jù)處理的核心部分,具體參數(shù)如表3.1所示。圖3.11ArduinoMega2560開(kāi)發(fā)板表3.1ArduinoMega2560開(kāi)發(fā)板參數(shù)主控芯片ATMega2560工作電壓5V輸入電壓7V~12V數(shù)字I/0口54(含15路PWM輸出)模擬輸入口16閃存(FlashMemory)256KB靜態(tài)存儲(chǔ)器(SRAM)8KBEEPROM4KB時(shí)鐘16MHzArduinoMega2560開(kāi)發(fā)板是采用USB接口的核心電路板,被廣泛應(yīng)用于3D打印機(jī)、智能機(jī)器人、智能家居等等。由表3.1中可以看出,它具有I/O口數(shù)量多、閃存空間大、編程簡(jiǎn)單、資源庫(kù)豐富等特點(diǎn)。同時(shí)電路板搭載了DC接口,可以進(jìn)行外部供電。它還搭載了USB接口,可以通過(guò)USB在電腦上的虛擬COM端口,以此來(lái)進(jìn)行虛擬串行(CDC)通信。3.2.2ESP8266開(kāi)發(fā)板本次設(shè)計(jì)運(yùn)用到了物聯(lián)網(wǎng)通信,采用ESP8266開(kāi)發(fā)板作為媒介通過(guò)無(wú)線通信將ArduinoMega2560開(kāi)發(fā)板通過(guò)串口通信傳輸?shù)臄?shù)據(jù)向Blinker物聯(lián)網(wǎng)平臺(tái)進(jìn)行發(fā)送。具體參數(shù)如表3.2所示。圖3.12ESP8266開(kāi)發(fā)板表3.2ESP8266開(kāi)發(fā)板參數(shù)主控芯片CH9102X工作電壓3.3VWIFI模塊ESP-12F網(wǎng)絡(luò)協(xié)議無(wú)線802.11b/g/n閃存空間512KBRAM20KB用戶可用存儲(chǔ)空間150KB最高傳輸速率450KbpsESP8266開(kāi)發(fā)板采用的是CH9102X主控芯片,具有高穩(wěn)定性、支持高波特率等特點(diǎn),使用與Arduino相同的編程軟件。Wi-Fi模塊采用的是ESP-12F模塊,運(yùn)用2.4GHz無(wú)線技術(shù),覆蓋范圍廣、穿透性強(qiáng)的特點(diǎn)能夠更好的進(jìn)行無(wú)線通信。同時(shí)它還能夠支持三種無(wú)線網(wǎng)絡(luò)協(xié)議:802.11b/g/n,使得它具有很好的適用性。3.3警示模塊3.3.1LED警告燈LED燈就是最常見(jiàn)的發(fā)光二極管,具有節(jié)能、環(huán)保、價(jià)格便宜、響應(yīng)快等特點(diǎn)。其作用就是當(dāng)特定的參數(shù)超出其標(biāo)準(zhǔn)指標(biāo)時(shí)就會(huì)點(diǎn)亮以示警告,當(dāng)沒(méi)有超出時(shí),保持熄滅狀態(tài)。圖3.13LED警告燈與ArduinoMega2560的接線如圖3.13所示,三個(gè)LED燈分別接在ArduinoMega2560的D8、D9、D10三個(gè)數(shù)字IO口上,分別代表渾濁度警告、TDS警告和pH值警告。并且在每個(gè)LED燈前接1KΩ的電阻,起到限流的作用,以防LED燈燒壞。當(dāng)單片機(jī)處理得出的數(shù)據(jù)超出表1.1的有關(guān)指標(biāo)時(shí),其對(duì)應(yīng)的數(shù)字I/O口輸出高電平,從而點(diǎn)亮LED燈。3.3.2蜂鳴器蜂鳴器模塊使用的是低電平觸發(fā)的有源蜂鳴器,其特點(diǎn)是:程序控制方便,接通電源就可以工作。其作用是:參數(shù)超出標(biāo)準(zhǔn)指標(biāo)時(shí)發(fā)出聲響以示警告。圖3.14有源蜂鳴器圖3.15有源蜂鳴器與ArduinoMega2560的接線如圖3.14所示,有源蜂鳴器模塊有三個(gè)引腳分別是GND、I/O和VCC。接線圖如圖3.15所示,I/O引腳接ArduinoMega2560開(kāi)發(fā)板的D3數(shù)字I/O口,當(dāng)單片機(jī)處理得出的數(shù)據(jù)超出表1.1的有關(guān)指標(biāo)時(shí),D3口輸出低電平從而讓蜂鳴器工作。在VCC引腳接入ArduinoMega2560開(kāi)發(fā)板的5V口中間接一個(gè)自鎖開(kāi)關(guān)。在檢測(cè)的時(shí)候能夠讓蜂鳴器工作;在監(jiān)測(cè)的時(shí)候讓蜂鳴器停止工作。3.4數(shù)據(jù)顯示模塊3.4.1OLED顯示模塊本設(shè)計(jì)的顯示模塊采用的是以SSD1306為驅(qū)動(dòng)芯片的OLED顯示屏幕,尺寸為0.96寸,分辨率為128×64,能夠支持多種平臺(tái),具有對(duì)比度高、視角廣、反應(yīng)速度快等特點(diǎn)。相較于LCD1602,它能夠顯示更多的參數(shù)內(nèi)容,作為水質(zhì)檢測(cè)儀的數(shù)據(jù)實(shí)時(shí)顯示十分合適。圖3.16OLED顯示屏(0.96寸)圖3.17OLED顯示屏與ArduinoMega2560開(kāi)發(fā)板的接線如圖3.16所示,OLED顯示屏總共有四個(gè)引腳,從左到右分別是GND引腳、VCC引腳、SCL引腳和SDA引腳。如圖3.17所示,VCC引腳接ArduinoMega2560的3.3V接口,來(lái)為OLED顯示屏提供3.3V的工作電壓,由于OLED顯示屏采用的是I2C協(xié)議,SCL引腳和SDA引腳分別接入ArduinoMega2560的時(shí)鐘管腳SCL和數(shù)據(jù)管腳SDA,從而驅(qū)動(dòng)OLED顯示屏。3.4.2手機(jī)APP顯示本設(shè)計(jì)采用的手機(jī)APP是Blinker物聯(lián)網(wǎng)平臺(tái)下的點(diǎn)燈·blinker,通過(guò)ESP8266無(wú)線通信發(fā)送并存儲(chǔ)數(shù)據(jù)至Blinker物聯(lián)網(wǎng)平臺(tái)[12]。圖3.18Blinker手機(jī)APP手機(jī)APP界面如圖3.18所示,該界面上方四宮格顯示的是溫度、pH值、TDS值和渾濁度的數(shù)值,下方是一定時(shí)間段的對(duì)應(yīng)數(shù)據(jù)曲線,這樣可以良好的觀測(cè)出該樣品的溫度、pH值、TDS值和渾濁度在該時(shí)間段的變化,做到實(shí)時(shí)監(jiān)測(cè)。3.5總體電路將上述傳感器、開(kāi)發(fā)板、顯示模塊和警示模塊結(jié)合在一起構(gòu)成了總體電路,如圖3.19所示。圖3.19水質(zhì)檢測(cè)儀總體電路3.6PCB設(shè)計(jì)由于該設(shè)計(jì)涉及到的傳感器、開(kāi)發(fā)板以及接線過(guò)多,傳統(tǒng)的洞洞板焊接電路可能布線過(guò)于緊湊,所以采用了自行設(shè)計(jì)PCB板進(jìn)行電路的焊接。運(yùn)用AltiumDesigner14軟件進(jìn)行各模塊的原理圖庫(kù)設(shè)計(jì)[13]、各種模塊的PCBLibrary設(shè)計(jì)以及各模塊的所組成的電路總原理圖設(shè)計(jì),通過(guò)立創(chuàng)平臺(tái)進(jìn)行PCB板的制作。并且對(duì)于原來(lái)傳感器的引腳接口進(jìn)行了一定的更換改造。PCB板的原圖如圖3.20所示。各個(gè)模塊的焊盤(pán)距離的把控以及空間的分布都經(jīng)過(guò)了一定的測(cè)量后進(jìn)行修正。圖3.20水質(zhì)檢測(cè)儀PCB板設(shè)計(jì)圖3.7外框設(shè)計(jì)為了能夠更好的展示實(shí)物作品,通過(guò)SolidWork2016軟件進(jìn)行3D畫(huà)圖制作外框部件。如圖3.21所示,首先通過(guò)游標(biāo)卡尺進(jìn)行電路板的四個(gè)圓孔和ArduinoMega2560開(kāi)發(fā)板的USB接口和DC接口定位,得到位置參數(shù),在SolidWork軟件上進(jìn)行繪制。最后生成STL文件通過(guò)軟件進(jìn)行3D打印機(jī)的切片并打印。同時(shí)還設(shè)計(jì)了一塊亞克力蓋板,用于固定模塊和遮擋灰塵的作用。圖3.21水質(zhì)檢測(cè)儀外框設(shè)計(jì)圖3.8元件清單將所需要的元件進(jìn)行表格匯總,具體如表3.3所示。表3.3元件清單名稱(chēng)型號(hào)開(kāi)發(fā)板ArduinoMega2560和ESP8266渾濁度傳感器TSW-30模擬TDS傳感器TDS探頭(XH2.54-2P接口)pH值采集傳感器E-201-C型PH復(fù)合電極數(shù)字溫度傳感器DS18B20LED燈紅色(1個(gè))綠色(2個(gè))電阻4.7KΩ(1個(gè))、1KΩ(3個(gè))OLED顯示屏0.96寸(SSD1306)有源蜂鳴器低電平觸發(fā)自鎖開(kāi)關(guān)6個(gè)引腳3.9電路實(shí)物圖將上述所有的元器件、PCB板和外框部件進(jìn)行搭建組合,最終完成水質(zhì)檢測(cè)儀的硬件部分,具體如圖3.22所示。圖3.22水質(zhì)檢測(cè)儀實(shí)物圖4軟件編程部分設(shè)計(jì)4.1總體流程框圖此次ArduinoMega2560開(kāi)發(fā)板和ESP8266開(kāi)發(fā)板的編程用到了ArduinoIDE軟件,采用了C語(yǔ)言。在進(jìn)行Arduino編程前進(jìn)行了程序流程框圖的設(shè)計(jì)和構(gòu)思,首先進(jìn)行兩個(gè)開(kāi)發(fā)板的初始化,然后運(yùn)行四個(gè)傳感器獲取數(shù)據(jù),并且判斷是否符合標(biāo)準(zhǔn),然后在OLED屏上顯示數(shù)據(jù)。將獲取數(shù)據(jù)通過(guò)串口通信發(fā)送給ESP8266進(jìn)行數(shù)據(jù)上傳。具體如圖4.1所示。圖4.1水質(zhì)檢測(cè)儀的程序流程圖具體代碼詳見(jiàn)附錄A和附錄B4.2器件程序調(diào)試4.2.1溫度傳感器DS18B20溫度探頭采用的是1-Wire通信協(xié)議,對(duì)于該復(fù)雜協(xié)議需要大量代碼解析,因此采用Arduino的庫(kù)文件:DallasTemperature庫(kù)和OneWire庫(kù)進(jìn)行編程,從而讀出溫度數(shù)據(jù)。圖4.2溫度傳感器程序定義如圖4.2所示,將OneWire庫(kù)文件和DallasTemperature庫(kù)文件嵌入源文件中,定義其數(shù)據(jù)輸出的引腳接開(kāi)發(fā)板的數(shù)字引腳2。隨后創(chuàng)建一個(gè)oneWire類(lèi)的新實(shí)例通過(guò)數(shù)字引腳2與OneWire設(shè)備通信,再將該實(shí)例引用傳遞給DallasTemperature庫(kù)中。圖4.3溫度傳感器程序初始化如圖4.3所示,打開(kāi)串口通信,設(shè)置波特率為115200字節(jié)每秒。然后啟動(dòng)DallasTemperature庫(kù)文件,完成溫度傳感器程序的初始化。圖4.4溫度傳感器程序循環(huán)部分如圖4.4所示,設(shè)置循環(huán)函數(shù),通過(guò)發(fā)送命令獲取溫度傳感器的溫度信息,并在串口監(jiān)視器上輸出溫度,每隔1秒發(fā)送一次數(shù)據(jù)。串口監(jiān)視器的結(jié)果如圖4.5所示。圖4.5串口監(jiān)視器的溫度數(shù)據(jù)4.2.2濁度傳感器TSW-30濁度傳感器模塊輸出電壓與渾濁度關(guān)系如圖4.6所示。圖4.6濁度傳感器輸出電壓與濁度關(guān)系曲線輸出電壓與濁度值滿足下列關(guān)系式:TU=?865.68×U+K(4.1)其中,TU為當(dāng)前濁度值,U為當(dāng)前溫度條件下濁度傳感器的輸出電壓值,K為截距值,通過(guò)下列關(guān)系式得到。K=865.68×U25℃(其中U25℃是指標(biāo)準(zhǔn)電壓值,即在0NTU的標(biāo)準(zhǔn)液在25TSW-30濁度傳感器所輸出的電壓值大小還受當(dāng)時(shí)環(huán)境的溫度影響,在測(cè)量的時(shí)候需要進(jìn)行溫度補(bǔ)償從而提高測(cè)量的精確性,溫度的大小通過(guò)DS18B20溫度探頭得到。輸出電壓與溫度曲線關(guān)系如圖所示。圖4.7濁度傳感器輸出電壓與溫度曲線輸出電壓與溫度滿足下列關(guān)系式:?U=?0.0192×(T?25)(4.3)其中,?U為由溫度的變化而引起的電壓差,T為當(dāng)前測(cè)量的溫度值大小。通過(guò)這些公式從而進(jìn)行對(duì)于濁度傳感器與ArduinoMega2560的調(diào)試編程。圖4.8濁度傳感器程序定義如圖4.8所示,對(duì)于上述公式所用的參數(shù)進(jìn)行定義,TU為當(dāng)前測(cè)量所得到的濁度值;TU_value為溫度校正后的濁度值;TU_calibration為標(biāo)準(zhǔn)電壓值(25℃);temp_data為當(dāng)前溫度值,在這里默認(rèn)為25℃進(jìn)行調(diào)試;K為截距。這些變量都為浮點(diǎn)型變量。圖4.9濁度傳感器程序初始化如圖4.9所示,打開(kāi)串口通信,設(shè)置波特率為115200字節(jié)每秒。圖4.10濁度傳感器程序循環(huán)部分如圖4.10所示,設(shè)置循環(huán)函數(shù),讀取A0模擬輸入口,并將這些模擬讀數(shù)轉(zhuǎn)化為電壓,再將所得到的電壓代入公式中得到最后的濁度值。由于該濁度傳感器的測(cè)量范圍在0NTU~1000NTU,因此在后面設(shè)置了區(qū)間范圍,超出1000的數(shù)值始終顯示1000。在串口監(jiān)視器上輸出濁度,每隔1秒發(fā)送一次數(shù)據(jù)。串口監(jiān)視器的結(jié)果如圖4.11所示。圖4.11串口監(jiān)視器的濁度數(shù)據(jù)4.2.3pH傳感器圖4.12pH傳感器程序定義如圖4.12所示,進(jìn)行宏定義,定義數(shù)據(jù)輸出引腳接開(kāi)發(fā)板的模擬輸入口A2,默認(rèn)偏差補(bǔ)償為0,定義avgValue為無(wú)符號(hào)長(zhǎng)整形變量,用于存儲(chǔ)傳感器反饋的平均值。圖4.13pH傳感器程序初始化如圖4.13所示,打開(kāi)串口通信,設(shè)置波特率為115200字節(jié)每秒。圖4.14pH傳感器程序循環(huán)部分如圖4.14所示,定義一個(gè)數(shù)組包含10個(gè)元素,其中每個(gè)元素都是pH傳感器所獲取的采樣值。再將這些采樣值按從大到小進(jìn)行排列,去除最大值和最小值取中心6個(gè)樣本的總和,再計(jì)算平均值,使得得到的數(shù)據(jù)誤差不會(huì)過(guò)大。再將模擬值轉(zhuǎn)換為毫伏值,通過(guò)下列公式:pH=?5.8887×Voltage+21.677(4.4)其中Voltage就是6個(gè)樣本的均值所轉(zhuǎn)換的電壓值,pH就是所求的pH值。將最終求得的數(shù)據(jù)以每隔1秒輸出的形式在串口監(jiān)視器上顯示,如圖4.15。圖4.15串口監(jiān)視器的pH值數(shù)據(jù)4.2.4TDS傳感器模擬TDS傳感器的編程需要用到GravityTDS和EEPROM兩個(gè)Arduino庫(kù)文件。將數(shù)據(jù)存儲(chǔ)到EEPROM里,通過(guò)GravityTDS庫(kù)進(jìn)行數(shù)據(jù)的調(diào)用以及計(jì)算。圖4.16TDS傳感器程序定義如圖4.16所示,引用兩個(gè)庫(kù)文件,宏定義TDS傳感器的數(shù)據(jù)輸出接開(kāi)發(fā)板的模擬輸入口A1,隨后創(chuàng)建一個(gè)gravityTds類(lèi)。定義temperature賦值為25.0,tdsValue賦值為0.0,兩個(gè)變量都為浮點(diǎn)型變量。圖4.17TDS傳感器程序初始化如圖4.17所示,打開(kāi)串口通信,設(shè)置波特率為115200字節(jié)每秒。同時(shí)設(shè)定引腳為A1,ADC的參考電壓設(shè)定為5.0V,設(shè)定采樣進(jìn)度為10位,即1024級(jí)。最后對(duì)于GravityTds庫(kù)文件進(jìn)行初始化運(yùn)行。圖4.18TDS傳感器程序循環(huán)部分如圖4.18所示,將各項(xiàng)所需要的參數(shù)進(jìn)行設(shè)定,這里默認(rèn)環(huán)境溫度為25℃。隨后通過(guò)GravityTds庫(kù)文件的抽樣計(jì)算得到TDS值,并以每隔1秒輸出的形式顯示在串口監(jiān)視器上,如圖4.19所示。圖4.19串口監(jiān)視器的TDS值數(shù)據(jù)4.2.5OLED顯示屏OLED顯示屏的編程需要用到Adafruit_GFX、Adafruit_SSD1306和Wire三個(gè)Arduino庫(kù)文件。前面是一種圖形庫(kù),中間是SSD1306驅(qū)動(dòng)芯片庫(kù),最后是I2C通信庫(kù)。圖4.20OLED程序定義如圖4.20所示,引用三種庫(kù)文件。設(shè)置SSD1306顯示所需要的參數(shù),128×64是屏幕分辨率,采用I2C通信,復(fù)位引腳為4號(hào)引腳。圖4.21軟件生成字模圖4.22存儲(chǔ)點(diǎn)陣變量如圖4.21所示,以溫度兩個(gè)字舉例,采用PCtoLCD2002軟件將所需要的漢字生成點(diǎn)陣字模,設(shè)置字寬為14,字高也為14。如圖4.22所示,設(shè)置靜態(tài)常量并將生成字模的代碼存入其中。圖4.23OLED顯示代碼如圖4.23所示,設(shè)置字體大小并在開(kāi)頭設(shè)置清屏和OLED點(diǎn)亮語(yǔ)句,可以通過(guò)后續(xù)的循環(huán)部分刷新顯示的數(shù)據(jù)。后四行代碼是確定了上述靜態(tài)常量所儲(chǔ)存的對(duì)應(yīng)字模的位置、大小,對(duì)于數(shù)據(jù)變量則設(shè)置好顯示位置直接輸出對(duì)應(yīng)數(shù)字。由于調(diào)試默認(rèn)溫度為22.94℃。其余的參數(shù)設(shè)置為濁度:1000NTU、pH值:8.33、TDS值:0PPM。圖4.24OLED初始化如圖4.24所示,0x3C為I2C協(xié)議通訊地址,使用該地址進(jìn)行初始化。display2()是開(kāi)機(jī)顯示內(nèi)容。最后在OLED程序循環(huán)部分中不斷執(zhí)行display1(),實(shí)現(xiàn)數(shù)據(jù)的更新。具體顯示的效果圖如圖4.25所示。圖4.25OLED開(kāi)機(jī)顯示以及數(shù)據(jù)顯示4.3ESP8266程序調(diào)試圖4.26ESP8266程序定義如圖4.26所示,通過(guò)ESP8266與Blinker物聯(lián)網(wǎng)平臺(tái)進(jìn)行無(wú)線通信,采用了Blinker庫(kù)文件,通過(guò)設(shè)置Wi-Fi網(wǎng)絡(luò)名、Wi-Fi密碼和設(shè)備密鑰,進(jìn)行設(shè)備與Blinker物聯(lián)網(wǎng)平臺(tái)的連接,從而將數(shù)據(jù)都上傳到Blinker物聯(lián)網(wǎng)平臺(tái)。圖4.27Blinker手機(jī)APP的組件建立如圖4.27所示,創(chuàng)建四個(gè)數(shù)字組件,對(duì)應(yīng)手機(jī)APP上的組件鍵名,用于發(fā)送數(shù)據(jù)到手機(jī)APP,顯示溫度、TDS值、pH值和渾濁度四項(xiàng)數(shù)字?jǐn)?shù)據(jù)。圖4.28Blinker云存儲(chǔ)數(shù)據(jù)如圖4.28所示,儲(chǔ)存信息到Blinker物聯(lián)網(wǎng)平臺(tái),通過(guò)存儲(chǔ)鍵名進(jìn)行讀取一段時(shí)間的數(shù)值變化,生成對(duì)應(yīng)的圖表。Rev_float()是浮點(diǎn)型變量,是接受ArduinoMega2560通過(guò)串口通信發(fā)送的按照溫度、pH值、TDS值、渾濁度這一順序的浮點(diǎn)數(shù)聯(lián)合體,在輸出對(duì)應(yīng)值時(shí)也要與其順序?qū)?yīng),否則會(huì)出現(xiàn)顯示錯(cuò)誤。圖4.29ESP8266初始化如圖4.29所示,打開(kāi)串口通信,設(shè)置和ArduinoMega2560同樣的波特率進(jìn)行接收數(shù)據(jù),后面都是對(duì)于Blinker庫(kù)文件的初始化以及注冊(cè)回調(diào)函數(shù),用于數(shù)據(jù)的云存儲(chǔ)和實(shí)時(shí)讀取。圖4.30ESP8266循環(huán)部分如圖4.30所示,通過(guò)設(shè)置循環(huán)函數(shù),頻繁調(diào)用并設(shè)置延時(shí),以此來(lái)保持設(shè)備間連接及處理收到的數(shù)據(jù)。在延時(shí)過(guò)程中依舊能保持設(shè)備之間的網(wǎng)絡(luò)連接及數(shù)據(jù)接收處理。
4.4Python程序調(diào)試Python編程將開(kāi)發(fā)板獲取的數(shù)據(jù)通過(guò)USB串口通信上傳至PC端,再將這些數(shù)據(jù)整理行成EXCEL表格。其中總共運(yùn)用了以下五個(gè)庫(kù):serial庫(kù):設(shè)置參數(shù)并打開(kāi)串口,與開(kāi)發(fā)板進(jìn)行串口通信;struct庫(kù):用于字節(jié)流轉(zhuǎn)換為浮點(diǎn)型數(shù)據(jù);time庫(kù):用于延時(shí)時(shí)間;datatime庫(kù):實(shí)時(shí)提供時(shí)間和日期pandas庫(kù):用于數(shù)據(jù)分析,整理生成EXCEL表格;Python編程流程框圖如圖4.31所示。圖4.31Python流程框圖首先導(dǎo)入所需要的五個(gè)函數(shù)庫(kù),隨后根據(jù)設(shè)備管理器中的COM端口以及所需要的波特率進(jìn)行初始設(shè)置。設(shè)置記錄次數(shù)為10次,每2分鐘記錄一次。將接收到的字符串進(jìn)行解包轉(zhuǎn)成浮點(diǎn)數(shù),并將這些數(shù)據(jù)生成列表。記錄滿10次后通過(guò)DataFrame生成表格型的數(shù)據(jù)結(jié)構(gòu),輸出EXCEL表格,然后停止運(yùn)行。具體代碼詳見(jiàn)附錄C。圖4.32Python打開(kāi)串口如圖4.32,通過(guò)設(shè)置波特率和端口(與開(kāi)發(fā)板的端口一致),打開(kāi)串口通信,如果打開(kāi)成功就會(huì)顯示“實(shí)時(shí)水質(zhì)檢測(cè)數(shù)據(jù)開(kāi)啟!”的字樣,否則將不會(huì)顯示內(nèi)容。圖4.33Python字節(jié)流轉(zhuǎn)換如圖4.33,獲取通過(guò)串口通信按順序讀取一組4個(gè)字節(jié)的字符串,總共4組,再將這些字符串轉(zhuǎn)換成16進(jìn)制數(shù),通過(guò)解包16進(jìn)制數(shù),以小端字節(jié)順序排列。由于解包返回值為元組,后續(xù)需要轉(zhuǎn)換成浮點(diǎn)數(shù)形式,從而獲取對(duì)應(yīng)的數(shù)值。圖4.34Python獲取當(dāng)前時(shí)間圖4.35Python生成列表圖4.36Python生成EXCEL表格將之前獲得的數(shù)據(jù)以及如圖4.34獲取的當(dāng)前時(shí)間,匯成一個(gè)列表并且作為一個(gè)最后的EXCEL數(shù)據(jù)列表的元素,具體如圖4.35所示。通過(guò)循環(huán)和延時(shí),得到一個(gè)時(shí)間段的數(shù)據(jù),最后輸出的大列表就是作為EXCEL表格的數(shù)據(jù)內(nèi)容。如圖4.36所示,display定義為一個(gè)空列表,這個(gè)列表由標(biāo)題和數(shù)據(jù)列表添加組成,再計(jì)算除時(shí)間外的參數(shù)計(jì)算平均值。最后通過(guò)DataFrame將display列表生成EXCEL表格,具體如表4.1所示。表4.1水質(zhì)監(jiān)測(cè)數(shù)據(jù)表格5系統(tǒng)調(diào)試將上述的硬件電路和軟件編程完成后,開(kāi)始進(jìn)行該設(shè)計(jì)的實(shí)物測(cè)試,為了能夠更好地展示本次設(shè)計(jì),購(gòu)買(mǎi)市場(chǎng)上所能買(mǎi)到的水質(zhì)檢測(cè)儀進(jìn)行測(cè)量數(shù)據(jù)的比對(duì)。本次進(jìn)行了三種樣品的測(cè)試:家中自來(lái)水質(zhì)、樣品溶液1和樣品溶液2。5.1市場(chǎng)上的水質(zhì)檢測(cè)儀圖5.1市場(chǎng)上的水質(zhì)檢測(cè)儀實(shí)物本次所對(duì)比的市場(chǎng)上的水質(zhì)檢測(cè)儀是這款PH-07B型號(hào)的多參數(shù)水質(zhì)檢測(cè)儀,它能夠測(cè)量pH值、TDS值和溫度三個(gè)參數(shù),自帶自動(dòng)溫度補(bǔ)償和自動(dòng)校準(zhǔn)功能,價(jià)格較為適中。其技術(shù)參數(shù)如表5.1所示。表5.1市場(chǎng)上的水質(zhì)檢測(cè)儀技術(shù)參數(shù)指標(biāo)量程及精度溫度0.1℃~60℃(±0.5℃)TDS值0ppm~10000ppm(±2%)pH值0.01~14.0(±0.1)5.2樣品檢測(cè)5.2.1家中水質(zhì)檢測(cè)將搭建好的水質(zhì)檢測(cè)儀實(shí)物進(jìn)行測(cè)試,首先對(duì)于家中自來(lái)水樣品進(jìn)行一段時(shí)間的測(cè)量,取平均值獲得較為精準(zhǔn)的數(shù)值,與所購(gòu)買(mǎi)的測(cè)量?jī)x器作比較計(jì)算誤差。圖5.2市場(chǎng)上的測(cè)量?jī)x器測(cè)量家中水質(zhì)數(shù)據(jù)表5.2家中自來(lái)水水質(zhì)監(jiān)測(cè)數(shù)據(jù)首先將市場(chǎng)上的測(cè)量?jī)x器對(duì)該水質(zhì)進(jìn)行檢測(cè),由于能買(mǎi)到的產(chǎn)品最多只能測(cè)量溫度、pH值和TDS值,在此對(duì)于渾濁度的誤差測(cè)量不做要求。通過(guò)圖5.2所示,可以看到市場(chǎng)上的測(cè)量?jī)x器對(duì)于該樣品測(cè)出來(lái)的三項(xiàng)數(shù)據(jù):溫度為16℃、pH值為7.51、TDS值為148ppm。由表5.2所示,將監(jiān)測(cè)時(shí)間的間隔設(shè)置為2分鐘,進(jìn)行了10次的采樣數(shù)據(jù),最后算下來(lái)平均數(shù)據(jù):溫度為16.48℃、pH值為7.62、TDS值為151.08ppm、渾濁度為0NTU。然后進(jìn)行與市場(chǎng)上的測(cè)量?jī)x器所測(cè)的數(shù)據(jù)進(jìn)行誤差比對(duì),可以得到溫度誤差在3.00%、pH值誤差在1.46%、TDS值誤差在2.08%。符合各項(xiàng)傳感器的誤差范圍內(nèi),同時(shí)精確度能夠保證在±10%以?xún)?nèi),滿足了設(shè)計(jì)要求。同時(shí)家中自來(lái)水的水質(zhì)也符合了國(guó)家水質(zhì)要求,滿足于日常使用的水質(zhì)。5.2.2樣品1檢測(cè)該樣品是自來(lái)水與pH值為9.18的溶質(zhì)進(jìn)行調(diào)合,且產(chǎn)生了沉淀物。圖5.3水質(zhì)檢測(cè)儀檢測(cè)樣品1圖5.4市場(chǎng)上的測(cè)量?jī)x器測(cè)量樣品1數(shù)據(jù)表5.3樣品1水質(zhì)監(jiān)測(cè)數(shù)據(jù)圖5.3是水質(zhì)檢測(cè)儀檢測(cè)溶液樣品1的實(shí)物圖,其中對(duì)于TDS傳感器的兩個(gè)電極和pH值傳感器的玻璃球泡不能與杯壁觸碰。由于倒入的pH值為9.18的溶質(zhì)過(guò)量,并且有晶體沉淀,會(huì)導(dǎo)致pH值會(huì)大于9.18,TDS值會(huì)偏高。所以能夠看到右邊兩個(gè)LED燈點(diǎn)亮,說(shuō)明了TDS值和pH值超過(guò)了標(biāo)準(zhǔn)指標(biāo),進(jìn)行了警報(bào)。如圖5.4所示,根據(jù)市面上所購(gòu)買(mǎi)的檢測(cè)儀所測(cè)得的數(shù)據(jù),溫度由于兩次不同則取平均值24.7℃、TDS值為943ppm、pH值為9.32。表5.3是本次設(shè)計(jì)的水質(zhì)檢測(cè)儀所測(cè)得的數(shù)據(jù),得到溫度24.7℃、TDS值為964ppm、pH值為9.62。通過(guò)與市面上所購(gòu)買(mǎi)的檢測(cè)儀測(cè)得的數(shù)據(jù)對(duì)比計(jì)算誤差,同樣滿足于本次設(shè)計(jì)的目標(biāo)要求。5.2.3樣品2檢測(cè)該樣品是自來(lái)水與少量pH值為4.01的溶質(zhì)進(jìn)行調(diào)合,且無(wú)沉淀物產(chǎn)生,其中參雜了一些泥土。圖5.5水質(zhì)檢測(cè)儀檢測(cè)樣品2圖5.6市場(chǎng)上的測(cè)量?jī)x器測(cè)量樣品2數(shù)據(jù)表5.4樣品2水質(zhì)檢測(cè)數(shù)據(jù)圖5.5是水質(zhì)檢測(cè)儀檢測(cè)溶液樣品2的實(shí)物圖,其中對(duì)于TDS傳感器的兩個(gè)電極和pH值傳感器的玻璃球泡不能與杯壁觸碰。由于pH值為4.01的溶質(zhì)加入量少,沒(méi)有晶體沉淀,同時(shí)混入了些許泥土,透光率降低,因此pH值測(cè)試會(huì)大于4.01,濁度測(cè)試會(huì)大于0~1這個(gè)區(qū)間,TDS值會(huì)偏高。隨后可以看到三個(gè)LED燈點(diǎn)亮,說(shuō)明了濁度、TDS值和pH值全部超過(guò)了標(biāo)準(zhǔn)指標(biāo),進(jìn)行了警報(bào)。如圖5.6所示,根據(jù)市面上所購(gòu)買(mǎi)的檢測(cè)儀所測(cè)得的數(shù)據(jù),溫度由于兩次不同則取平均值19.15℃、TDS值為968ppm、pH值為4.42。表5.4是本次設(shè)計(jì)的水質(zhì)檢測(cè)儀所測(cè)得的數(shù)據(jù),得到溫度20.02℃、TDS值為932ppm、pH值為4.34。通過(guò)與市面上所購(gòu)買(mǎi)的檢測(cè)儀測(cè)得的數(shù)據(jù)對(duì)比計(jì)算誤差,同樣滿足于本次設(shè)計(jì)的目標(biāo)要求。5.3總結(jié)通過(guò)三次樣品的測(cè)試中,手機(jī)APP能夠?qū)崟r(shí)顯示參數(shù)數(shù)值,Python能夠成功生成EXCEL表格,LED燈和蜂鳴器的警報(bào)功能也能成功運(yùn)行。通過(guò)三次調(diào)試的生成的數(shù)據(jù)表格可以看出,本次設(shè)計(jì)的水質(zhì)檢測(cè)儀與市場(chǎng)上現(xiàn)在銷(xiāo)售的水質(zhì)檢測(cè)儀測(cè)量數(shù)值誤差相差不大,說(shuō)明該設(shè)計(jì)也具有一定的市場(chǎng)價(jià)值,并且都符合之前設(shè)定的多參數(shù)、智能性、便捷性的設(shè)計(jì)理念。5.4調(diào)試中遇到的問(wèn)題在硬件方面,在PCB板進(jìn)行各類(lèi)元器件的焊接時(shí),發(fā)現(xiàn)溫度傳感器所測(cè)得的數(shù)值一直不正常,經(jīng)過(guò)電路圖的觀察后發(fā)現(xiàn),使用了接地符號(hào)而沒(méi)有連接到開(kāi)發(fā)板的GND引腳,導(dǎo)致這個(gè)引腳始終懸空,沒(méi)有處于接地狀態(tài),導(dǎo)致運(yùn)行不正常;在更換pH值傳感器模塊的6根引腳時(shí)焊接損壞了焊盤(pán),導(dǎo)致沒(méi)有接連成功。在軟件方面,對(duì)于兩塊開(kāi)發(fā)板的編程調(diào)試環(huán)節(jié)沒(méi)有出錯(cuò),但是在整合的過(guò)程中發(fā)現(xiàn)存在一定的沖突,調(diào)節(jié)了延時(shí)后有所緩解。在最后的樣品測(cè)試中,數(shù)據(jù)有一定的誤差產(chǎn)生,其中可能的原因就是對(duì)于傳感器探頭做完測(cè)試后進(jìn)行清洗,使得探頭存在一定的損傷或者污染,會(huì)導(dǎo)致下一次的測(cè)試產(chǎn)生偏差。其中在進(jìn)行測(cè)試中對(duì)于渾濁度傳感器的探頭外殼內(nèi)部進(jìn)過(guò)溶液,導(dǎo)致內(nèi)部污染,由于利用的是光的透射性,存在一定的偏差,需要清洗后曬干一段時(shí)間,才能繼續(xù)使用。上述問(wèn)題都在解決后進(jìn)行了測(cè)試,發(fā)現(xiàn)能夠?qū)崿F(xiàn)預(yù)期的效果,從而完成了本次實(shí)驗(yàn)。
結(jié)論本次課題完成了基于單片機(jī)的水質(zhì)檢測(cè)儀的設(shè)計(jì),所需元器件為:ArduinoMega2560R3開(kāi)發(fā)板、ESP8266V3開(kāi)發(fā)板、渾濁度傳感器、模擬TDS傳感器、pH值采集傳感器、DS18B20數(shù)字溫度探頭、OLED(0.96寸)顯示屏、蜂鳴器、三個(gè)LED燈和自鎖開(kāi)關(guān)。運(yùn)用AltiumDesigner14軟件進(jìn)行了水質(zhì)檢測(cè)儀的PCB設(shè)計(jì),通過(guò)企業(yè)進(jìn)行PCB打樣。使用ArduinoIDE軟件對(duì)兩塊開(kāi)發(fā)板的代碼進(jìn)行了編寫(xiě)。在完成了代碼的編寫(xiě)后,為更好更快速的檢驗(yàn)代碼的正確與否,通過(guò)串口監(jiān)視器進(jìn)行數(shù)據(jù)的顯示和實(shí)物的測(cè)試,并進(jìn)行精確度的調(diào)試。在完成實(shí)物制作后,進(jìn)行了實(shí)物調(diào)試。實(shí)物調(diào)試中出現(xiàn)的錯(cuò)誤有:在PCB設(shè)計(jì)圖中用了GND符號(hào)導(dǎo)致需要飛線接在開(kāi)發(fā)板的引腳、在焊接引腳的時(shí)候?qū)鞲衅髂K損壞、對(duì)于串口發(fā)送浮點(diǎn)數(shù)據(jù)以及接受浮點(diǎn)數(shù)據(jù)的編程問(wèn)題、ArduinoMega2560與ESP8266開(kāi)發(fā)板第一次開(kāi)啟導(dǎo)致APP數(shù)據(jù)顯示不正常以及沒(méi)有對(duì)所有傳感器進(jìn)行保養(yǎng)導(dǎo)致誤差變大等。運(yùn)用了水質(zhì)檢測(cè)儀,進(jìn)行了多種樣品的測(cè)試以及對(duì)于市場(chǎng)上的水質(zhì)檢測(cè)儀進(jìn)行比對(duì),完成了本次實(shí)驗(yàn)的調(diào)試。本次設(shè)計(jì)可以實(shí)現(xiàn):同時(shí)檢測(cè)一種樣品的溫度、pH值、渾濁度和TDS值;當(dāng)一項(xiàng)數(shù)值超過(guò)標(biāo)準(zhǔn)指標(biāo)時(shí)會(huì)點(diǎn)亮對(duì)應(yīng)的LED燈并且蜂鳴器工作,相反則關(guān)閉;運(yùn)用自鎖開(kāi)關(guān)在監(jiān)測(cè)的時(shí)候關(guān)閉蜂鳴器,檢測(cè)的時(shí)候打開(kāi)蜂鳴器;OLED顯示屏顯示數(shù)據(jù);手機(jī)APP上實(shí)時(shí)顯示數(shù)據(jù);與PC串口通信通過(guò)Python編程進(jìn)行數(shù)據(jù)整合生成EXCEL表格進(jìn)行分析。本次實(shí)驗(yàn)與預(yù)期目標(biāo)現(xiàn)象相符合,但還存在不足之處,對(duì)該系統(tǒng)來(lái)說(shuō)還可以?xún)?yōu)化很多,比如可以運(yùn)用電源模塊分別給兩塊開(kāi)發(fā)板進(jìn)行供電,保證其工作電壓;代碼可以進(jìn)行一部分的簡(jiǎn)化;對(duì)于傳感器探頭要保養(yǎng)保證數(shù)值的精確性等等。同時(shí)擁有更多的功能,例如加入攝像頭模塊,可以遠(yuǎn)程進(jìn)行樣品的監(jiān)視等。
參考文獻(xiàn)[1]段利軍,馬建濤.生活飲用水水質(zhì)檢測(cè)的重要性分析[J].質(zhì)量安全與檢驗(yàn)檢測(cè),2020,30(05):148-149.[2]廖堅(jiān)燦,潘長(zhǎng)林,秦海軍等.基于Arduino的多參數(shù)水質(zhì)檢測(cè)儀[J].廣西物理,2018,39(01):26-29.[3]俞國(guó)柱,楊孫楷.旅游景區(qū)飲用水水質(zhì)快速檢測(cè)的探討[J].旅行醫(yī)學(xué)科學(xué),2009,15(02):24-26.[4]李源.水質(zhì)環(huán)境檢測(cè)中質(zhì)量控制的幾種方法[J].資源節(jié)約與環(huán)保,2021(10):54-56.[5]李海波.基于電化學(xué)與光學(xué)比色原理的水環(huán)境重金屬自動(dòng)檢測(cè)儀器設(shè)計(jì)[D].浙江:浙江大學(xué),2015.[6]潘珍珍,紀(jì)志堅(jiān),鄭旭.水溫自動(dòng)控制系統(tǒng)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2017,30(07):158-159.[7]姜德志,姬光榮,陳艷麗.TS濁度傳感器在洗衣機(jī)中的應(yīng)用[J].國(guó)外電子元器件,2007(08):68-69.[8]許仕海,李?yuàn)?陳千祥,等.基于Arduino的家用在線智能水質(zhì)監(jiān)測(cè)儀設(shè)計(jì)[J].科技視界,2019(22):14-15.[9]JanFarmanullah,MinAllahNasro,Dü?teg?rDilek.IoTBasedSmartWaterQualityMonitoring:RecentTechniques,TrendsandChallengesforDomesticApplications[J].Water,2021,13(13).[10]蘇宏鋒.一種小型污水水情測(cè)控裝置設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2019,37(01):161-163.[11]董華.基于MSP430單片機(jī)的pH計(jì)的研制[D].吉林大學(xué).[12]胡文睿,談潘攀.基于物聯(lián)網(wǎng)的智慧浴室系統(tǒng)的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2021,17(26):127-130.[13]高敬鵬,武超群,王臣業(yè)等.AltiumDesigner原理圖與PCB設(shè)計(jì)教程[M].北京:機(jī)械工業(yè)出版社,2013.
附錄AArduinoMega2560程序#include<OneWire.h>#include<DallasTemperature.h>#include<EEPROM.h>#include<GravityTDS.h>#include<Adafruit_GFX.h>#include<Adafruit_SSD1306.h>#include<Wire.h>//數(shù)據(jù)輸出腳接開(kāi)發(fā)板數(shù)字引腳2#defineONE_WIRE_BUS2#defineTUSensorPinA0#defineTdsSensorPinA1#definepHSensorPin2#defineOffset21.677#defineOLED_RESET4GravityTDS;Adafruit_SSD1306display(128,64,&Wire,OLED_RESET);OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(&oneWire);floatTU=0.0;floatTU_value=0.0;floatTU_calibration=0.0;floatT;//當(dāng)前溫度f(wàn)loatK=3291.30;//截距floattdsValue=0.0;unsignedlongintavgValue;floatphValue=0.0;staticconstunsignedcharPROGMEMstr1[]={0x07,0xE0,0x44,0x20,0x24,0x20,0x07,0xE0,0x84,0x20,0x44,0x20,0x07,0xE0,0x20,0x00,0x2F,0xF0,0x4A,0x50,0x4A,0x50,0x8A,0x50,0x8A,0x50,0x1F,0xF8};/*"溫",0*/staticconstunsignedcharPROGMEMstr2[]={0x02,0x00,0x01,0x00,0x3F,0xF8,0x24,0x20,0x3F,0xF8,0x24,0x20,0x27,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x20,0x22,0x40,0x41,0x80,0x46,0x60,0x98,0x18};/*"度",1*/staticconstunsignedcharPROGMEMstr3[]={0x00,0x80,0x40,0x80,0x20,0x80,0x17,0xF0,0x04,0x90,0x84,0x90,0x44,0x90,0x14,0x90,0x17,0xF0,0x20,0x80,0x20,0x90,0x40,0x88,0x4F,0xF8,0x00,0x08};/*"濁",2*/staticconstunsignedcharPROGMEMstr4[]={0x10,0x80,0x10,0x80,0x2F,0xF8,0x20,0x80,0x67,0xF0,0xA4,0x10,0x27,0xF0,0x24,0x10,0x27,0xF0,0x24,0x10,0x27,0xF0,0x24,0x10,0x24,0x10,0x2F,0xF8};/*"值",6*/staticconstunsignedcharPROGMEMstr5[]={0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x44,0x78,0x40,0xE0};/*"p",4*/staticconstunsignedcharPROGMEMstr6[]={0x00,0x00,0x00,0xEE,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0xEE,0x00,0x00};/*"H",5*/staticconstunsignedcharPROGMEMstr7[]={0x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00};/*"T",7*/staticconstunsignedcharPROGMEMstr8[]={0x00,0x00,0x00,0xF0,0x48,0x44,0x44,0x44,0x44,0x44,0x48,0xF0,0x00,0x00};/*"D",8*/staticconstunsignedcharPROGMEMstr9[]={0x00,0x00,0x00,0x3C,0x44,0x40,0x20,0x18,0x04,0x04,0x44,0x78,0x00,0x00};/*"S",9*/staticconstunsignedcharPROGMEMstr10[]={0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00};/*":",10*/staticconstunsignedcharPROGMEMstr11[]={0x40,0x00,0xA7,0x40,0x48,0xC0,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00};/*"℃",11*/staticconstunsignedcharPROGMEMstr12[]={0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x01,0x08,0x7D,0x90,0x05,0xA0,0x09,0x40,0x09,0x40,0x11,0x20,0x11,0x10,0x21,0x08,0x41,0x06,0x81,0x00,0x05,0x00,0x02,0x00};/*"水",0*/staticconstunsignedcharPROGMEMstr13[]={0x00,0x7C,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xFE,0x20,0x40,0x20,0x40,0x27,0xFC,0x24,0x04,0x24,0x44,0x24,0x44,0x24,0x44,0x24,0xB4,0x41,0x08,0x46,0x04,0x98,0x02};/*"質(zhì)",1*/staticconstunsignedcharPROGMEMstr14[]={0x10,0x40,0x10,0x40,0x10,0xA0,0x10,0xA0,0xFD,0x10,0x12,0x08,0x35,0xF6,0x38,0x00,0x54,0x88,0x50,0x48,0x92,0x48,0x11,0x50,0x11,0x10,0x10,0x20,0x17,0xFE,0x10,0x00};/*"檢",2*/staticconstunsignedcharPROGMEMstr15[]={0x00,0x04,0x27,0xC4,0x14,0x44,0x14,0x54,0x85,0x54,0x45,0x54,0x45,0x54,0x15,0x54,0x15,0x54,0x25,0x54,0xE5,0x54,0x21,0x04,0x22,0x84,0x22,0x44,0x24,0x14,0x08,0x08};/*"測(cè)",3*/staticconstunsignedcharPROGMEMstr16[]={0x08,0x80,0x08,0x48,0x0A,0x48,0x12,0x08,0x12,0x08,0x31,0x10,0x31,0x10,0x51,0x10,0x90,0xA0,0x10,0xA0,0x10,0x40,0x10,0x40,0x10,0xA0,0x11,0x10,0x12,0x08,0x14,0x06};/*"儀",4*///定義聯(lián)合體unionData{floatFloat;byteByte[4];//單精度浮點(diǎn)數(shù)float長(zhǎng)度為32位,也就是4Byte}a;//構(gòu)建發(fā)送浮點(diǎn)數(shù)字的節(jié)數(shù)組voidSend_float(floatdata){a.Float=data;Serial.write(a.Byte[0]);//打印一個(gè)數(shù)組的字節(jié)Serial.write(a.Byte[1]);//一個(gè)數(shù)組代表一個(gè)類(lèi)型的數(shù)據(jù),并且一一對(duì)應(yīng)Serial.write(a.Byte[2]);Serial.write(a.Byte[3]);}voidSend_float(floatFLOAT);voidTemperatureRead(){sensors.requestTemperatures();//發(fā)送命令獲取溫度T=sensors.getTempCByIndex(0);}voidpHread(){intbuf[10];//bufferforreadanalogfor(inti=0;i<10;i++)//Get10samplevaluefromthesensorforsmooththevalue{buf[i]=analogRead(pHSensorPin);delay(10);}for(inti=0;i<9;i++)//sorttheanalogfromsmalltolarge{for(intj=i+1;j<10;j++){if(buf[i]>buf[j]){inttemp=buf[i];buf[i]=buf[j];buf[j]=temp;}}}avgValue=0;for(inti=1;i<9;i++)//taketheaveragevalueof6centersampleavgValue+=buf[i];phValue=(float)avgValue*5.0/1024/8;//converttheanalogintomillivoltphValue=-5.8887*phValue+Offset;//convertthemillivoltintopHvalueif(phValue>8.50&&phValue<6.5)digitalWrite(10,HIGH);elsedigitalWrite(10,LOW);}voidTURead(){TemperatureRead();intValue=analogRead(TUSensorPin);//讀取模擬輸入口A0floatTU=Value*(5.0/1024.0);//將模擬讀數(shù)(0-1023)轉(zhuǎn)換為電壓(0-5V)TU_calibration=-0.0192*(T-25.0)+TU;//溫度校正公式TU_value=-865.68*TU_calibration+K;//標(biāo)準(zhǔn)曲線公式//0~1000的測(cè)量范圍if(TU_value<=0)TU_value=0.0;if(TU_value>=1000)TU_value=1000.0;if(TU_value>1)digitalWrite(8,HIGH);elsedigitalWrite(8,LOW);}voidTDSRead(){TemperatureRead();gravityTds.setTemperature(T);//設(shè)置溫度并執(zhí)行溫度補(bǔ)償gravityTds.update();//抽樣計(jì)算tdsValue=gravityTds.getTdsValue();//thengetthevalueif(tdsValue<=0)tdsValue=0.0;if(tdsValue>=1000)tdsValue=1000.0;if(tdsValue>600)digitalWrite(9,HIGH);elsedigitalWrite(9,LOW);}voiddisplay1(){display.clearDisplay();//清屏display.setTextColor(WHITE);display.drawBitmap(20,22,str12,16,16,1);//水display.drawBitmap(37,22,str13,16,16,1);//質(zhì)display.drawBitmap(54,22,str14,16,16,1);//檢display.drawBitmap(71,22,str15,16,16,1);//測(cè)display.drawBitmap(88,22,str16,16,16,1);//儀display.display();//開(kāi)顯示}voiddisplay2(){display.clearDisplay();//清屏display.setTextColor(WHITE);display.setTextSize(1);//設(shè)置字體大小display.setCursor(40,5);//設(shè)置顯示位置display.print(T);//輸出字符display.setTextColor(WHITE);display.setTextSize(1);//設(shè)置字體大小display.setCursor(40,20);//設(shè)置顯示位置display.print(TU_value);//輸出字符display.println("NTU");//輸出字符display.setTextColor(WHITE);display.setTextSize(1);//設(shè)置字體大小display.setCursor(44,35);//設(shè)置顯示位置display.println(phValue);//輸出字符display.setTextColor(WHITE);display.setTextSize(1);//設(shè)置字體大小display.setCursor(47,50);//設(shè)置顯示位置display.print(tdsValue);//輸出字符display.println("PPM");//輸出字符display.drawBitmap(0,0,str1,14,14,1);//溫display.drawBitmap(14,0,str2,14,14,1);//度display.drawBitmap(28,0,str10,7,14,1);//:display.drawBitmap(72,3,str11,12,12,1);//℃display.drawBitmap(0,15,str3,14,14,1);//濁display.drawBitmap(14,15,str2,14,14,1);//度display.drawBitmap(28,15,str10,7,14,1);//:display.drawBitmap(0,30,str5,7,14,1);//pdisplay.drawBitmap(7,30,str6,7,14,1);//Hdisplay.drawBitmap(15,30,str4,14,14,1);//值display.drawBitmap(30,30,str10,7,14,1);//:display.drawBitmap(0,45,str7,7,14,1);//Tdisplay.drawBitmap(7,45,str8,7,14,1);//Ddisplay.drawBitmap(14,45,str9,7,14,1);//Sdisplay.drawBitmap(21,45,str4,14,14,1);//值display.drawBitmap(36,45,str10,7,14,1);//:display.display();//開(kāi)顯示}voidbuzzer(){if((phValue>8.50&&phValue<6.5)||(TU_value>1)||(tdsValue>600)){digitalWrite(3,LOW);delay(200);digitalWrite(3,HIGH);}}voidsetup(){Serial.begin(115200);display.begin(SSD1306_SWITCHCAPVCC,0x3C);display1();pinMode(10,OUTPUT);//pH警告燈pinMode(9,OUTPUT);//TDS警告燈pinMode(8,OUTPUT);//渾濁度警告燈pinMode(3,OUTPUT);//蜂鳴器digitalWrite(3,HIGH);gravityTds.setPin(TdsSensorPin);gravityTds.setAref(5.0);//referencevoltageonADC,default5.0VonArduinoUNOgravityTds.setAdcRange(1024);//1024for10bitADC;4096for12bitADCgravityTds.begin();//initializationsensors.begin();}voidloop(){TemperatureRead();TDSRead();TURead();pHread();display2();Send_float(T);Send_float(phValue);Send_float(tdsValue);Send_float(TU_value);buzzer();delay(100);}
附錄BESP8266程序#defineBLINKER_WIFI#include<Blinker.h>charauth[]="6eeead2ffb35";//輸入DeviceSecretKeycharssid[]="Chinanet-2.4G-A5A0";//輸入WiFi網(wǎng)絡(luò)名charpswd[]="qwertyuiop";//輸入
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼化玻璃采購(gòu)合同
- 屋面綠化箱涵施工合同
- 商鋪轉(zhuǎn)讓租賃合同書(shū)
- 工程分包木工合同
- 制作安裝承包合同
- 建房施工安全合同書(shū)
- 建筑工程拆除分包勞務(wù)合同
- 擴(kuò)大勞務(wù)分包規(guī)定合同
- 彩鋼瓦施工合同協(xié)議書(shū)
- 土工材料采購(gòu)合同
- 2025年全國(guó)國(guó)家版圖知識(shí)競(jìng)賽題庫(kù)及答案(中小學(xué)組)
- 站務(wù)一號(hào)線low培訓(xùn)
- APQP培訓(xùn)-經(jīng)典案例(完整版)
- 礦漿比重與礦漿濃度對(duì)照換算表 (1)
- 植物生理學(xué)第一章水分代謝
- 防汛應(yīng)急值班表(共2頁(yè))
- 最全的L13J1建筑工程做法(共170頁(yè))
- GB_T 40081-2021 電梯自動(dòng)救援操作裝置(高清-現(xiàn)行)
- 鋼筋混凝土檢查井技術(shù)交底
- GH2-B組合型電氣火災(zāi)監(jiān)控探測(cè)器安裝使用說(shuō)明書(shū)
- 單位公章使用登記表
評(píng)論
0/150
提交評(píng)論