基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋_第1頁
基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋_第2頁
基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋_第3頁
基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋_第4頁
基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第第頁基于STM32+NBIOT+華為云IOT設(shè)計(jì)的智能井蓋一、概述

(智能)井蓋是一種通過(物聯(lián)網(wǎng))技術(shù)實(shí)現(xiàn)對井蓋狀態(tài)監(jiān)測和管理的設(shè)備。當(dāng)前介紹基于(STM32)微控制器,BC26NB(IOT)模組以及華為云IOT平臺(tái)設(shè)計(jì)一款智能井蓋系統(tǒng)。該系統(tǒng)通過光線(傳感器)、霍爾傳感器、溫(濕度傳感器)等設(shè)備實(shí)現(xiàn)井蓋狀態(tài)的實(shí)時(shí)監(jiān)測,通過NBIOT(網(wǎng)絡(luò))將數(shù)據(jù)上傳到華為云IOT平臺(tái),再通過云平臺(tái)下發(fā)控制指令實(shí)現(xiàn)遠(yuǎn)程管理。

應(yīng)用場景

智能井蓋系統(tǒng)可以廣泛應(yīng)用于城市管理、交通建設(shè)等領(lǐng)域,其中具體應(yīng)用場景包括:

(1)實(shí)時(shí)監(jiān)測井蓋狀態(tài),及時(shí)發(fā)現(xiàn)井蓋開放或異常情況,提高城市管理的效率和安全性;

(2)提供實(shí)時(shí)(環(huán)境監(jiān)測)數(shù)據(jù),幫助提升城市環(huán)境監(jiān)測能力;

(3)利用NBIOT網(wǎng)絡(luò)和華為云平臺(tái)的遠(yuǎn)程控制功能,可以實(shí)現(xiàn)智能井蓋的開關(guān)控制和監(jiān)管,避免人工操作不便和監(jiān)管不到位引起的危險(xiǎn)。

二、(硬件)設(shè)計(jì)

本系統(tǒng)的硬件設(shè)計(jì)主要包括傳感器模塊和控制模塊兩部分,其中傳感器模塊主要負(fù)責(zé)采集井蓋狀態(tài)信息,控制模塊則負(fù)責(zé)數(shù)據(jù)處理和(通信)。

【1】傳感器模塊

(1)光線傳感器:光線傳感器用于感知井蓋上方光線強(qiáng)度,判斷井蓋是否露出地面。當(dāng)井蓋被遮住時(shí),光線傳感器輸出低電平;當(dāng)井蓋暴露在外時(shí),光線傳感器輸出高電平。

(2)霍爾傳感器:霍爾傳感器用于感知井蓋狀態(tài)(開/關(guān)),當(dāng)井蓋開啟時(shí),霍爾傳感器輸出高電平;當(dāng)井蓋關(guān)閉時(shí),霍爾傳感器輸出低電平。

(3)(溫度傳感器)和濕度傳感器:溫度傳感器和濕度傳感器用于感知井蓋下方的環(huán)境溫濕度,實(shí)時(shí)反饋給系統(tǒng),便于監(jiān)測井蓋下方環(huán)境狀況。

【2】控制模塊

(1)STM32微控制器:使用STM32F103C8T6微控制器,主要負(fù)責(zé)傳感器數(shù)據(jù)采集、處理和控制模塊與NBIOT模組之間的通信。

(2)BC26NBIOT模組:使用BC26NBIOT模組,通過NBIOT網(wǎng)絡(luò)將采集到的井蓋狀態(tài)數(shù)據(jù)上傳到華為云IOT平臺(tái),同時(shí)支持遠(yuǎn)程控制井蓋開關(guān)。

(3)LED指示燈:采用不同顏色的LED指示燈,將井蓋狀態(tài)(開/關(guān)、異常、低電量)實(shí)時(shí)反饋給用戶。

