洪政 李自豪 王瑜琳 錢欣麗
摘?要:通信技術以及互聯(lián)網(wǎng)的不斷發(fā)展,對整個物聯(lián)網(wǎng)應用行業(yè)起到了重要的支撐作用,物聯(lián)網(wǎng)技術的應用不僅改變了人們的生活方式,而且對社會經(jīng)濟發(fā)展起到了重要的推動作用。本文提出了基于物聯(lián)網(wǎng)技術寢室智能化系統(tǒng),以網(wǎng)關模塊、傳感器模塊、執(zhí)行器模塊、門禁模塊4個硬件模塊作為環(huán)境數(shù)據(jù)的實時采集和上報,MQTT服務器作為傳感器數(shù)據(jù)傳輸、存儲,前后臺軟件系統(tǒng)作為服務,進行功能展示驗證,實現(xiàn)了寢室的智能化,提升了學生住宿環(huán)境的智能化水平。
關鍵詞:物聯(lián)網(wǎng)技術;硬件模塊;MQTT服務
1?概述
隨著通信技術以及互聯(lián)網(wǎng)的不斷發(fā)展,通信的質(zhì)量和速率都在快速提高,而通信傳輸技術對于整個物聯(lián)網(wǎng)應用行業(yè)起到了重要的支撐作用,物聯(lián)網(wǎng)不管是對整個社會經(jīng)濟的發(fā)展還是對個人的生活,都體現(xiàn)了重要的作用。而物聯(lián)網(wǎng)中的通信技術眾多,如ZigBee通信、4G通信、NBIOT通信、WiFi通信等,這些都可以應用到物聯(lián)網(wǎng)的各個行業(yè)。現(xiàn)如今,各高校寢室的智能化水平普遍偏低,寢室中的燈光、門禁等設施采用傳統(tǒng)的手動開啟方式,沒有智能化的控制功能,基于上述問題,我們設計了一款基于物聯(lián)網(wǎng)技術的寢室智能化系統(tǒng),進行對寢室環(huán)境數(shù)據(jù)的實時采集和上報,利用WiFi通信將數(shù)據(jù)傳輸?shù)皆破脚_中,用戶可以通過APP學生端實時查看寢室的狀況,同時對寢室的燈光進行遠程控制,對寢室的大門進行遠程控制。
2?系統(tǒng)架構(gòu)
基于物聯(lián)網(wǎng)技術的寢室智能化系統(tǒng)的整體架構(gòu)分為感知層、網(wǎng)絡層、基礎設施平臺層、應用層,如圖1所示。
感知層主要是使用MCU通過各種傳感器對環(huán)境數(shù)據(jù)進行實時采集,并通過傳感器網(wǎng)絡上傳至網(wǎng)關;網(wǎng)絡層主要是運用多種通信協(xié)議,將感知層所采集的環(huán)境數(shù)據(jù)傳輸至后端服務器,其中主要的協(xié)議為MQTT協(xié)議和HTTP協(xié)議,MQTT適合物聯(lián)網(wǎng)數(shù)據(jù)傳輸,而HTTP協(xié)議適合一般業(yè)務功能的訪問;基礎設施平臺層主要是后端所運用的軟件基礎設施和微服務;應用層主要是Webpages、Android。管理前臺運用的就是Webpages,而學生移動端使用的是Android。
3?硬件設計
整個寢室智能化系統(tǒng)硬件設備分為傳感器模塊、網(wǎng)關模塊、執(zhí)行器模塊、門禁模塊4個硬件模塊,實現(xiàn)對寢室環(huán)境數(shù)據(jù)的實時采集和上報。
3.1?傳感器模塊
傳感器模塊啟動后會初始化各個傳感器,初始化完成后將以每隔1.5秒的間隔采集各個傳感器的數(shù)據(jù),每采集一個傳感器的數(shù)據(jù)就將數(shù)據(jù)通過Zigbee發(fā)送至網(wǎng)關模塊,交由網(wǎng)關模塊進行處理。傳感器模塊中包括的設備有MCU(主控為Atmega328P)、HCSR505人體紅外傳感器、BH1750FVI光照度傳感器、DHT11溫濕度傳感器、CN3052A電源管理IC、CC2530Zigbee模塊。
3.2?網(wǎng)關模塊
網(wǎng)關模塊的功能主要是將各個硬件設備節(jié)點的數(shù)據(jù)發(fā)送到服務器,并且還要能接收服務器的執(zhí)行器控制指令。網(wǎng)關模塊啟動時會自動連接到預設的WiFi,使其具備網(wǎng)絡訪問功能,然后連接到MQTT服務器。通過Zigbee實時接收傳感器模塊發(fā)送過來的傳感數(shù)據(jù),并對數(shù)據(jù)進行校驗,數(shù)據(jù)校驗無誤通過WiFi模塊發(fā)布傳感器數(shù)據(jù)到MQTT。所以網(wǎng)關模塊在整個硬件系統(tǒng)當中起一個數(shù)據(jù)校驗、數(shù)據(jù)中轉(zhuǎn)的作用,相當于是硬件系統(tǒng)和后臺軟件系統(tǒng)之間的一座橋梁。網(wǎng)關模塊中包括的設備有MCU(主控為Atmega328P)、CN3052A電源管理IC、CC2530Zigbee模塊、ESP01S?WiFi模塊。
3.3?執(zhí)行器模塊
執(zhí)行器模塊會通過Zigbee與網(wǎng)關模塊建立局域網(wǎng)通信,當服務器下發(fā)執(zhí)行器控制命令到網(wǎng)關模塊時,網(wǎng)關模塊會立即將執(zhí)行器控制命令發(fā)送到執(zhí)行器模塊,執(zhí)行器模塊會立即做出相應的響應動作。在本系統(tǒng)中,執(zhí)行器模塊設有一個5V繼電器,通過MCU對繼電器進行控制,當MCU對繼電器控制成功后會隨即發(fā)送一個控制成功的指令給網(wǎng)關模塊,當網(wǎng)關模塊收到指令后不再對執(zhí)行器模塊進行控制,此次任務結(jié)束。如果網(wǎng)關模塊未收到執(zhí)行器模塊的控制成功指令,那么網(wǎng)關模塊會繼續(xù)以每隔1.5秒的間隔發(fā)送控制指令,發(fā)送的次數(shù)限制在5次,5次控制都沒有收到執(zhí)行器模塊的控制成功指令,強行結(jié)束此輪控制,控制失敗。要是在這期間收到執(zhí)行器模塊的控制成功指令,會中斷發(fā)送,控制成功。執(zhí)行器模塊中包括的設備有MCU(主控為Atmega328P)、CN3052A電源管理IC、CC2530Zigbee模塊、繼電器模塊。
3.4?門禁模塊
門禁模塊同樣也會通過Zigbee局域網(wǎng)通信的方式與網(wǎng)關模塊進行組網(wǎng)通信,并且打開門禁的方式有兩種,第一種是通過實時接收來自網(wǎng)關的開門指令,并對指令進行校驗,校驗成功完成開門動作;第二種是通過門禁模塊自帶的MFRC522?RFID射頻模塊讀取學生校園卡進行身份識別開門。
開門動作實現(xiàn)原理為MCU控制舵機帶動門鎖的拉栓做橫向往復運動完成開門動作。開門動作完成后門禁模塊會發(fā)送一個確認完成開門的指令到網(wǎng)關端,當網(wǎng)關模塊收到指令后不再對門禁模塊進行控制,此次任務結(jié)束。如果網(wǎng)關模塊未收到門禁模塊的控制成功指令,那么網(wǎng)關模塊會繼續(xù)以每隔1.5秒的間隔發(fā)送開門指令,發(fā)送的次數(shù)限制在5次,5次控制都沒有收到門禁模塊的控制成功指令,就會強行結(jié)束此輪開門,開門失敗。要是在這期間收到門禁模塊的開門成功指令,會中斷開門指令的發(fā)送,此輪控制成功。門禁模塊中包括設備有MCU(主控為Atmega328P)、CN3052A電源管理IC、CC2530Zigbee模塊、MFRC522?RFID射頻模塊、SG90?舵機。
4?軟件設計
整個寢室智能化系統(tǒng)軟件系統(tǒng)包括微服務組件的配置與實現(xiàn)、中間件的部署配置(RabbitMQ和EMQX)、數(shù)據(jù)庫系統(tǒng)設計與主從配置、后臺軟件系統(tǒng)微服務具體設計與實現(xiàn),后臺軟件則是通過Docker容器技術進行部署。
4.1?Nacos部署配置
Nacos部署在CentOS版本的Linux服務器上,采用Docker容器技術進行部署和管理,安裝部署完成后,Nacos服務就可以啟動了。
4.2?Gateway配置
Gateway是整個系統(tǒng)請求的唯一入口,請求鑒權和轉(zhuǎn)發(fā),所以它是一個單獨的模塊,第一步就是新建一個模塊,并且添加Gateway的pom依賴,引入依賴后接著在該模塊中的application.yml中進行配置,對Gateway配置完成后,由于gateway也需要注冊到Nacos中,還需要對Nacos進行配置。可以看到,網(wǎng)關模塊的名稱為servicegateway,這樣后續(xù)可以通過這個微服務的名稱在Nacos中直接引用。
4.3?OpenFeign配置
在模塊中的pom中引入OpenFeign的依賴,除此之外,由于Feign底層默認使用的URLConnection發(fā)起HTTP請求,不支持連接池,所以為了達到高性能,在OpenFeign中使用feignhttpclient連接池覆蓋默認實現(xiàn),接著就是對模塊的application.yml?進行配置,加入openfeign和httpclient的配置,通過對依賴的引入和對模塊的配置,基本的操作已經(jīng)完成。
4.4?RabbitMQ的部署和?EMQX?的部署
RabbitMQ和EMQX?MQTT服務器都是基于Docker部署,首先拉取RabbitMQ和EMQX的docker鏡像,使用docker?run命令啟動rabbitMQ和emqx容器,到此,RabbitMQ和EMQX的安裝部署已經(jīng)完成了。RabbitMQ就可以訪問RabbitMQ的管理頁面進行配置。在頁面中引入RabbitMQ的pom依賴,對模塊的application.yml進行配置,添加RabbitMQ的配置。EMQX?SpringBoot工程模塊中引入MQTT的相關pom依賴,對模塊的application.yml進行配置,添加mqtt配置。
4.5?數(shù)據(jù)庫設計
數(shù)據(jù)庫系統(tǒng)使用Mysql數(shù)據(jù)庫,采用主從模式,主寫從讀,數(shù)據(jù)庫設計為兩個,dormitory_biz用于存儲業(yè)務數(shù)據(jù),dormitory_data用于存儲傳感器數(shù)據(jù)和執(zhí)行器操作記錄。
4.6?主從搭建
拉取Mysql的docker鏡像,使用docker?run命令啟動鏡像,因為是主從結(jié)構(gòu),所以至少要啟動兩個Mysql實例,一個Master,一個Slave。接著修改Master和Slave?配置文件,使用docker?cp命令,將mysql_master和mysql_slave容器里面Mysql的配置文件my.cnf復制到宿主機,通過vim命令添加配置內(nèi)容,最后重啟mysql_slave容器。
4.7?后臺軟件系統(tǒng)微服務具體實現(xiàn)
寢室智能化設計系統(tǒng)是一個微服務項目,整個微服務可分為權限校驗微服務、業(yè)務微服務、網(wǎng)關微服務、數(shù)據(jù)收發(fā)微服務、數(shù)據(jù)存儲微服務、搜索微服務。除了以上微服務,還有一個SD_Common模塊提供一些通用的工具和實體類。
權限校驗微服務負責整個系統(tǒng)的權限驗證,主要負責登錄功能,并且生成JWT?Token,為后面的請求提供令牌。數(shù)據(jù)收發(fā)微服務在本系統(tǒng)中承擔著重要作用,它連接到MQTT代理服務器,獲取硬件設備上報的傳感器數(shù)據(jù),并且還會下發(fā)控制數(shù)據(jù)到硬件設備,所以數(shù)據(jù)收發(fā)微服務是連接硬件設備和后臺軟件系統(tǒng)的橋梁。數(shù)據(jù)存儲微服務同樣是本系統(tǒng)的核心,它負責監(jiān)聽數(shù)據(jù)收發(fā)微服務發(fā)布到RabbitMQ消息隊列中的傳感數(shù)據(jù),收到數(shù)據(jù)立即消費并且存儲到主(Master)數(shù)據(jù)庫中,當硬件設備接入量大,導致數(shù)據(jù)收發(fā)微服務接收的傳感器數(shù)據(jù)多時,可以部署多個數(shù)據(jù)存儲微服務對數(shù)據(jù)進行處理。搜索微服務在本系統(tǒng)中,承擔對傳感器數(shù)據(jù)的檢索業(yè)務,根據(jù)之前對性能的設計,搜索微服務連接使用從(Slave)數(shù)據(jù)庫進行SELECT操作,在搜索微服務業(yè)務中,提供兩個業(yè)務模塊,分別是傳感器信息檢索業(yè)務、傳感數(shù)據(jù)報表業(yè)務。
5?功能展示驗證
5.1?管理員前臺功能驗證
管理員前臺的使用者是寢室樓棟的管理人員,每棟寢室樓有不同的管理人員,所以需要對管理人員進行身份驗證。本系統(tǒng)采用的方式為傳統(tǒng)的用戶名和密碼登錄的方式,登錄成功后,自動跳轉(zhuǎn)到首頁的數(shù)據(jù)報表展示頁,該頁面可對所有的網(wǎng)關設備、傳感器設備和執(zhí)行器設備進行統(tǒng)計查看,以及對一周的設備數(shù)據(jù)進行展示,包括基本的傳感器值的最大值、平均值、最小值的展示,還能對當天的傳感器設備數(shù)據(jù)按小時進行展示。
5.2?學生移動端功能驗證
學生移動端定義為學生用戶使用,每個宿舍有多個學生,所以也涉及用戶的身份校驗,身份校驗采用用戶名和密碼的傳統(tǒng)的形式進行。在登錄頁之前會有一個閃屏頁,閃屏頁會對軟件的數(shù)據(jù)進行初始化,以及對軟件的版本更新進行檢測,閃屏頁過后,將跳轉(zhuǎn)到用戶登錄界面,如圖2所示。用戶輸入正確的用戶名和密碼后跳轉(zhuǎn)到移動端主頁,主頁可對該寢室下的傳感器數(shù)據(jù)進行實時查看,采用環(huán)狀圖的形式展示數(shù)據(jù),還可對該寢室下的執(zhí)行器進行控制,如圖3所示。
結(jié)語
物聯(lián)網(wǎng)技術作為新一代信息技術產(chǎn)物,是科技發(fā)展的趨勢。未來巨大的市場需求一定會為物聯(lián)網(wǎng)帶來難得的發(fā)展機遇和廣闊的發(fā)展空間。本設計是利用物聯(lián)網(wǎng)技術,在設備硬件端,使用Zigbee通信技術、WiFi通信技術進行節(jié)點與節(jié)點之間的組網(wǎng)通信,保證數(shù)據(jù)的穩(wěn)定和可靠性,設備端運用MQTT協(xié)議和微服務后臺軟件系統(tǒng)進行通信交互。在用戶應用端,對管理人員使用前臺技術,學生用戶使用前臺技術,最后進行各個模塊的功能展示。
參考文獻:
[1]原羿,蘇鴻根.基于ZigBee技術的無線網(wǎng)絡應用研究[J].計算機應用與軟件,2004,21(6):8991.
[2]姚丹,謝雪松,楊建軍,等.基于MQTT協(xié)議的物聯(lián)網(wǎng)通信系統(tǒng)的研究與實現(xiàn)[J].信息通信,2016(03):3335.
[3]趙睿林.MQTT協(xié)議在智能電力網(wǎng)關中的實現(xiàn)[J].電器與能效管理技術,2021(07):8387.
[4]熊永平.基于SpringBoot框架應用開發(fā)技術的分析與研究[J].電腦知識與技術,2019,15(36):7677.
基金項目:重慶公共運輸職業(yè)學院第一批青年骨干教師培養(yǎng)計劃
作者簡介:洪政(1994—?),男,本科,講師,研究方向:物聯(lián)網(wǎng)應用、傳感器技術。