一、項(xiàng)目背景
隨著物聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,越來(lái)越多的智能設(shè)備應(yīng)運(yùn)而生,而溫度采集系統(tǒng)是其中重要的一類(lèi)。在現(xiàn)代工業(yè)和家庭生活中,溫度對(duì)于生產(chǎn)、居住和儲(chǔ)存等過(guò)程的控制有著非常重要的作用。因此,準(zhǔn)確地采集環(huán)境溫度數(shù)據(jù)并進(jìn)行處理和展示,對(duì)于人們的生產(chǎn)和生活都具有重要意義。
基于此背景,設(shè)計(jì)了基于STM32F030的多點(diǎn)無(wú)線(xiàn)溫度采集系統(tǒng),該系統(tǒng)可以通過(guò)多個(gè)獨(dú)立的采集設(shè)備,同時(shí)采集多個(gè)不同位置的溫度數(shù)據(jù),并分別通過(guò)MQTT協(xié)議上傳到OneNet平臺(tái),方便用戶(hù)遠(yuǎn)程管理和監(jiān)控溫度變化。同時(shí),該系統(tǒng)還配備了OLED顯示屏,可在本地實(shí)時(shí)顯示溫度信息,方便用戶(hù)及時(shí)了解環(huán)境溫度變化趨勢(shì)。
整個(gè)系統(tǒng)采用了STM32F030作為主控芯片,以保證系統(tǒng)性能穩(wěn)定可靠;溫度采集模塊采用DHT20,具有精度高、響應(yīng)快等特點(diǎn);NBIoT 通信模塊采用了移遠(yuǎn)BC260Y-CN,可以實(shí)現(xiàn)快速、安全地連接云平臺(tái);OLED顯示屏采用0.96寸SPI接口的顯示屏,驅(qū)動(dòng)芯片是SSD1306。整個(gè)系統(tǒng)設(shè)計(jì)緊湊、可靠,可以廣泛應(yīng)用于各種場(chǎng)合,為用戶(hù)提供精準(zhǔn)的環(huán)境溫度數(shù)據(jù)和便捷的數(shù)據(jù)處理及展示功能。
二、硬件選型
資料地址: https://z7po9bxpe4.k.topthink.com/@nb-iot/peitaoziyuanxiazai.html
硬件選型是基于需求和要求選擇合適的硬件組件來(lái)實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)的關(guān)鍵步驟。
在本項(xiàng)目中,選擇了以下硬件組件:
- 主控芯片:STM32F030 該芯片具有較高的性?xún)r(jià)比,支持高速時(shí)鐘頻率,集成了多種外設(shè)接口和功能模塊,同時(shí)也易于編程和開(kāi)發(fā)。
- 溫度采集模塊:DHT20 DHT20溫度傳感器具有高精度、響應(yīng)快等優(yōu)點(diǎn),可以快速準(zhǔn)確地采集環(huán)境溫度數(shù)據(jù),并與主控芯片進(jìn)行通信。
- NBIoT通信模塊:移遠(yuǎn)BC260Y-CN 移遠(yuǎn)BC260Y-CN通信模塊具有低功耗、穩(wěn)定性好、通信速度快等優(yōu)勢(shì),可以快速可靠地連接OneNet平臺(tái),實(shí)現(xiàn)數(shù)據(jù)上傳和下載。
- 顯示屏:0.96寸SPI接口OLED顯示屏,驅(qū)動(dòng)芯片是SSD1306。 該顯示屏具有低功耗、顯示清晰等特點(diǎn),可以快速顯示溫度數(shù)據(jù),方便用戶(hù)隨時(shí)了解溫度變化趨勢(shì)。
本項(xiàng)目中的硬件選型具有性?xún)r(jià)比高、功能強(qiáng)大、質(zhì)量可靠、采集精度高等優(yōu)點(diǎn),可以滿(mǎn)足多種溫度采集系統(tǒng)的設(shè)計(jì)需求,并提供了便捷易用的數(shù)據(jù)處理和展示功能。
三、NB-IoT 技術(shù)簡(jiǎn)介
【1】移動(dòng)通信技術(shù)
平常所講的2G、3G、4G中的G其實(shí)是Generation的意思,例如2G是指第二代移動(dòng)通信技術(shù)。每一代移動(dòng)通信技術(shù)都有對(duì)應(yīng)的網(wǎng)絡(luò)制式:
中國(guó)聯(lián)通:
- 2G -> GSM
- 3G -> WCDMA
- 4G -> TD-LTE、FDD-LTE
中國(guó)電信:
- 2G -> CDMA1X
- 3G -> CDMA2000
- 4G -> TD-LTE、FDD-LTE
其中,LTE的全稱(chēng)為L(zhǎng)ong Term Evolution,即長(zhǎng)期演進(jìn)。
【2】WPAN和LPWA簡(jiǎn)介
WPAN
WPAN的全稱(chēng)是Low-rate wireless personal area network(低速無(wú)線(xiàn)個(gè)人區(qū)域網(wǎng)絡(luò)),典型的代表有ZigBee、藍(lán)牙等,其特點(diǎn)是低復(fù)雜度、低功耗、低速率、低成本。
LPWA
LPWA的全稱(chēng)是Low Power Wide Area(低速無(wú)線(xiàn)廣域網(wǎng)),典型的代表有NB-IoT、eMTC、Lora和SigFox等,具有廣覆蓋、低功耗、低成本和大連接的特點(diǎn)。
【3】NB-IoT技術(shù)
實(shí)際上NB-IoT是基于LTE制式的一種移動(dòng)通信技術(shù),也就是說(shuō),它是4G技術(shù)的一種。下圖是LTE制式通信技術(shù)的各個(gè)分支對(duì)比:
LTE Cat-NB即NB-IoT,是基于LTE網(wǎng)絡(luò)制式而設(shè)計(jì)的一種具有低功耗、低速率、上行通信時(shí)延低和下行通信時(shí)延較高(相對(duì))特點(diǎn)的通信技術(shù),滿(mǎn)足對(duì)低功耗要求高但是對(duì)通信速率要求低的應(yīng)用場(chǎng)景。上圖中,還可以看到LTE Cat-M,它支持的通信速率比NB-IoT更高,可以應(yīng)用于對(duì)通信速率要求更高的應(yīng)用場(chǎng)景。注意,此處說(shuō)的通信速率是指通信的帶寬,不是說(shuō)通信的時(shí)延。
【4】NB-IoT技術(shù)相關(guān)的技術(shù)供應(yīng)商
NB-IoT技術(shù)相關(guān)的技術(shù)供應(yīng)商有:芯片解決方案商、模塊生產(chǎn)廠(chǎng)商、運(yùn)營(yíng)商。
(1)主要的芯片方案商有:高通、華為海思、Intel、RDA、簡(jiǎn)約納、MTK、TI、SEQUANS、MARVELL、 NODRIC和中興微等。
(2)主要的中國(guó)模塊生產(chǎn)廠(chǎng)商有:移遠(yuǎn)、芯訊通、中興、聯(lián)想和中國(guó)移動(dòng)等。
(3)運(yùn)營(yíng)商:中國(guó)移動(dòng)、中國(guó)聯(lián)通和中國(guó)電信。
【5】 應(yīng)用場(chǎng)景
由于NB-IoT技術(shù)具有低功耗、低速率、上行通信時(shí)延低和下行通信時(shí)延較高(相對(duì))的特點(diǎn),所以非常適用于數(shù)據(jù)采集上報(bào)類(lèi)的應(yīng)用場(chǎng)景,例如
- 環(huán)境溫濕度、光照度、氣體成分等信息的采集上報(bào)
- 火災(zāi)、煤氣泄漏、水浸等環(huán)境異常狀態(tài)監(jiān)控與報(bào)警場(chǎng)景
- 外部設(shè)備狀態(tài)信息采集與上報(bào)場(chǎng)景,例如遠(yuǎn)程抄表
NB-IoT的下行通信時(shí)延較高,約15秒左右(讀者需要以實(shí)際測(cè)試為準(zhǔn)),所以如果把NB-IoT用于下發(fā)指令或數(shù)據(jù)給終端設(shè)備,需要考慮這個(gè)時(shí)延問(wèn)題。如需對(duì)下行通信速率有更快速的要求,可以采用eMTC或CATn等技術(shù)。
四、OneNet服務(wù)器設(shè)計(jì)
【1】onenet平臺(tái)介紹
OneNet即為“中國(guó)移動(dòng)互聯(lián)網(wǎng)應(yīng)用服務(wù)平臺(tái)”,是中國(guó)移動(dòng)推出的物聯(lián)網(wǎng)云平臺(tái)服務(wù)。OneNet服務(wù)器是一個(gè)基于云計(jì)算技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)平臺(tái),旨在為用戶(hù)提供穩(wěn)定、安全、高效的數(shù)據(jù)云端存儲(chǔ)、處理、分析和展示等服務(wù)。
OneNet服務(wù)器具有以下主要特點(diǎn):
- 具有高可靠性和穩(wěn)定性,能夠保證用戶(hù)的數(shù)據(jù)安全和服務(wù)穩(wěn)定;
- 支持?jǐn)?shù)據(jù)實(shí)時(shí)采集和云端存儲(chǔ),并提供豐富的數(shù)據(jù)訪(fǎng)問(wèn)和查詢(xún)接口;
- 支持多種通信協(xié)議和數(shù)據(jù)格式,方便用戶(hù)接入和使用;
- 提供數(shù)據(jù)實(shí)時(shí)分析和處理功能,可以幫助用戶(hù)快速分析和處理大量數(shù)據(jù);
- 提供了可視化的數(shù)據(jù)展示界面和豐富的API接口,方便用戶(hù)自由定制和開(kāi)發(fā)。
在本項(xiàng)目中,通過(guò)使用MQTT協(xié)議將溫度數(shù)據(jù)上傳到OneNet服務(wù)器上,并使用其提供的數(shù)據(jù)分析和展示功能,可以輕松地實(shí)現(xiàn)環(huán)境溫度的實(shí)時(shí)監(jiān)測(cè)和管理,提高生產(chǎn)和生活效率,方便用戶(hù)的使用和管理。
【2】創(chuàng)建產(chǎn)品
官網(wǎng)鏈接:https://open.iot.10086.cn/console/summary
這里的數(shù)據(jù)協(xié)議可以選擇數(shù)據(jù)流
和JSON
兩種形式。我這里選擇數(shù)據(jù)流方式。
產(chǎn)品ID: OIcHdSz8R7
access_key: 8wXH2z97abNh9a37ndNB6ZWrR+eXVYVZnbvH3x3t29s=
【3】創(chuàng)建數(shù)據(jù)流模板
【4】創(chuàng)建設(shè)備1
設(shè)備詳情:
設(shè)備ID: 2103765871
設(shè)備密鑰: NU14N01INmlhTE9sOUpGUkNOREwzNjBJbVJ1RzFRdkw=
【5】創(chuàng)建設(shè)備2
設(shè)備ID: 2103766001
設(shè)備密匙:YWF5NTNZMFpZeWFEWnVMemVWYmdURkZuaEJhUnBRZGQ=
【6】創(chuàng)建設(shè)備3
設(shè)備ID: 2103766258
設(shè)備密匙: anZRUmFYaFlYYWRBbHVLNEdQdnlMTEtweGhPTUFFYTA=
五、MQTT登錄參數(shù)生成
【1】生成MQTT登錄參數(shù)
MQTT服務(wù)器地址信息: https://open.iot.10086.cn/doc/v5/develop/detail/248
密匙生成工具:https://open.iot.10086.cn/doc/v5/develop/detail/242
工具軟件里需要填寫(xiě)的參數(shù)如下:
【1】res選項(xiàng)參數(shù)的格式: products/{產(chǎn)品ID}/devices/{設(shè)備名稱(chēng)}
【2】et是設(shè)置token過(guò)期時(shí)間:算出1970-1-1到你想要設(shè)置的到期時(shí)間,單位是秒,填入即可。
比如: 超時(shí)時(shí)間設(shè)置為2022-4-7,那么,這里填入的秒就是:1970-1-1到2022-4-7之間的秒單位時(shí)間。
【3】key的參數(shù)格式: 就是設(shè)備創(chuàng)建之后,在設(shè)備詳情頁(yè)的key
【2】生成設(shè)備1的密匙
res: products/OIcHdSz8R7/devices/dev1
et : 56804459115
key: NU14N01INmlhTE9sOUpGUkNOREwzNjBJbVJ1RzFRdkw=
得到的結(jié)果:
version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev1&et=56804459115&method=md5&sign=LGkD04FA%2FFg78rSuVFDPsg%3D%3D
【3】生成設(shè)備2的密匙
res: products/OIcHdSz8R7/devices/dev2
et : 56804459115
key: YWF5NTNZMFpZeWFEWnVMemVWYmdURkZuaEJhUnBRZGQ=
得到的結(jié)果:
version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev2&et=56804459115&method=md5&sign=haV81ypEWLefpOCrrSWHSg%3D%3D
【4】生成設(shè)備3的密匙
res: products/OIcHdSz8R7/devices/dev3
et : 56804459115
key: anZRUmFYaFlYYWRBbHVLNEdQdnlMTEtweGhPTUFFYTA=
得到的結(jié)果:
version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev3&et=56804459115&method=md5&sign=49hqM5724RC40sgSuzqCnA%3D%3D
六、設(shè)備模擬登錄
【1】設(shè)備1登錄
當(dāng)前設(shè)備的主題訂閱與主題發(fā)布總結(jié):
IP地址: 183.230.40.96
端口號(hào): 1883
clientId: dev1
username: OIcHdSz8R7
password: version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev1&et=56804459115&method=md5&sign=LGkD04FA%2FFg78rSuVFDPsg%3D%3D
訂閱主題: $sys/OIcHdSz8R7/dev1/#
發(fā)布主題: $sys/OIcHdSz8R7/dev1/dp/post/json
發(fā)布消息:
{"id":123,"dp":{"temp":[{"v":28.3}]}}
使用MQTT客戶(hù)端模擬設(shè)備登錄測(cè)試:
依次填入?yún)?shù),進(jìn)行登錄、訂閱主題、發(fā)布主題。
查看OneNet云端:
查看上傳的數(shù)據(jù):
上傳多個(gè)數(shù)據(jù)后,看溫度的變化曲線(xiàn):
【2】設(shè)備2登錄
當(dāng)前設(shè)備的主題訂閱與主題發(fā)布總結(jié):
IP地址: 183.230.40.96
端口號(hào): 1883
clientId: dev2
username: OIcHdSz8R7
password: version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev2&et=56804459115&method=md5&sign=haV81ypEWLefpOCrrSWHSg%3D%3D
訂閱主題: $sys/OIcHdSz8R7/dev2/#
發(fā)布主題: $sys/OIcHdSz8R7/dev2/dp/post/json
發(fā)布消息:
{"id":123,"dp":{"temp":[{"v":38.3}]}}
使用MQTT客戶(hù)端模擬設(shè)備登錄測(cè)試:
依次填入?yún)?shù),進(jìn)行登錄、訂閱主題、發(fā)布主題。
查看OneNet云端:
【3】設(shè)備3登錄
當(dāng)前設(shè)備的主題訂閱與主題發(fā)布總結(jié):
IP地址: 183.230.40.96
端口號(hào): 1883
clientId: dev3
username: OIcHdSz8R7
password: version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev3&et=56804459115&method=md5&sign=49hqM5724RC40sgSuzqCnA%3D%3D
訂閱主題: $sys/OIcHdSz8R7/dev3/#
發(fā)布主題: $sys/OIcHdSz8R7/dev3/dp/post/json
發(fā)布消息:
{"id":123,"dp":{"temp":[{"v":48.3}]}}
使用MQTT客戶(hù)端模擬設(shè)備登錄測(cè)試:
依次填入?yún)?shù),進(jìn)行登錄、訂閱主題、發(fā)布主題。
查看OneNet云端:
七、可視化頁(yè)面設(shè)計(jì)
地址:https://open.iot.10086.cn/studio/view/project
【1】創(chuàng)建項(xiàng)目
修改為手機(jī)版本:
【2】添加數(shù)據(jù)源
根據(jù)參數(shù)填入,管理設(shè)備的數(shù)據(jù)流。
填寫(xiě)之后點(diǎn)擊創(chuàng)建按鈕,就可以添加數(shù)據(jù)源。
然后按照流程,添加剩下3個(gè)設(shè)備的數(shù)據(jù)源進(jìn)來(lái)。
上面列表里參數(shù)的來(lái)源:
(1)userId
(2)accessKey
【3】綁定數(shù)據(jù)源
先大致設(shè)計(jì)好界面。然后給控件綁定數(shù)據(jù)源。
【4】顯示數(shù)據(jù)上報(bào)時(shí)間
為了了解數(shù)據(jù)更新情況,可以添加一個(gè)文本控件顯示最新的數(shù)據(jù)上報(bào)時(shí)間。
return [{
"value": "數(shù)據(jù)上報(bào)時(shí)間:" + data[0].update_at
}]
【5】添加報(bào)警閥值判斷
設(shè)置過(guò)濾器:
if (data[0].value > 30) {
return [{ "value": "溫度異常" }]
}
else {
return [{ "value": "設(shè)備1(正常)" }]
}
【6】發(fā)布項(xiàng)目
鏈接:https://open.iot.10086.cn/view/main/index.html#/share2d?id=646f1f2078cb250035479cb5
八、STM32硬件端設(shè)計(jì)
填寫(xiě)設(shè)備的信息:
上傳溫度數(shù)據(jù)。
九、溫度折線(xiàn)圖顯示
為了在onenet頁(yè)面顯示溫度的變化曲線(xiàn)。需要再新增加3個(gè)數(shù)據(jù)源。
單獨(dú)建立一個(gè)數(shù)據(jù)源,設(shè)置采集10次數(shù)據(jù)。也就是這數(shù)據(jù)源會(huì)保存最新的10個(gè)溫度數(shù)據(jù),這樣在曲線(xiàn)里可以顯示最近10個(gè)溫度的變化曲線(xiàn)。
添加的這3個(gè)數(shù)據(jù)源,是接下來(lái)給折線(xiàn)圖控件使用。
添加一個(gè)折線(xiàn)圖控件。
折線(xiàn)圖控件的系列
表示界面要顯示幾根曲線(xiàn)。
編寫(xiě)過(guò)濾器提取數(shù)據(jù):
// 最終數(shù)據(jù)應(yīng)該是一個(gè)數(shù)組
var result = [];
var dataPoint = null;
//循環(huán)處理選中的數(shù)據(jù)源的數(shù)據(jù)點(diǎn)
for (var i = 0; i < data.length; i++) {
// 從數(shù)據(jù)點(diǎn)中取出需要的數(shù)據(jù),通過(guò)配置鍵值對(duì)使得數(shù)據(jù)格式符合要求
dataPoint = {
y1: data[i].value,
};
// 將這個(gè)數(shù)據(jù)點(diǎn)添加進(jìn)結(jié)果中
result.push(dataPoint);
}
return result;
剩下的折線(xiàn)圖控件也是一樣的。