軟件設(shè)計(jì)軟件設(shè)計(jì)主要包括STM32微控制器程序設(shè)計(jì)和華為云IOT平臺(tái)開發(fā)兩部分。

STM32微控制器程序設(shè)計(jì):主要包括三個(gè)模塊:傳感器采集模塊、數(shù)據(jù)處理模塊和通信模塊。其中傳感器采集模塊負(fù)責(zé)采集傳感器數(shù)據(jù)并進(jìn)行處理;數(shù)據(jù)處理模塊根據(jù)采集的數(shù)據(jù)進(jìn)行邏輯處理,判斷井蓋狀態(tài);通信模塊負(fù)責(zé)與NBIOT模組之間的通信,將處理后的數(shù)據(jù)上傳至華為云IOT平臺(tái)。

三、華為云IOT平臺(tái)開發(fā)

在華為云IOT平臺(tái)上,需要進(jìn)行設(shè)備接入、數(shù)據(jù)模型定義、規(guī)則引擎配置和應(yīng)用開發(fā)等四個(gè)核心模塊的開發(fā)。其中,設(shè)備接入模塊包括設(shè)備注冊、獲取設(shè)備證書、建立連接等步驟,以保障設(shè)備與云平臺(tái)之間的安全通信;數(shù)據(jù)模型定義模塊需要根據(jù)實(shí)際需求定義相應(yīng)的數(shù)據(jù)模型,包括上傳數(shù)據(jù)格式、設(shè)備屬性和服務(wù)等。規(guī)則引擎配置模塊需要完成實(shí)時(shí)消息推送、遠(yuǎn)程控制和告警等功能。應(yīng)用開發(fā)模塊則是將完整的智能井蓋系統(tǒng)進(jìn)行打包,為用戶提供統(tǒng)一的操作接口。

華為云官網(wǎng):/

打開官網(wǎng),搜索物聯(lián)網(wǎng),就能快速找到設(shè)備接入IoTDA。

3.1物聯(lián)網(wǎng)平臺(tái)介紹

華為云物聯(lián)網(wǎng)平臺(tái)(IoT設(shè)備接入云服務(wù))提供海量設(shè)備的接入和管理能力,將物理設(shè)備聯(lián)接到云,支撐設(shè)備數(shù)據(jù)采集上云和云端下發(fā)命令給設(shè)備進(jìn)行遠(yuǎn)程控制,配合華為云其他產(chǎn)品,幫助我們快速構(gòu)筑物聯(lián)網(wǎng)解決方案。

使用物聯(lián)網(wǎng)平臺(tái)構(gòu)建一個(gè)完整的物聯(lián)網(wǎng)解決方案主要包括3部分:物聯(lián)網(wǎng)平臺(tái)、業(yè)務(wù)應(yīng)用和設(shè)備。

物聯(lián)網(wǎng)平臺(tái)作為連接業(yè)務(wù)應(yīng)用和設(shè)備的中間層,屏蔽了各種復(fù)雜的設(shè)備接口,實(shí)現(xiàn)設(shè)備的快速接入;同時(shí)提供強(qiáng)大的開放能力,支撐行業(yè)用戶構(gòu)建各種物聯(lián)網(wǎng)解決方案。

設(shè)備可以通過固網(wǎng)、2G/3G/(4G)/(5G)、(NB-IoT)、Wifi等多種網(wǎng)絡(luò)接入物聯(lián)網(wǎng)平臺(tái),并使用LW(M2M)/CoAP、MQTT、HTTPS協(xié)議將業(yè)務(wù)數(shù)據(jù)上報(bào)到平臺(tái),平臺(tái)也可以將控制命令下發(fā)給設(shè)備。

業(yè)務(wù)應(yīng)用通過調(diào)用物聯(lián)網(wǎng)平臺(tái)提供的A(PI),實(shí)現(xiàn)設(shè)備數(shù)據(jù)采集、命令下發(fā)、設(shè)備管理等業(yè)務(wù)場景。

