掃描二維碼
隨時隨地手機看文章
0 引 言
隨著物聯(lián)網(wǎng)技術(shù)日趨成熟,物聯(lián)網(wǎng)已被廣泛應(yīng)用在醫(yī)療、交通與物流、能源與公用事業(yè)、零售業(yè)等領(lǐng)域 [1]。據(jù)思科公司(Cisco)思科視覺化網(wǎng)絡(luò)指數(shù)顯示,到 2022 年全球有超過半數(shù)設(shè)備和連接將會是機器對機器(M2M)的互聯(lián),比2017 年增加 34%。智能音箱、固定設(shè)備、移動設(shè)備及其他物件的連接數(shù)將從 2017 年的 61 億增至 2022 年的 146 億 [2]?;ヂ?lián)設(shè)備的數(shù)量和類型越來越多,應(yīng)用環(huán)境日趨復(fù)雜,實現(xiàn)資源有限或帶寬有限環(huán)境下的傳感器聯(lián)網(wǎng)和保證傳感數(shù)據(jù)的可靠傳輸成為物聯(lián)網(wǎng)技術(shù)應(yīng)用應(yīng)重點考慮的問題之一。
物聯(lián)網(wǎng)傳感節(jié)點作為物聯(lián)網(wǎng)和物理世界交互的邊界節(jié)點,負(fù)責(zé)信息的采集和簡單處理,與將數(shù)據(jù)傳輸?shù)綉?yīng)用層進行數(shù)據(jù)分析和處理 [3]。傳感器節(jié)點的通信方式主要分為近距離通信和遠(yuǎn)距離通信,傳感器節(jié)點之間一般采用短距離無線通信,如藍(lán)牙,ZigBee,WiFi等 ;傳感器與物聯(lián)網(wǎng)云服務(wù)器或應(yīng)用服務(wù)器采用遠(yuǎn)距離通信,如固網(wǎng)、移動網(wǎng)絡(luò)
(2G/3G/4G)、NB-IoT網(wǎng)絡(luò)等。無線網(wǎng)絡(luò)連接類型(WiFi、移動網(wǎng)絡(luò))是主流?,F(xiàn)在越來越多的應(yīng)用場合要求傳感器節(jié)點自帶接入網(wǎng)關(guān),即支持物聯(lián)網(wǎng)網(wǎng)絡(luò)接入服務(wù)。由于傳感器節(jié)點資源有限,受 CPU處理能力、內(nèi)存等限制,通常在LwIP協(xié)議棧上采用輕量級物聯(lián)網(wǎng)傳輸協(xié)議。目前,應(yīng)用最廣泛的物聯(lián)網(wǎng)標(biāo)準(zhǔn)傳輸協(xié)議包括 MQTT、CoAP。MQTT是一種在 TCP/IP協(xié)議上的基于訂閱 /發(fā)布模式的輕量級傳輸協(xié)議, 適用于引入第三方云平臺的物聯(lián)網(wǎng)應(yīng)用。CoAP 即約束應(yīng)用協(xié)議,類似 HTTP,是一種文檔傳輸協(xié)議,也是一種基于請求 / 響應(yīng)的客戶端 / 服務(wù)器端輕量級 UDP 傳輸協(xié)議,適合將物聯(lián)網(wǎng)應(yīng)用嵌入到現(xiàn)有 Web 服務(wù)器中 [4]。
本文基于 ESP8266 WiFi 模塊和 MQTT 協(xié)議設(shè)計了一種低成本物聯(lián)網(wǎng)傳感節(jié)點,以 ESP8266 嵌入式處理器為核心,采用 AM2302 傳感器采集溫濕度數(shù)據(jù),進行簡單處理后將傳感數(shù)據(jù)通過 MQTT 協(xié)議發(fā)布到百度天工物聯(lián)網(wǎng)云平臺IoTHub。數(shù)據(jù)采集中心采用 Visual C# 實現(xiàn),能自動識別傳感節(jié)點和訂購傳感器的數(shù)據(jù),可保存、處理和顯示傳感節(jié)點的溫濕度數(shù)據(jù)。數(shù)據(jù)采集中心可通過云平臺 IoTHub 下發(fā)命令,實現(xiàn)傳感器節(jié)點參數(shù)配置并讓傳感節(jié)點執(zhí)行指定操作(打開/ 關(guān)閉繼電器)。傳感器節(jié)點性能可靠,擴展性強,通用性好。
1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)由傳感節(jié)點、數(shù)據(jù)采集中心和百度天工物聯(lián)網(wǎng)云平臺組成,如圖 1 所示。傳器節(jié)點由ESP8266 和 AM2302 構(gòu)成, 實現(xiàn)溫濕度的采集和上報 ;數(shù)據(jù)采集中心基于 Visual C# 開發(fā),實現(xiàn)傳感數(shù)據(jù)的接收、存儲、分析和顯示 ;百度天工物聯(lián)網(wǎng)云平臺 IoTHub 作為 MQTT 消息代理,負(fù)責(zé)主題訂閱管理、消息轉(zhuǎn)發(fā)和緩沖,實現(xiàn)傳感節(jié)點與數(shù)據(jù)采集中心的信息交互。傳感節(jié)點與數(shù)據(jù)采集中心的交互數(shù)據(jù)類型為 JSON 格式。
2 傳感節(jié)點設(shè)計
傳感節(jié)點負(fù)責(zé)采集感知對象相關(guān)信息,并通過相應(yīng)的通信模塊將數(shù)據(jù)通過 MQTT 消息代理推送到遠(yuǎn)端數(shù)據(jù)采集中心。
2.1 硬件設(shè)計
傳感節(jié)點以 ESP8266EX WiFi 模塊為核心,通過 I/O 外接傳感器 AM2302 及其他設(shè)備。傳感節(jié)點硬件框圖如圖 2 所示。
ESP8266 WiFi 模塊集成了一 ESP826EX 芯片和一 4 MB SPI FLASH,帶有 PCB WiFi 天線,支持三種 WiFi 工作模式(SoftAP,Station,SoftAP+Station)。ESP826EX 擁有完整的 WiFi 功能,內(nèi)嵌 Tensilica’s L106 32 位內(nèi)核處理器,CPU 時鐘速度為 80 MHz,最高可支持 160 MHz,集成片上 SRAM, 可獨立作為 MCU 并通過 I/O 外接傳感器實現(xiàn)物聯(lián)網(wǎng)應(yīng)用。ESP8266 WiFi 模塊支持 IEEE802.11 b/g/n 無線標(biāo)準(zhǔn)與 IPv4, TCP/UDP/HTTP/MQTT 等協(xié)議 [5]。AM2302 是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器,它包括一個電容式感濕元件和一個高精度 NTC 測溫元件。AM2302 的溫度測量精度為 1 ℃,濕度測量精度在 5% 以內(nèi) [6]。AM2302 與ESP8266EX 通過單總線協(xié)議通信,占用一個 GPIO 端口。
2.2 軟件設(shè)計
傳感節(jié)點軟件基于 NodeMCU 固件開發(fā)。NodeMCU 固件使用 Lua 腳本語言編程,在樂鑫 ESP8266 Non-OS SDK 上開發(fā)而來。NodeMCU 固件封裝了 ESP8266 硬件操作的應(yīng)用編程接口函數(shù) API,同時還提供 I2C,SPI,UART 等外設(shè)總線驅(qū)動函數(shù)及 OLED/TFT 顯示驅(qū)動、各種類型傳感器驅(qū)動、網(wǎng)絡(luò)協(xié)議庫(TCP/UDP,HTTP,MQTT 等),開發(fā)者無需了解底層硬件驅(qū)動即可快速開發(fā)應(yīng)用。傳感節(jié)點程序主要通過數(shù)據(jù)采集模塊、MQTT 客戶端和網(wǎng)絡(luò)連接模塊實現(xiàn)。數(shù)據(jù)采集模塊負(fù)責(zé)定時讀取溫濕度數(shù)據(jù) ;MQTT 客戶端負(fù)責(zé)維護與MQTT 消息代理 IoTHub 的連接、發(fā)布傳感數(shù)據(jù)、接收并響應(yīng)數(shù)據(jù)采集中心的命令 ;網(wǎng)絡(luò)連接模塊負(fù)責(zé) WiFi 連接。系統(tǒng)軟件主流程如圖 3 所示。
2.2.1 數(shù)據(jù)采集模塊
數(shù)據(jù)采集模塊創(chuàng)建了一個 tmr 定時器,周期調(diào)用 dht 庫的 read()函數(shù)讀取溫濕度數(shù)據(jù),再使用 string.format 函數(shù)將溫濕度數(shù)據(jù)轉(zhuǎn)換為 JSON 格式。讀取傳感器數(shù)據(jù)代碼 :
pin = pin or 2
status,temp,humi,temp_dec,humi_dec = dht.read(pin)
將溫濕度轉(zhuǎn)換為 JSON 格式代碼 :
topicmsg='{"reported" :{"time" :"%d","temperature" :%0.2f,
"humidity" : %0.1f}}'
msg = string.format(topicmsg,rtctime.get(),temp,humi)
2.2.2 MQTT客戶端
傳感節(jié)點和數(shù)據(jù)采集中心基于訂購 / 發(fā)布機制的 MQTT 協(xié)議通信進行信息交互。傳感節(jié)點和數(shù)據(jù)采集中心作為MQTT 客戶端,百度 IoTHub 云平臺作為 MQTT 代理。消息的發(fā)布和訂購基于主題(topic)進行。MQTT 代理負(fù)責(zé)管理訂閱關(guān)系或緩存消息(保留標(biāo)志為真的消息),將消息轉(zhuǎn)發(fā)給已訂閱主題的 MQTT 客戶端。為了實現(xiàn)傳感節(jié)點與數(shù)據(jù)采集中心的數(shù)據(jù)交互,兩者發(fā)布與訂閱的主題見表 1 所列。
傳感節(jié)點 MQTT 客戶端初始化代碼如下 :
msghandler 為訂購消息處理函數(shù),用于解析和處理從數(shù)據(jù)采集中心收到的 JSON 格式數(shù)據(jù)。JSON 數(shù)據(jù)采用鍵(key) 值(value)對結(jié)構(gòu),key 可用來表示消息類型,value 為消息內(nèi)容。JSON 格式數(shù)據(jù)用 sjson 模塊的 decode()函數(shù)解析成 table 表格數(shù)據(jù)。傳感節(jié)點調(diào)用 publish 函數(shù)向某個主題發(fā)布消息, 語法 :mqtt :publish(topic,payload,qos,retain[,function(client)])。topic 是發(fā)布的主題 ;payload 為將發(fā)布的消息 ;qos 為QoS 服務(wù)質(zhì)量 ;0 表示只發(fā)送最多一次便可送達(dá),1 表示至少一次可送達(dá),2 表示一次便到達(dá) ;Retain 為保留標(biāo)志,指示服務(wù)端是否需要存儲當(dāng)前消息 ;function(client) 為消息發(fā)布成功回調(diào)函數(shù),在收到代理發(fā)布確認(rèn) PUBACK 消息后執(zhí)行函數(shù)。
3 數(shù)據(jù)采集中心設(shè)計
數(shù)據(jù)采集中心負(fù)責(zé)傳感節(jié)點的管理及傳感數(shù)據(jù)的顯示, 其中傳感節(jié)點管理包括節(jié)點自動識別、節(jié)點主題訂閱、節(jié)點控制等。數(shù)據(jù)采集中心與傳感節(jié)點通過 MQTT 協(xié)議的訂購 / 發(fā)布機制進行異步通信,兩者不必知道對方的 IP 地址,所有消息均通過 MQTT 消息代理轉(zhuǎn)發(fā)。數(shù)據(jù)采集中心識別傳感節(jié)點流程如圖 4 所示。傳感節(jié)點上線時向主題 $baidu/iot/ general/data/id/status 發(fā)布保留標(biāo)志為真的消息“online”,離線時通過最后遺囑(Last Will)發(fā)布離線消息“offline”。數(shù)據(jù)采集中心連接到 MQTT 消息代理 IoTHub, 在訂閱主題$baidu/iot/general/data/+/status 后,會收到所有傳感節(jié)點的狀態(tài)消息,從消息主題解析出節(jié)點 ID(+ 通配符所對應(yīng)的字段),如果是新節(jié)點,則先添加節(jié)點再更新狀態(tài),否則直接更新節(jié)點狀態(tài)。
數(shù)據(jù)采集中心訂購傳感節(jié)點主題 $baidu/iot/general/data/ id/data 后, 當(dāng)傳感節(jié)點向此主題發(fā)布消息時, 消息代理IoTHub 將會把消息轉(zhuǎn)發(fā)給數(shù)據(jù)采集中心。數(shù)據(jù)采集中心收到傳感節(jié)點數(shù)據(jù)后,解析 JSON 格式消息獲得消息的數(shù)據(jù)類型。如果是傳感數(shù)據(jù),則存儲后顯示 ;如果是傳感節(jié)點配置信息,則存儲到節(jié)點信息。信息處理流程如圖 5 所示。
數(shù)據(jù)采集中心界面如圖 6 所示。界面上部分顯示節(jié)點列表及最新的節(jié)點傳感數(shù)據(jù),下部分顯示節(jié)點數(shù)據(jù)曲線圖。
4 結(jié) 語
本文設(shè)計了基于 MQTT 協(xié)議的物聯(lián)網(wǎng)傳感節(jié)點,采用ESP8266WiFi 模塊 + 傳感器采集數(shù)據(jù)與 NodeMCU 物聯(lián)網(wǎng)平臺的 MQTT 模塊實現(xiàn)傳感節(jié)點與數(shù)據(jù)采集中心交互,數(shù)據(jù)采集中心采用 Visual C# + MQTTnet 庫實現(xiàn)傳感節(jié)點的自動識別與控制、傳感節(jié)點數(shù)據(jù)的存儲與顯示。系統(tǒng)運行穩(wěn)定,擴展性強,搭配不同傳感器就能實現(xiàn)特定的物聯(lián)網(wǎng)傳感節(jié)點。
物聯(lián)網(wǎng) (IoT) 正在興起。智能設(shè)備正在釋放技術(shù)優(yōu)勢,幫助人們創(chuàng)造附加值,提高行業(yè)生產(chǎn)率。然而,物聯(lián)網(wǎng)也帶來了許多挑戰(zhàn),例如新技術(shù)的復(fù)雜性,以及獲取和處理數(shù)據(jù)以做出明智決策的需求。換句話說,將產(chǎn)品特性轉(zhuǎn)化為系統(tǒng)解決方案...
關(guān)鍵字: 英飛凌 物聯(lián)網(wǎng)Semtech LoRa?設(shè)備和LoRaWAN?通訊協(xié)議助力實現(xiàn)更及時、高效、智能的智慧校園室內(nèi)空氣質(zhì)量監(jiān)測。
關(guān)鍵字: 物聯(lián)網(wǎng) 人工智能擁有 5G、人工智能、物聯(lián)網(wǎng)等新技術(shù)的支撐,智能家居行業(yè)逐漸從單品智能邁入全屋智能階段 。其由于全屋智能產(chǎn)品特殊性,落地安裝涉及到方案場景設(shè)計、布線,安裝,施工、后期維護更新等多個環(huán)節(jié),整體最好的實施路徑是通過房屋整體裝...
關(guān)鍵字: 全屋智能 5G 物聯(lián)網(wǎng)經(jīng)過幾十年發(fā)展,嵌入式技術(shù)已經(jīng)用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強的屬性,讓很多非嵌入式領(lǐng)域的同學(xué)望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來越多領(lǐng)域,包括了家居,商業(yè),工業(yè),農(nóng)業(yè)等領(lǐng)域,不僅吸引...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 技術(shù)隨著IT技術(shù)飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)進入了“物聯(lián)網(wǎng)”時代。物聯(lián)網(wǎng)中需要的大量設(shè)備不在依賴人與人之間的交互產(chǎn)生聯(lián)系,更多通過協(xié)議、通信、程序設(shè)計等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計算機的智能但并不以通...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計算機物聯(lián)網(wǎng)正在擴大規(guī)模并加速發(fā)展,進而驅(qū)動著全新的經(jīng)濟。而Arm生態(tài)系統(tǒng)正是這一巨大機遇背后的推動力。
關(guān)鍵字: ARM 物聯(lián)網(wǎng)1月14日,翱捷科技在上海證券交易所科創(chuàng)板上市,成為A股基帶芯片第一股。公司證券代碼為688220,發(fā)行價格164.54元/股,發(fā)行市盈率為83.65倍。截至發(fā)稿,翱捷科技跌約30%,報115.91元/股,單簽虧損已經(jīng)接...
關(guān)鍵字: 翱捷科技 芯片 物聯(lián)網(wǎng)大數(shù)據(jù)將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對它的相關(guān)情況以及信息有所認(rèn)識和了解,詳細(xì)內(nèi)容如下。
關(guān)鍵字: 大數(shù)據(jù) 物聯(lián)網(wǎng) 分布式智慧工地將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對智慧工地的相關(guān)情況以及信息有所認(rèn)識和了解,詳細(xì)內(nèi)容如下。
關(guān)鍵字: 智慧工地 智慧城市 物聯(lián)網(wǎng)從碳達(dá)峰到碳中和,無疑是需要付出艱苦努力的。對于半導(dǎo)體行業(yè)從業(yè)者們來說,則意味著一系列與新能源、電子轉(zhuǎn)換、節(jié)電相關(guān)的技術(shù)產(chǎn)品需求會在未來幾年內(nèi)迅速升溫。我們有理由相信,面對浩瀚如海洋星辰的物聯(lián)網(wǎng)產(chǎn)業(yè),通過持續(xù)的材料、技術(shù)...
關(guān)鍵字: 英飛凌 功率器件 物聯(lián)網(wǎng)