




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東中山大學(xué)附屬口腔醫(yī)院放射科影像技師招聘模擬試卷有答案詳解
- 名著《簡愛》讀后感15篇
- 2025年宿州市宿馬園區(qū)兩站兩員招聘11人模擬試卷及參考答案詳解一套
- 2025年安徽理工大學(xué)公開招聘電氣與工程學(xué)院副院長考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(歷年真題)
- 2025湖南岳陽市湘一南湖學(xué)校招聘技術(shù)教師模擬試卷(含答案詳解)
- 2025年甘肅省嘉峪關(guān)市事業(yè)單位集中引進(jìn)高層次和急需緊缺人才50人(含教育系統(tǒng))考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(新)
- 2025年甘肅酒泉肅州區(qū)教育事業(yè)發(fā)展服務(wù)中心選拔工作人員模擬試卷附答案詳解(典型題)
- 2025年共享充電寶合作協(xié)議書
- 2025年超高純氣體的純化設(shè)備合作協(xié)議書
- 2025貴州銅仁市江口縣人民醫(yī)院招聘青年就業(yè)見習(xí)崗位人員2人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解一套
- 六年級(jí)語文下冊(cè)《浪淘沙》教學(xué)過程中實(shí)錄
- 人教版五年級(jí)數(shù)學(xué)上冊(cè)第二單元位置達(dá)標(biāo)測(cè)試卷(含答案)
- 工貿(mào)企業(yè)公司級(jí)安全培訓(xùn)課件
- 企業(yè)合規(guī)法律體檢詳盡報(bào)告
- 新能源工程機(jī)械設(shè)備配置計(jì)劃
- 2025年江蘇省南京市中考英語真題卷含答案解析
- QC/T 222-2025自卸汽車
- 物聯(lián)網(wǎng)水表采購方案投標(biāo)文件(技術(shù)方案)
- 養(yǎng)殖淡水鱖魚創(chuàng)新創(chuàng)業(yè)項(xiàng)目商業(yè)計(jì)劃書
- 2025至2030中國文檔存儲(chǔ)和管理服務(wù)行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 事業(yè)單位招聘綜合基礎(chǔ)知識(shí)真題及答案(精準(zhǔn)題庫)
評(píng)論
0/150
提交評(píng)論