項目3任務(wù)8-物聯(lián)網(wǎng)APP監(jiān)測壓力值_第1頁
項目3任務(wù)8-物聯(lián)網(wǎng)APP監(jiān)測壓力值_第2頁
項目3任務(wù)8-物聯(lián)網(wǎng)APP監(jiān)測壓力值_第3頁
項目3任務(wù)8-物聯(lián)網(wǎng)APP監(jiān)測壓力值_第4頁
項目3任務(wù)8-物聯(lián)網(wǎng)APP監(jiān)測壓力值_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2相關(guān)知識34任務(wù)小結(jié)與練習1任務(wù)實施任務(wù)引入與目標物聯(lián)網(wǎng)APP監(jiān)測壓力值一、任務(wù)引入與目標任務(wù)目標任務(wù)8將參考溫濕度監(jiān)測,實現(xiàn)壓力監(jiān)測。當然壓力傳感器是模擬量傳感器,使用AD轉(zhuǎn)換得到數(shù)字量,在檢測原理方面和溫濕度傳感器還是有區(qū)別的。任務(wù)引入任務(wù)6實現(xiàn)了溫濕度的展示??梢韵胂?如果換一種傳感器,也是可以實現(xiàn)數(shù)據(jù)的采集、傳輸、解析、展示的。這樣就可以根據(jù)實際需要,拓展物聯(lián)網(wǎng)系統(tǒng)的功能,而網(wǎng)關(guān)、APP程序只需要微調(diào)即可。二、相關(guān)知識薄膜壓力傳感器介紹薄膜壓力傳感器是采用柔性壓力傳感技術(shù),在柔韌、輕薄的材料上印刷附著力強、耐彎折、靈敏度高的柔性納米功能材料。當感知到外界壓力時,傳感器電阻值發(fā)生變化,采用簡單的電路即可轉(zhuǎn)換成相應(yīng)變化強度的電信號輸出。薄膜壓力傳感器外觀如圖3-41所示。圖3-41薄膜壓力傳感器外觀二、相關(guān)知識轉(zhuǎn)換電路轉(zhuǎn)換電路較為簡單,將傳感器串聯(lián)一個固定電阻,測量固定電阻兩端的輸出電壓,公式為:一般情況下,固定電阻取值建議是取傳感器應(yīng)用電阻范圍值的1/3到1/2。另外,通過選擇合適的固定電阻,可以使壓力和輸出電壓在一定壓力范圍內(nèi)呈現(xiàn)一定程度的近似線性關(guān)系。根據(jù)測量電路的阻抗要求,分壓器后可以加一個運算放大器,如圖3-42所示。Vout=VCC×R0/(R0+Rs)(3-1)圖3-42薄膜壓力傳感器轉(zhuǎn)換電路二、相關(guān)知識Arduino開發(fā)環(huán)境下的模數(shù)轉(zhuǎn)換端口(ADC)在薄膜壓力傳感器應(yīng)用中,ADC引腳需要設(shè)置為輸入模式INPUT,當然如果不設(shè)置則默認就是輸入模式。ESP32的ADC引腳輸入電平可調(diào)用analogRead函數(shù)讀取,函數(shù)的返回值是ADC轉(zhuǎn)換后的數(shù)字量。ESP32的ADC是12位的,故數(shù)字量的范圍為0~4095。pinMode(PRES_PIN,INPUT);//ADC引腳為輸入模式analogRead(PRES_PIN);//讀取壓力值并轉(zhuǎn)換三、任務(wù)實施實施設(shè)備ESP32網(wǎng)關(guān)、薄膜壓力傳感器、轉(zhuǎn)換電路各一個,杜邦線若干,安裝了Arduino開發(fā)環(huán)境和AndroidStudio開發(fā)環(huán)境的計算機,部署了MQTT服務(wù)器的云服務(wù)器。1.網(wǎng)關(guān)和薄膜壓力傳感器硬件連接如圖3-43所示,轉(zhuǎn)換電路的AO連接網(wǎng)關(guān)的IO36(SVP引腳)實物如圖3-44所示。實施過程圖3-43硬件連接示意圖圖3-44硬件連接實物圖三、任務(wù)實施2.網(wǎng)關(guān)程序設(shè)計(1)宏、變量定義。#defineDHT11_PIN26#defineLED_PIN25#definePRES_PIN36/*需要操作的產(chǎn)品標識符(溫度、濕度、壓力)*/StringTempIdentifier="temperature";StringHumiIdentifier="humidity";StringPresIdentifier="pressure";其中,該程序?qū)in36定義為宏名PRES_PIN。增加了“pressure”字段的定義,作為上報MQTT消息payload中的壓力字段。三、任務(wù)實施(2)初始化函數(shù)。在初始化函數(shù)中,將ADC引腳的工作模式設(shè)置為輸入,其他部分和前面任務(wù)中的網(wǎng)關(guān)程序一致。voidsetup(){pinMode(PRES_PIN,INPUT);pinMode(LED_PIN,OUTPUT);Serial.begin(115200);/*連接WIFI*/connectWiFi();client.setServer(mqtt_server,PORT);//沒有提供用戶名和密碼,因為EMQX服務(wù)器允許公開訪問,如果設(shè)置的話是需要提供的/*設(shè)置回調(diào)函數(shù),當收到訂閱消息時會執(zhí)行回調(diào)函數(shù)*/client.setCallback(callback);/*連接到MQTT服務(wù)器*/reconnect();}三、任務(wù)實施(3)loop函數(shù)。每2分鐘上報3條消息。第3條消息中,壓力值為analogRead(PRES_PIN),假如返回值為200,則MQTT消息的payload為{"Pressure":200}。uint8_ttempTime=0;voidloop(){if(!client.connected()){reconnect();}/*兩分鐘上報兩次溫濕度信息*/if(tempTime>240){tempTime=0;DHT.read(DHT11_PIN);Serial.print("DHT.temperature=");Serial.println(DHT.temperature);Serial.print("DHT.humidity=");Serial.println(DHT.humidity);Serial.print("analogRead(PRES_PIN)=");Serial.println(analogRead(PRES_PIN));client.publish(pubTopic,("{\""+TempIdentifier+"\":"+DHT.temperature+"}").c_str());client.publish(pubTopic,("{\""+HumiIdentifier+"\":"+DHT.humidity+"}").c_str());client.publish(pubTopic,("{\""+PresIdentifier+"\":"+analogRead(PRES_PIN)+"}").c_str());}else{tempTime++;delay(500);}client.loop();}三、任務(wù)實施3.APP程序設(shè)計case3://MQTT收到消息回傳if(msg.obj.toString().contains("temperature")){StringT_val=msg.obj.toString().substring(msg.obj.toString().indexOf("temperature")+13,msg.obj.toString().indexOf("}"));Stringtext_val=T_val+"℃";binding2.text21.setText(text_val);}if(msg.obj.toString().contains("humidity")){StringH_val=msg.obj.toString().substring(msg.obj.toString().indexOf("humidity")+10,msg.obj.toString().indexOf("}"));Stringtext_val=H_val+"%";binding2.text22.setText(text_val);}if(msg.obj.toString().contains("pressure")){對于壓力值的解析展示程序,參照之前溫濕度消息的解析編寫即可,將解析值更新在text23中。截取子字符串時,起始索引是由字段首字符的索引加上偏移量得到的,偏移量需要計算準確。StringH_val=msg.obj.toString().substring(msg.obj.toString().indexOf("pressure")+10,msg.obj.toString().indexOf("}"));Stringtext_val="壓力:"+H_val;binding2.text23.setText(text_val);}//Toast.makeText(SecondActivity.this,msg.obj.toString(),Toast.LENGTH_SHORT).show();break;三、任務(wù)實施4.結(jié)果展示當薄膜壓力傳感器沒有壓力時,數(shù)字量較大,如圖3-45所示。當薄膜壓力傳感器受壓時,數(shù)字量較小,如圖3-46所示。因為串口打印的壓力值和上報的壓力值是在兩條語句監(jiān)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論