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