1. 功能介紹
隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,智能家居控制系統(tǒng)成為了人們追求便捷、舒適和安全生活的重要組成部分。為了滿足用戶對智能家居的需求,設計了一款基于華為云物聯(lián)網(wǎng)平臺的智能家居控制系統(tǒng),硬件采用了STM32和ESP8266的組合,實現(xiàn)了設備的上云連接。
傳統(tǒng)的家居控制系統(tǒng)存在一些不足,比如需要人工操作、無法實現(xiàn)遠程控制等。而我們的智能家居控制系統(tǒng),通過與華為云物聯(lián)網(wǎng)平臺的連接,可以實現(xiàn)遠程控制各種電器開關(guān),并且可以遠程收集家里煤氣、天然氣、煙霧、光照度、溫度濕度等信息,為用戶提供更加智能化和便捷的家居體驗。
智能家居控制系統(tǒng)具有以下主要特點和功能:
- 遠程控制:通過與華為云物聯(lián)網(wǎng)平臺的連接,用戶可以通過手機APP或者Web界面實現(xiàn)對家里各種電器開關(guān)的遠程控制。比如,可以遠程打開空調(diào)、關(guān)閉燈光等,無論身在何處都能夠?qū)崿F(xiàn)對家居設備的控制。
- 多種傳感器數(shù)據(jù)采集:系統(tǒng)采用了多種傳感器,包括煤氣傳感器、天然氣傳感器、煙霧傳感器、光照度傳感器、溫濕度傳感器等,可以實時采集家里的環(huán)境信息。這些數(shù)據(jù)通過ESP8266模塊上傳到華為云物聯(lián)網(wǎng)平臺,用戶可以隨時查看家居環(huán)境的狀態(tài)。
- 安全監(jiān)測:通過煤氣傳感器、天然氣傳感器和煙霧傳感器等,我們的系統(tǒng)可以實時監(jiān)測家里的安全狀況。一旦檢測到異常情況,比如煤氣泄漏或者火災,系統(tǒng)會立即發(fā)送警報通知用戶,保障家庭安全。
- 智能化場景設置:基于華為云物聯(lián)網(wǎng)平臺的數(shù)據(jù)處理能力,智能家居控制系統(tǒng)可以實現(xiàn)智能化的場景設置。比如,用戶可以根據(jù)時間、溫度、濕度等條件,設置自動調(diào)節(jié)空調(diào)溫度,實現(xiàn)節(jié)能和舒適的效果。
硬件介紹:
主控MCU: STM32F103ZET6
煙霧檢測傳感器: MQ2
天然氣檢測傳感:MQ5
溫度濕度檢測傳感器: DHT11
光照強度檢測傳感器: BH1750
物聯(lián)網(wǎng)云平臺: 華為云物聯(lián)網(wǎng)平臺
電器開關(guān)模擬采用板載的LED燈、繼電器。
WIFI: ESP8266 這是支持串口AT指令控制的WIFI模塊,聯(lián)網(wǎng)比較方便。
與華為云物聯(lián)網(wǎng)平臺通信的協(xié)議: MQTT
說明: 當前程序里的MQTT協(xié)議代碼是參考MQTT官方文檔編寫的,不是使用ESP8266內(nèi)置的,所以程序并不依賴ESP8266專用或者指定的SDK,使用任意可以上網(wǎng)的網(wǎng)卡都可以套用,并不是一定非要使用ESP8266。
2. 登錄華為云創(chuàng)建云端設備
2.1 創(chuàng)建產(chǎn)品
華為運官網(wǎng): https://www.huaweicloud.com/



在這里可以查看接入的協(xié)議的端口號和地址。


MQTT (1883) a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
我們設備接入的協(xié)議選擇MQTT,端口對應是1883
接下來繼續(xù)創(chuàng)建產(chǎn)品,點擊產(chǎn)品頁面,點擊右上角創(chuàng)建產(chǎn)品:



2.2 創(chuàng)建設備


這是我的設備信息:
設備ID
61a580fad28ce3028832c2d8_esp8266_iot
?
設備密鑰
1126626497
{
"device_id": "61a580fad28ce3028832c2d8_esp8266_iot",
"secret": "1126626497"
}
2.3 產(chǎn)品模型定義
這一步就是設置上報設備的屬性,也就是設備的數(shù)據(jù)類型定義。




2.4 生成MQTT登錄密匙
創(chuàng)建完產(chǎn)品、設備之后,接下來就需要知道如何通過MQTT協(xié)議登陸華為云服務器。


MQTT設備登陸密匙生成地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

下面就得到了MQTT協(xié)議設備登錄的參數(shù)。
2.5 使用MQTT客戶端軟件登錄
所有的參數(shù)已經(jīng)得到,接下來采用MQTT客戶端登錄華為云進行測試。
下面這個軟件是自己開發(fā)的,為了方便測試MQTT協(xié)議登錄。
華為云物聯(lián)網(wǎng)平臺的域名是: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
華為云物聯(lián)網(wǎng)平臺的IP地址是: 121.36.42.100

在軟件里參數(shù)填充正確之后,就看到設備已經(jīng)連接成功了。
接下來打開設備頁面,可以看到設備已經(jīng)在線了。

2.6 上報數(shù)據(jù)
在這個文檔里介紹了MQTT上報數(shù)據(jù)的格式。



總結(jié)的格式:
//訂閱主題: 平臺下發(fā)消息給設備
$oc/devices/61a580fad28ce3028832c2d8_esp8266_iot/sys/messages/down
?
//設備上報數(shù)據(jù)
$oc/devices/61a580fad28ce3028832c2d8_esp8266_iot/sys/properties/report
?
//上報的屬性消息 (一次可以上報多個屬性,在json里增加就行了)
{"services": [{"service_id": "dht11","properties":{"DHT11-C":50}}]}
下面采用MQTT軟件上報數(shù)據(jù):


到此,設備數(shù)據(jù)已經(jīng)上報成功,如果需要增加更多的屬性,按照流程繼續(xù)增加即可。
3. STM32+ESP8266上報數(shù)據(jù)到華為云
項目源碼下載: https://download.csdn.net/download/xiaolong1126626497/81993720
3.1 硬件設備效果圖


3.2 BH1750.c 光照度傳感器
#include "bh1750.h"
float Read_BH1750_Data()
{
unsigned char t0;
unsigned char t1;
float t;
u8 r_s=0;
IIC_Start(); //發(fā)送起始信號
IIC_WriteOneByteData(0x46);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:1\\r\\n");
IIC_WriteOneByteData(0x01);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:2\\r\\n");
IIC_Stop(); //停止信號
IIC_Start(); //發(fā)送起始信號
IIC_WriteOneByteData(0x46);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:3\\r\\n");
IIC_WriteOneByteData(0x01);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:4\\r\\n");
IIC_Stop(); //停止信號
IIC_Start(); //發(fā)送起始信號
IIC_WriteOneByteData(0x46);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:5\\r\\n");
IIC_WriteOneByteData(0x10);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:6\\r\\n");
IIC_Stop(); //停止信號
DelayMs(300); //等待
IIC_Start(); //發(fā)送起始信號
IIC_WriteOneByteData(0x47);
r_s=IIC_GetACK();//獲取應答
if(r_s)printf("error:7\\r\\n");
t0=IIC_ReadOneByteData(); //接收數(shù)據(jù)
IIC_SendACK(0); //發(fā)送應答信號
t1=IIC_ReadOneByteData(); //接收數(shù)據(jù)
IIC_SendACK(1); //發(fā)送非應答信號
IIC_Stop(); //停止信號
t=(((t0< 8)|t1)/1.2);
return t;
}

基于STM32設計的智能家居控制系統(tǒng)(華為云IOT)