3.2開通物聯(lián)網(wǎng)服務(wù)

地址:/product/iothub.html

開通標(biāo)準(zhǔn)版免費(fèi)單元。

開通之后,點(diǎn)擊總覽,查看接入信息。我們當(dāng)前設(shè)備準(zhǔn)備采用MQTT協(xié)議接入華為云平臺(tái),這里可以看到MQTT協(xié)議的地址和端口號等信息。

總結(jié):

端口號:MQTT(1883)|MQTTS(8883)接入地址:根據(jù)域名地址得到IP地址信息:

MicrosoftWindows[版本10.0.19044.2846](c)MicrosoftCorporation。保留所有權(quán)利。?C:Use(rs)11266>ping?正在Ping[00]具有32字節(jié)的數(shù)據(jù):來自00的回復(fù):字節(jié)=32時(shí)間=37msTTL=31來自00的回復(fù):字節(jié)=32時(shí)間=37msTTL=31來自00的回復(fù):字節(jié)=32時(shí)間=36msTTL=31來自00的回復(fù):字節(jié)=32時(shí)間=37msTTL=31?00的Ping統(tǒng)計(jì)信息:數(shù)據(jù)包:已發(fā)送=4,已接收=4,丟失=0(0%丟失),往返行程的估計(jì)時(shí)間(以毫秒為單位):最短=36ms,最長=37ms,平均=36ms?C:Users11266>MQTT協(xié)議接入端口號有兩個(gè),1883是非加密端口,8883是證書加密端口,(單片機(jī))無法加載證書,所以使用1883端口比較合適。接下來的(ESP8266)就采用1883端口連接華為云物聯(lián)網(wǎng)平臺(tái)。

3.3創(chuàng)建產(chǎn)品

(1)創(chuàng)建產(chǎn)品

點(diǎn)擊右上角創(chuàng)建產(chǎn)品。

(2)填寫產(chǎn)品信息

根據(jù)自己產(chǎn)品名字填寫,設(shè)備類型選擇自定義類型。

(3)添加自定義模型

產(chǎn)品創(chuàng)建完成之后,點(diǎn)擊進(jìn)入產(chǎn)品詳情頁面,翻到最下面可以看到模型定義。

模型簡單來說:就是存放設(shè)備上傳到云平臺(tái)的數(shù)據(jù)。比如:環(huán)境溫度、環(huán)境濕度、環(huán)境煙霧濃度、火焰(檢測)狀態(tài)圖等等,這些我們都可以單獨(dú)創(chuàng)建一個(gè)模型保存。

3.4添加設(shè)備

產(chǎn)品是屬于上層的抽象模型,接下來在產(chǎn)品模型下添加實(shí)際的設(shè)備。添加的設(shè)備最終需要與真實(shí)的設(shè)備關(guān)聯(lián)在一起,完成數(shù)據(jù)交互。

(1)注冊設(shè)備

點(diǎn)擊右上角注冊設(shè)備。

(2)根據(jù)自己的設(shè)備填寫

在彈出的對話框里填寫自己設(shè)備的信息。根據(jù)自己設(shè)備詳細(xì)情況填寫。

(3)保存設(shè)備信息

創(chuàng)建完畢之后,點(diǎn)擊保存并關(guān)閉,得到創(chuàng)建的設(shè)備密匙信息。該信息在后續(xù)生成MQTT三元組的時(shí)候需要使用。

3.5MQTT協(xié)議主題訂閱與發(fā)布

(1)MQTT協(xié)議介紹

當(dāng)前的設(shè)備是采用MQTT協(xié)議與華為云平臺(tái)進(jìn)行通信。

