基于ESP8266的大棚環(huán)境監(jiān)測(cè)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于ESP8266的大棚環(huán)境監(jiān)測(cè)設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于ESP8266的大棚環(huán)境監(jiān)測(cè)設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于ESP8266的大棚環(huán)境監(jiān)測(cè)設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于ESP8266的大棚環(huán)境監(jiān)測(cè)設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

附錄BH1750:intBH1750_Read(intaddress){inti=0;Wire.beginTransmission(address);Wire.requestFrom(address,2);while(Wire.available()){buff[i]=Wire.read();i++;}Wire.endTransmission();returni;}voidBH1750_Init(intaddress){Wire.beginTransmission(address);Wire.write(0x10);Wire.endTransmission();}在loop()中循環(huán)讀取BH1750的值并進(jìn)行處理輸出inti;uint16_tval=0;if(2==BH1750_Read(BH1750address)){val=((buff[0]<<8)|buff[1])/1.2;Serial.print(val,DEC);}delay(1000);OLED:編寫oled初始化及顯示函數(shù)voidOLED_Init(){oled.begin(SSD1306_SWITCHCAPVCC,0x3C);//"SSD1306_SWITCHCAPVCC"表示顯示器為OLEDoled.setTextColor(WHITE);//開像素點(diǎn)發(fā)光oled.clearDisplay();//清屏}voidOLED_ShowString(uint8_tx,uint8_ty,uint8_tfont_size,Stringstring){oled.setTextSize(font_size);//設(shè)置字體尺寸(>=1)oled.setCursor(x,y);//設(shè)置顯示坐標(biāo)oled.println(string);//顯示內(nèi)容oled.display();//開啟顯示}voidOLED_ShowNum(uint8_tx,uint8_ty,uint8_tfont_size,intNum){oled.setTextSize(font_size);oled.setCursor(x,y);oled.println(Num);oled.display();}通過字符串將我們讀取到的光照強(qiáng)度和溫濕度顯示出來OLED_ShowString(1,9,2,"Temp:"+(String)temperature+"C");OLED_ShowString(1,27,2,"Hum:"+(String)humidity+"%");OLED_ShowString(1,45,2,"Light:"+(String)val);數(shù)據(jù)上報(bào):constchar*dhttopic="temp01";String

msg="#"+(String)temperature+"#"+(String)humidity+"#"+ledstatus+"#"+val+"#"+beepstatus;//數(shù)據(jù)上傳client.publish(dhttopic,msg.c_str());數(shù)據(jù)下發(fā):

判斷下發(fā)的數(shù)據(jù)是on還是offvoidcallback(char*topic,byte*payload,unsignedintlength){

Serial.print("Messagearrived[");

Serial.print(topic);

Serial.print("]");

StringMqtt_Buff="";

for(inti=0;i<length;i++){

Mqtt_Buff+=(char)payload[i];

}

Serial.print(Mqtt_Buff);

Serial.println();

//SwitchontheLEDifan1wasreceivedasfirstcharacter

if(Mqtt_Buff=="on"){//如果接收字符on,亮燈

turnOnLed();//開

}elseif(Mqtt_Buff=="off"){//如果接收字符off,亮燈

turnOffLed();//關(guān)

}

Mqtt_Buff="";}微信小程序://

index.js//

獲取應(yīng)用實(shí)例const

app

=

getApp()import

mqtt

from

'../../utils/js/mqtt.min.js';//加載mqtt庫Page({

data:

{

uid:"cb9e7a55986e43618c454c489688c6a4",//用戶密鑰,巴法云控制臺(tái)獲取

ledtopic:"SmartAgr01",//控制led的主題,mqtt控制臺(tái)創(chuàng)建

dhttopic:"temp01",//傳輸溫濕度的主題,控制臺(tái)創(chuàng)建

device_status:"離線",//

顯示led是否在線的字符串,默認(rèn)離線

ledOnOff:"關(guān)閉",

beepOnOff:"正常",

checked:

false,//led的狀態(tài)。默認(rèn)led關(guān)閉

wendu:"",//溫度值,默認(rèn)為空

shidu:"",//濕度值,默認(rèn)為空

light:"",//光照值,默認(rèn)為空

ledicon:"/utils/img/lightoff.png",//顯示led圖標(biāo)的狀態(tài)。默認(rèn)是關(guān)閉狀態(tài)圖標(biāo)

client:

null,//mqtt客戶端,默認(rèn)為空

},

mqttConnect(){

var

that

=

this

//MQTT連接的配置

var

options=

{

keepalive:

60,

//60s

,表示心跳間隔

clean:

true,

//cleanSession不保持持久會(huì)話

protocolVersion:

4,

//MQTT

v3.1.1

clientId:this.data.uid

}

//初始化mqtt連接

this.data.client

=

mqtt.connect('wxs://:9504/wss',options)

//

連接mqtt服務(wù)器

this.data.client.on('connect',

function

()

{

console.log('連接服務(wù)器成功')

//訂閱dht11溫濕度主題

that.data.client.subscribe(that.data.dhttopic,

function

(err)

{

if

(err)

{

console.log(err)

}

})

})

//接收消息

that.data.client.on('message',

function

(topic,

message)

{

console.log(topic)

var

msg

=

message.toString()

if(topic

==

that.data.dhttopic){//如果是溫濕度主題的消息

//假設(shè)上傳的數(shù)據(jù)為#23#45#off,其中溫度是23,濕度45,led為關(guān)閉狀態(tài)

if(msg.indexOf("#")

!=

-1){//如果數(shù)據(jù)里包含#號(hào),表示獲取的是傳感器值,因?yàn)閱纹瑱C(jī)上傳數(shù)據(jù)的時(shí)候用#號(hào)進(jìn)行了包裹

//如果有#號(hào)就進(jìn)行字符串分割

var

all_data_arr

=

msg.split("#");

//分割數(shù)據(jù),并把分割后的數(shù)據(jù)放到數(shù)組里。

console.log(all_data_arr)//打印數(shù)組

if(all_data_arr[3]

!=

undefined){//判斷是否上傳了led狀態(tài)

if(all_data_arr[3]

==

"on"){//如果單片機(jī)處于打開狀態(tài)

that.setData({

//數(shù)據(jù)賦值給變量

ledOnOff:"打開",//賦值led狀態(tài)

})

}else{

that.setData({

//數(shù)據(jù)賦值給變量

ledOnOff:"關(guān)閉",//賦值led狀態(tài)

})

}

}

if(all_data_arr[5]

!=

undefined){//判斷是否上傳了led狀態(tài)

if(all_data_arr[5]

==

"on"){//如果單片機(jī)處于打開狀態(tài)

that.setData({

//數(shù)據(jù)賦值給變量

beepOnOff:"異常",//賦值led狀態(tài)

})

}else{

that.setData({

//數(shù)據(jù)賦值給變量

beepOnOff:"正常",//賦值led狀態(tài)

})

}

}

that.setData({

//數(shù)據(jù)賦值給變量

wendu:all_data_arr[1],//賦值溫度

shidu:all_data_arr[2],

//賦值濕度

light:all_data_arr[4],

//賦值光照

})

}

}

//打印消息

console.log('收到消息:'+msg)

})

//斷線重連

this.data.client.on("reconnect",

function

()

{

console.log("重新連接")

});

},//屏幕打開時(shí)執(zhí)行的函數(shù)

onLoad()

{

//連接mqtt

this.mqttConnect()

//檢查設(shè)備是否在線

this.getOnline()

//檢查設(shè)備是打開還是關(guān)閉

this.getOnOff()

//獲取服務(wù)器上現(xiàn)在存儲(chǔ)的dht11數(shù)據(jù)

this.getdht11()

},

//控制燈的函數(shù)1,小滑塊點(diǎn)擊后執(zhí)行的函數(shù)

onChange({

detail

}){

//detail是滑塊的值,檢查是打開還是關(guān)閉,并更換正確圖標(biāo)

this.setData({

checked:

detail,

});

if(detail

==

true){//如果是打開操作

this.data.client.publish(this.data.ledtopic,

'on')//mqtt推送on

this.setData({

ledicon:

"/utils/img/lighton.png",//設(shè)置led圖片為on

});

}else{

this.data.client.publish(this.data.ledtopic,

'off')//mqtt推送off

this.setData({

ledicon:

"/utils/img/lightoff.png",//設(shè)置led圖片為off

});

}

},

//點(diǎn)擊led圖片執(zhí)行的函數(shù)

onChange2(){

var

that

=

this

//如果點(diǎn)擊前是打開狀態(tài),現(xiàn)在更換為關(guān)閉狀態(tài),并更換圖標(biāo),完成狀態(tài)切換

if(

that.data.checked

==

true){

this.data.client.publish(this.data.ledtopic,

'off')

this.setData({

ledicon:

"/utils/img/lightoff.png",//設(shè)置led圖片為off

checked:false

//設(shè)置led狀態(tài)為false

});

}else{

//如果點(diǎn)擊前是關(guān)閉狀態(tài),現(xiàn)在更換為打開狀態(tài),并更換圖標(biāo),完成狀態(tài)切換

this.data.client.publish(this.data.ledtopic,

'on')

that.setData({

ledicon:

"/utils/img/lighton.png",//設(shè)置led圖片為on

checked:true//設(shè)置led狀態(tài)為tr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論