高亭
摘要:隨著物聯(lián)網(wǎng)技術(shù)的興起,其廣泛應(yīng)用也在深刻地改變著人們的生活。越來越多的技術(shù)被應(yīng)用到智慧農(nóng)業(yè)、智能家居等領(lǐng)域。文章在研究物聯(lián)網(wǎng)相關(guān)的技術(shù)發(fā)展和整體架構(gòu)的同時(shí),探討基于MQTT協(xié)議的物聯(lián)網(wǎng)實(shí)時(shí)數(shù)據(jù)采集及數(shù)據(jù)可視化相關(guān)的應(yīng)用,希望能夠通過數(shù)據(jù)可視化技術(shù),讓更多人更方便地使用物聯(lián)網(wǎng)技術(shù)。文章提出的模型使用Arduino Uno作為微處理器,控制各種傳感器獲取環(huán)境中的數(shù)據(jù),并使用ESP8266模塊將相關(guān)數(shù)據(jù)發(fā)送到云平臺(tái),在ThingSpeakTM云平臺(tái)實(shí)現(xiàn)可視化。MQTT協(xié)議主要用于將數(shù)據(jù)傳送到應(yīng)用層。
關(guān)鍵詞:MQTT;Arduino Uno;ThingSpeakTM;數(shù)據(jù)可視化
中圖分類號(hào):TP391? 文獻(xiàn)標(biāo)志碼:A
0 引言
物聯(lián)網(wǎng)技術(shù)是繼計(jì)算機(jī)、互聯(lián)網(wǎng)、移動(dòng)通信后的又一次技術(shù)浪潮,實(shí)現(xiàn)了人與人、人與物、物與物的全面互聯(lián)。物聯(lián)網(wǎng)應(yīng)用在改善人們的生活質(zhì)量方面發(fā)揮了顯著的作用。這些應(yīng)用包括交通自動(dòng)化、醫(yī)療保健、工業(yè)自動(dòng)化和應(yīng)急響應(yīng)等。數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)和數(shù)據(jù)實(shí)時(shí)可視化影響著物聯(lián)網(wǎng)應(yīng)用的普及和發(fā)展,是物聯(lián)網(wǎng)技術(shù)研究中的重要一環(huán)。
1 理論
1.1 物聯(lián)網(wǎng)概念
物聯(lián)網(wǎng)一詞由凱文·阿什頓于1999年在供應(yīng)鏈管理領(lǐng)域首次提出。物聯(lián)網(wǎng)是指通過信息傳感設(shè)備,按約定的協(xié)議,將任何物體與網(wǎng)絡(luò)相連接,物體通過信息傳播媒介進(jìn)行信息交換和通信,以實(shí)現(xiàn)智能化識(shí)別、定位、跟蹤、監(jiān)管等功能[1]。
1.2 MQTT協(xié)議
MQTT是用于物聯(lián)網(wǎng)(IoT)OASIS標(biāo)準(zhǔn)的協(xié)議,運(yùn)行在TCP/IP協(xié)議上。它是一種極其輕量級(jí)的基于“發(fā)布/訂閱”模式的消息傳輸協(xié)議,可以用極少的代碼和有限的帶寬為遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)[2]。發(fā)送方(發(fā)布者)和接收方(訂閱者)通過Topics進(jìn)行通信,并且彼此分離。它們之間的連接由MQTT代理處理。MQTT代理過濾所有傳入消息,并將它們正確分發(fā)給訂閱服務(wù)器。
服務(wù)質(zhì)量(QoS)級(jí)別是消息的發(fā)送者和消息的接收者之間的協(xié)議,該協(xié)議定義了特定消息的傳遞保證[3]。MQTT中有3個(gè)QoS級(jí)別:QoS-0為MQTT最低的QoS級(jí)別。QoS-1保證消息至少一次被傳遞給接收方。QoS-2是MQTT中的最高服務(wù)級(jí)別,此級(jí)別保證預(yù)期接收者只接收一次消息,是最安全和最慢的服務(wù)質(zhì)量級(jí)別。
2 系統(tǒng)總體設(shè)計(jì)
本文提出了一個(gè)基于物聯(lián)網(wǎng)溫室的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)模型。該系統(tǒng)不僅能監(jiān)測(cè)溫室內(nèi)部氣候和工作條件,還可以讓管理者通過互聯(lián)網(wǎng)控制相應(yīng)的工作部件。在本文提出的模型架構(gòu)中,收集的數(shù)據(jù)經(jīng)歷了從傳感器到接口,到執(zhí)行器的階段。整個(gè)階段可以分為6個(gè)數(shù)據(jù)流階段:傳感器、通信/運(yùn)輸、加工、儲(chǔ)存、分析和驅(qū)動(dòng)。分層系統(tǒng)架構(gòu)如圖1所示。
本系統(tǒng)的整體架構(gòu)設(shè)計(jì)從物聯(lián)網(wǎng)三層結(jié)構(gòu)展開,每層用于完成不同的工作。感知層的主要工作是完成數(shù)據(jù)采集,該層主要包含微控制器,不同類型的傳感器,制動(dòng)部件。傳感器是采集信息的重要工具。溫室日常監(jiān)測(cè)經(jīng)常使用到的傳感器主要包括光傳感器、溫/濕度傳感器、土壤傳感器、氣體傳感器。制動(dòng)部件主要包含門窗、照明設(shè)備等。用戶發(fā)布的相關(guān)命令通過微控制器進(jìn)行處理,進(jìn)而控制設(shè)備打開和關(guān)閉。
網(wǎng)絡(luò)層的主要工作是完成數(shù)據(jù)的傳送。根據(jù)數(shù)據(jù)傳送距離和能耗的不同需求,可以將網(wǎng)絡(luò)層通信協(xié)議分為短距離通信協(xié)議和遠(yuǎn)程通信協(xié)議。短距離通信技術(shù)用于控制信號(hào)的傳輸,使用了WiFi技術(shù)。遠(yuǎn)程通信協(xié)議用于將監(jiān)測(cè)數(shù)據(jù)發(fā)送至遠(yuǎn)程平臺(tái),以及將相關(guān)管理指令傳送至微控制器,使用了MQTT協(xié)議。
應(yīng)用層的主要工作是完成數(shù)據(jù)的處理和數(shù)據(jù)可視化。常見的環(huán)境數(shù)據(jù)主要圍繞氣候、土壤和植物3個(gè)部分來產(chǎn)生。在氣候監(jiān)測(cè)方面:用戶根據(jù)不同地區(qū),不同氣候以及不同需求設(shè)定相應(yīng)的值,主要監(jiān)測(cè)目標(biāo)有二氧化碳的濃度、溫/濕度、氣壓等。土壤數(shù)據(jù)主要包括土壤濕度、土壤鹽度和土壤成分。當(dāng)傳感器檢測(cè)到溫室中的監(jiān)測(cè)值不滿足設(shè)定值時(shí),微處理器模塊會(huì)將相關(guān)數(shù)據(jù)發(fā)送至用戶側(cè),并以可視化的方法展示給用戶。植物監(jiān)測(cè)的內(nèi)容應(yīng)該包括作物病害和葉片溫度。這兩項(xiàng)數(shù)據(jù)的監(jiān)測(cè)主要是為了識(shí)別植物生長(zhǎng)的情況,從而使用戶能夠?qū)崟r(shí)獲得植物的健康數(shù)據(jù)。
3 硬件設(shè)計(jì)
硬件系統(tǒng)部分主要包含有微處理器、ESP8266(ESP-01)通信模塊、溫濕度監(jiān)測(cè)模塊。
微處理器采用Arduino Uno。它是基于ATmega328P的微控制器板,有14個(gè)數(shù)字輸入/輸出引腳、6個(gè)模擬輸入,可以使用USB電纜連接到計(jì)算機(jī)或使用AC-DC適配器或電池為其供電。
Node MCU ESP8266模塊帶有AT命令固件,具有4MB的閃存,80MHz的系統(tǒng)時(shí)鐘,大約50 kB的可用RAM和片上Wifi收發(fā)器。
濕度傳感器是能夠測(cè)量大氣中濕度并將其結(jié)果轉(zhuǎn)換為相應(yīng)電信號(hào)的設(shè)備。將給定溫度下的實(shí)時(shí)濕度讀數(shù)與等效溫度下空氣的最大濕度進(jìn)行比較,計(jì)算出相應(yīng)的電信號(hào)比。本文根據(jù)溫室中的溫度和濕度判斷,選用了DHT11溫濕度傳感器進(jìn)行了測(cè)試。
以溫濕度監(jiān)測(cè)為例,將DHT11傳感器與ESP8266連接至Arduino Uno的GPIO引腳。連接電路如圖2所示。關(guān)于濕度和溫度的計(jì)算都將在Arduino Uno模塊中進(jìn)行,通過ESP-01發(fā)送到ThingSpeak API上,從ThingSpeak上可以看到生成的圖表。
4 軟件設(shè)計(jì)
系統(tǒng)軟件部分使用Arduino IDE開發(fā)環(huán)境,采用C++語言編寫,使用MQTT協(xié)議連接到物聯(lián)網(wǎng)云平臺(tái)上,物聯(lián)網(wǎng)云平臺(tái)采用ThingSpeakTM。
ThingSpeakTM是物聯(lián)網(wǎng)的數(shù)據(jù)收集和數(shù)據(jù)分析的云平臺(tái)。用戶可以使用連接到互聯(lián)網(wǎng)的傳感器來收集數(shù)據(jù),ThingSpeakTM免費(fèi)存儲(chǔ)收集到的數(shù)據(jù),并提供免費(fèi)的在線使用的MATLAB來分析這些數(shù)據(jù)。
ThingSpeakTM在mqtt3.thingspeak.com和端口1883上有一個(gè)MQTT代理。該代理支持MQTT發(fā)布和MQTT訂閱。通過互聯(lián)網(wǎng)或局域網(wǎng),用戶可以使用MQTT協(xié)議從傳感器節(jié)點(diǎn)檢索實(shí)時(shí)數(shù)據(jù)。目前Thingspeak API 僅支持QoS-0(at most once)。
Arduino IDE(集成開發(fā)環(huán)境)是用C和C++編程的函數(shù)編寫的一個(gè)跨平臺(tái)的計(jì)算機(jī)應(yīng)用程序,用于編寫、編譯程序并將其載到Arduino和其他兼容板[4]。
如表1所示,軟件部分主要實(shí)現(xiàn)了5個(gè)功能。如圖3所示,本文主要介紹的是功能實(shí)現(xiàn)的主程序流程。
除了要實(shí)現(xiàn)以上功能外,還要使用代碼對(duì)連接到ThingSpeak MQTT broker的過程進(jìn)行設(shè)置。連接到ThingSpeak的MQTT代理的流程如圖4所示。
如圖5—6所示,本系統(tǒng)在ThingSpeak平臺(tái)上成功對(duì)測(cè)試環(huán)境中的溫度和濕度變化進(jìn)行了可視化展示,從而說明該系統(tǒng)具有實(shí)時(shí)、可視化的特點(diǎn)。
5 結(jié)語
本文介紹了基于MQTT協(xié)議的物聯(lián)網(wǎng)溫室數(shù)據(jù)
采集和可視化系統(tǒng),設(shè)計(jì)了系統(tǒng)的硬件電路和采集環(huán)境數(shù)據(jù)操作的流程,實(shí)現(xiàn)了一套完整的物聯(lián)網(wǎng)數(shù)據(jù)采集和可視化系統(tǒng)。該系統(tǒng)能夠獲取設(shè)備和環(huán)境的各項(xiàng)數(shù)據(jù),并實(shí)時(shí)設(shè)定和修改監(jiān)測(cè)值。本文的研究為物聯(lián)網(wǎng)的遠(yuǎn)程監(jiān)控提供了一種可以參考的解決方案,為物聯(lián)網(wǎng)實(shí)時(shí)數(shù)據(jù)采集和可視化技術(shù)應(yīng)用提供參考。
參考文獻(xiàn)
[1]GUBBI J, BUYYA R, MARUSIC S,et al. Internet of Things (IoT): a vision, architectural elements, and future directions[J]. Future Generation Computer Systems, 2013 (7):1645-1660.
[2]Al-F A, GUIZANI M, MOHAMMADI M, et al. Internet of Things: a survey on enabling technologies, protocols, and applications[J]. IEEE Communications Surveys & Tutorials, 2015 (4):2347-2376.
[3]FAROOQ M S, RIAZ S, HELOU M A,et al. Internet of Things in greenhouse agriculture: a survey on enabling technologies, applications and protocols[J].IEEE Access, 2022(10):53374-53397.
[4]KWIZERA V, LI Z, LUMORVIE V E, et al. IoT based greenhouse real-time data acquisition and visualization through message queuing telemetry transfer (MQTT) protocol[J]. Advances in Internet of Things, 2021 (2):77-93.
(編輯 李春燕)
Real time data acquisition and visualization system of iot greenhouse based on MQTT protocol
Gao? Ting
(Bohai Vocational College of Science and Technology, Huanghua 061100, China)
Abstract:? With the rise of IoT technology, IoT applications are changing our lives. More and more technologies are applied to smart agriculture, smart home and other fields. This paper aims to study the technology development of IoT and discuss the application of real-time data collection and data visualization of IoT based on MQTT protocol. It is hoped that more people can use the IoT technology conveniently through data visualization technology. In the proposed model, Arduino Uno is used as a microprocessor to control various sensors to obtain environmental data. Use the ESP8266 module to send relevant data to the cloud platform ThingSpeakTM, realizes visualization on the cloud platform.
Key words: MQTT; Arduino Uno; ThingSpeakTM; data visualization