MQTT是一個(gè)物聯(lián)網(wǎng)傳輸協(xié)議,它被設(shè)計(jì)用于輕量級的發(fā)布/訂閱式消息傳輸,旨在為低帶寬和不穩(wěn)定的網(wǎng)絡(luò)環(huán)境中的物聯(lián)網(wǎng)設(shè)備提供可靠的網(wǎng)絡(luò)服務(wù)。MQTT是專門針對物聯(lián)網(wǎng)開發(fā)的輕量級傳輸協(xié)議。MQTT協(xié)議針對低帶寬網(wǎng)絡(luò),低計(jì)算能力的設(shè)備,做了特殊的優(yōu)化,使得其能適應(yīng)各種物聯(lián)網(wǎng)應(yīng)用場景。目前MQTT擁有各種平臺(tái)和設(shè)備上的客戶端,已經(jīng)形成了初步的生態(tài)系統(tǒng)。

MQTT是一種消息隊(duì)列協(xié)議,使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序(耦合),相對于其他協(xié)議,開發(fā)更簡單;MQTT協(xié)議是工作在TCP/IP協(xié)議上;由TCP/IP協(xié)議提供穩(wěn)定的網(wǎng)絡(luò)連接;所以,只要具備TCP協(xié)議棧的網(wǎng)絡(luò)設(shè)備都可以使用MQTT協(xié)議。本次設(shè)備采用的ESP8266就具備TCP協(xié)議棧,能夠建立TCP連接,所以,配合STM32代碼里封裝的MQTT協(xié)議,就可以與華為云平臺(tái)完成通信。

華為云的MQTT協(xié)議接入幫助文檔在這里:/devg-iothub/iot_02_2200.html

業(yè)務(wù)流程:

(2)華為云平臺(tái)MQTT協(xié)議使用限制

描述限制支持的MQTT協(xié)議版本3.1.1與標(biāo)準(zhǔn)MQTT協(xié)議的區(qū)別支持Qos0和Qos1支持Topic自定義不支持QoS2不支持will、ret(ai)nmsgMQTTS支持的安全等級采用TCP通道基礎(chǔ)+TLS協(xié)議(最高TLSv1.3版本)單帳號每秒最大MQTT連接請求數(shù)無限制單個(gè)設(shè)備每分鐘支持的最大MQTT連接數(shù)1單個(gè)MQTT連接每秒的吞吐量,即帶寬,包含直連設(shè)備和網(wǎng)關(guān)3KB/sMQTT單個(gè)發(fā)布消息最大長度,超過此大小的發(fā)布請求將被直接拒絕1MBMQTT連接心跳時(shí)間建議值心跳時(shí)間限定為30至1200秒,(推薦)設(shè)置為120秒產(chǎn)品是否支持自定義Topic支持消息發(fā)布與訂閱設(shè)備只能對自己的Topic進(jìn)行消息發(fā)布與訂閱每個(gè)訂閱請求的最大訂閱數(shù)無限制(3)主題訂閱格式

幫助文檔地址:/devg-iothub/iot_02_2200.html

對于設(shè)備而言,一般會(huì)訂閱平臺(tái)下發(fā)消息給設(shè)備這個(gè)主題。

設(shè)備想接收平臺(tái)下發(fā)的消息,就需要訂閱平臺(tái)下發(fā)消息給設(shè)備的主題,訂閱后,平臺(tái)下發(fā)消息給設(shè)備,設(shè)備就會(huì)收到消息。

(4)主題發(fā)布格式

對于設(shè)備來說,主題發(fā)布表示向云平臺(tái)上傳數(shù)據(jù),將(最新)的傳感器數(shù)據(jù),設(shè)備狀態(tài)上傳到云平臺(tái)。

這個(gè)操作稱為:屬性上報(bào)。

幫助文檔地址:/usermanual-iothub/iot_06_v5_3010.html

3.6MQTT三元組

MQTT協(xié)議登錄需要填用戶ID,設(shè)備ID,設(shè)備密碼等信息,就像我們平時(shí)登錄,微信一樣要輸入賬號密碼才能登錄。MQTT協(xié)議登錄的這3個(gè)參數(shù),一般稱為MQTT三元組。

接下來介紹,華為云平臺(tái)的MQTT三元組參數(shù)如何得到。

(1)MQTT服務(wù)器地址

要登錄MQTT服務(wù)器,首先記得先知道服務(wù)器的地址是多少,端口是多少。

幫助文檔地址:/iotdm/?region=cn-north-4#/dm-portal/home

MQTT協(xié)議的端口支持1883和8883,它們的區(qū)別是:8883是加密端口更加安全。但是單片機(jī)上使用比較困難,所以當(dāng)前的設(shè)備是采用1883端口進(jìn)連接的。

根據(jù)上面的域名和端口號,得到下面的IP地址和端口號信息:如果設(shè)備支持填寫域名可以直接填域名,不支持就直接填寫IP地址。(IP地址就是域名解析得到的)

華為云的MQTT服務(wù)器地址:00華為云的MQTT端口號:1883(2)生成MQTT三元組

華為云提供了一個(gè)在線工具,用來生成MQTT鑒權(quán)三元組:/

打開這個(gè)工具,填入設(shè)備的信息(也就是剛才創(chuàng)建完設(shè)備之后保存的信息),點(diǎn)擊生成,就可以得到MQTT的登錄信息了。

下面是打開的頁面:

3.7參考案例

華為云平臺(tái)部署開發(fā)也可以參考這里:

/blogs/381072

【基于華為云IOT平臺(tái)實(shí)現(xiàn)多節(jié)點(diǎn)溫度采集(STM32+NBIOT)】

四、讀取煙霧氣體濃度

【1】MQ2傳感器

以下是一個(gè)讀取MQ2傳感器數(shù)據(jù),并轉(zhuǎn)換為煙霧濃度的示例代碼,

#include"stm32f10x.h"#include?intmain(void){//初始化(ADC)(AD)C_InitTypeDefADC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.ADC_S(can)ConvMode=DISABLE;ADC_InitStructure.ADC_Con(ti)nuousConvMode=DISABLE;ADC_InitStructure.ADC_Ex(te)rnalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,?//配置ADC通道1的GPIO引腳GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;GPIO_Init(GPIOA,?//啟動(dòng)ADC校準(zhǔn)ADC_Cmd(ADC1,ENABLE);ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));?//讀取ADC值A(chǔ)DC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_28Cycles5);ADC_SoftwareStartConvCmd(ADC1,ENABLE);while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));uint16_tadc_value=ADC_GetConversionValue(ADC1);?//計(jì)算煙霧濃度floatvoltage=(float)adc_value/4096.0f*3.3f;floatdensity=(voltage-0.4f)/0.4f*10000.0f;?//打印出煙霧濃度printf("MQ2SmokeDensity:%.2fppmn",density);}????floatadc_average(){constintnum_discarded=3;//剔除的最大/最小值數(shù)量floatsamples[20];//存儲(chǔ)采樣結(jié)果的數(shù)組//采集數(shù)據(jù)for(inti=0;isamples[j]){floattemp=samples[i];samples[i]=samples[j];samples[j]=temp;}}}//計(jì)算剩下的平均值floatsum=0;for(inti=num_discarded;i【2】MQ4傳感器

以下是基于HAL庫的STM32F103ZET6讀取MQ4煙霧傳感器的代碼:

#include"gpio.h"?/*MQ4傳感器的引腳定義*/#defineMQ4_PORTGPIOA#defineMQ4_PINGPIO_PIN_0?/*MQ4傳感器的校準(zhǔn)電壓*/#defineMQ4_RL_VALUE10//RL值為10kΩ#defineMQ4_CALCULATE_RO_CLEAN(a(dc)Value)((float)(RL_VALUE*(4096-adcValue)/adcValue))?/*獲取MQ4傳感器的數(shù)據(jù)*/floatget_mq4_value(){uint32_tadc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論