999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ZigBee與MQTT的控制系統(tǒng)*

2021-07-14 08:33:50鄭璐豪鄧世杰
機(jī)電工程技術(shù) 2021年4期
關(guān)鍵詞:單片機(jī)程序數(shù)據(jù)庫

鄭璐豪,鄧世杰,陽 韜

(華南理工大學(xué)廣州學(xué)院計(jì)算機(jī)工程學(xué)院,廣州 510800)

0 引言

在智能聯(lián)網(wǎng)的時(shí)代里,物聯(lián)網(wǎng)正處于高速發(fā)展中,隨著需求的不斷增多,越來越多可節(jié)省人力的組件應(yīng)該被實(shí)現(xiàn)。而在諸多的用電器密集區(qū)域如商場(chǎng)、工廠、高校教學(xué)樓以及宿舍單位中,其用電設(shè)備都會(huì)有管理困難、用電數(shù)據(jù)模糊,甚至是一些有著高危險(xiǎn)系數(shù)用電器的工廠。而這些場(chǎng)景都可以依靠該項(xiàng)目中的系統(tǒng)搭建出一套體系,該系統(tǒng)提供數(shù)據(jù)可視化,遠(yuǎn)程集中管理,智能開關(guān)用電設(shè)備。在降低人力成本的同時(shí)還能降低資源的消耗,同時(shí)對(duì)與較為危險(xiǎn)的工廠可很大幅度地降低其危險(xiǎn)系數(shù)。

因此,本文設(shè)計(jì)一種基于ZigBee與MQTT的控制系統(tǒng),實(shí)現(xiàn)上述功能。整套系統(tǒng)為了兼容多棟、多層、多間的場(chǎng)景以及便于管理,采用分布式設(shè)計(jì),通過上層控制機(jī)對(duì)多個(gè)下層控制機(jī)管理來實(shí)現(xiàn),并且所用的軟件其搭建的框架也能夠多系統(tǒng)運(yùn)行,對(duì)微機(jī)的要求降低并且兼容性也更高。為了順應(yīng)移動(dòng)智能設(shè)備的發(fā)展,該套系統(tǒng)使用uni-app開發(fā)出對(duì)應(yīng)的網(wǎng)頁版、小程序等等多種版本,讓教室的管理人員和預(yù)約人員都能用手機(jī)等移動(dòng)設(shè)備做到遠(yuǎn)程控制、遠(yuǎn)程監(jiān)控或遠(yuǎn)程申請(qǐng)。直接點(diǎn)觸控制的方式能讓使用者更加便捷地使用該系統(tǒng),同時(shí)也符合現(xiàn)代科技發(fā)展的趨勢(shì)。

1 系統(tǒng)整體結(jié)構(gòu)

系統(tǒng)整體由用于存放前后端以及數(shù)據(jù)庫的云服務(wù)器、運(yùn)行在Linux微機(jī)或樹莓派上的MQTT服務(wù)器,以及和用電器互通的硬件集群3大模塊組成,如圖1所示。

圖1 總體布局

為了滿足外網(wǎng)可訪的需求,故采用了云服務(wù)。其中云服務(wù)主要構(gòu)成為前后端、數(shù)據(jù)庫。而采用云服務(wù)器最大的優(yōu)點(diǎn)是可以獲取一個(gè)公網(wǎng)IP搭配域名解析直接訪問網(wǎng)站。用戶通過訪問該服務(wù)器下的相關(guān)功能界面進(jìn)行頁面的請(qǐng)求發(fā)送,并獲取服務(wù)器返回的相關(guān)數(shù)據(jù)。同時(shí)將數(shù)據(jù)庫放置云服務(wù)器便于后端的訪問,且提高了數(shù)據(jù)的安全性。

為了降低成本,MQTT服務(wù)器則是搭建在一臺(tái)處于局域網(wǎng)內(nèi)的Linux微機(jī)或樹莓派上。此服務(wù)器中有著能通過MQTT接收發(fā)送相關(guān)數(shù)據(jù)的Qt程序,同時(shí)服務(wù)器通過直接獲取云端數(shù)據(jù)庫的信息,通過實(shí)時(shí)監(jiān)聽數(shù)據(jù)庫將改變后的數(shù)據(jù)發(fā)送給硬件集群,實(shí)現(xiàn)指令發(fā)送。并且在硬件部分有相關(guān)任務(wù)被執(zhí)行后也會(huì)將數(shù)據(jù)傳回?cái)?shù)據(jù)庫作更新操作。

在硬件方面,主要采用可聯(lián)網(wǎng)STM32控制板和ZigBee無線傳輸模塊以及繼電器組成一整個(gè)控制體系。在無線傳輸模塊收到無線信號(hào)將數(shù)據(jù)傳至控制板處理,并將處理結(jié)果以高低電平的方式作用于繼電器上使繼電器開閉,達(dá)到用電器開關(guān)。

整套系統(tǒng)數(shù)據(jù)走向清晰,層級(jí)分明,通過將物聯(lián)網(wǎng)與小程序相結(jié)合,在便于客戶使用的同時(shí)也符合科技發(fā)展趨勢(shì)。

2 前端界面

該項(xiàng)目在前端上有H5端以及該H5端對(duì)應(yīng)的一個(gè)后臺(tái)管理系統(tǒng)(PC端),在H5端上采用了uni-app框架進(jìn)行開發(fā)[1],因?yàn)榭紤]到后續(xù)可能還有小程序端、APP端,所以就采用了uni-app這個(gè)跨平臺(tái)框架,該框架是一個(gè)使用Vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、H5,以及各種小程序等多個(gè)平臺(tái)。

后臺(tái)管理系統(tǒng)使用了Vue.js框架配合Element-ui組件庫進(jìn)行開發(fā)。H5端以及后臺(tái)管理系統(tǒng)都使用axios作為網(wǎng)絡(luò)請(qǐng)求庫,并且在開發(fā)上遵循組件化和模塊化的開發(fā)思想,組件化能提高前端代碼的復(fù)用性及閱讀性。模塊化是指根據(jù)業(yè)務(wù)的需求將代碼進(jìn)行隔離成獨(dú)立的模塊,這樣能讓后續(xù)的項(xiàng)目更好地進(jìn)行維護(hù),也滿足高內(nèi)聚、低耦合的軟件開發(fā)思想。

3 服務(wù)器部分

3.1 前后端服務(wù)器

該項(xiàng)目在服務(wù)端使用node.js的egg.js框架進(jìn)行開發(fā),egg.js是一個(gè)由阿里巴巴開發(fā)的基于Koa現(xiàn)有約束和規(guī)范的“企業(yè)級(jí)web開發(fā)框架”,該框架現(xiàn)在也廣泛使用在阿里內(nèi)部的項(xiàng)目里。這個(gè)框架也做了很多安全的防范,比如幫助防止csrf攻擊。更重要的是egg.js按照一套統(tǒng)一的約定進(jìn)行應(yīng)用開發(fā),有了制定好的約定,不需要團(tuán)隊(duì)去協(xié)商制定規(guī)范進(jìn)行開發(fā),這樣可以減少開發(fā)人員的學(xué)習(xí)成本,防止因?yàn)橐?guī)范協(xié)商問題造成溝通成本的提高。

在操作數(shù)據(jù)庫上,不再使用傳統(tǒng)的sql語句進(jìn)行操作,而是使用Sequelize,它是一個(gè)基于promise的Node.js ORM。sequelize本質(zhì)上是對(duì)sql語句上進(jìn)行了封裝[2],而使用sequelize能幫助通過代碼進(jìn)行建表,以及模型關(guān)聯(lián),聯(lián)表查詢,從而提高開發(fā)效率,如圖2所示。

圖2 前后端服務(wù)器

由于該項(xiàng)目為前后端分離結(jié)構(gòu),所以前后端的代碼分別部署在兩個(gè)服務(wù)器上。服務(wù)器采用了阿里云的ecs云服務(wù)器。但是在前后端分離的項(xiàng)目里,前端向后端發(fā)起請(qǐng)求的時(shí)候,會(huì)產(chǎn)生跨域,而跨域是出于瀏覽器的同源策略的限制,同源策略會(huì)阻止一個(gè)域的javascript腳本和另外一個(gè)域的內(nèi)容進(jìn)行交互,“協(xié)議/一級(jí)域名/二級(jí)域名/端口號(hào)”有一個(gè)不同就是跨域。而解決辦法可以通過后端服務(wù)器去設(shè)置允許前端跨域的地址,或者在前端通過方向代理的方式去解決,而使用方向代理用戶不知道自己真正訪問的是誰,只知道自己訪問了一臺(tái)服務(wù)器,然后通過這臺(tái)服務(wù)器去分發(fā)到其他服務(wù)器,而請(qǐng)求都是這臺(tái)服務(wù)器分發(fā)的,所以也就解決了跨域的問題。

3.2 MQTT服務(wù)器

MQTT服務(wù)器在該項(xiàng)目中充當(dāng)一個(gè)數(shù)據(jù)橋梁以及數(shù)據(jù)格式轉(zhuǎn)換的角色。在該服務(wù)器中除了要運(yùn)行MQTT的服務(wù)組件外,還要運(yùn)行由Qt框架[3]所搭建的MQTT數(shù)據(jù)橋梁接通程序。該程序也是所有MQTT服務(wù)器中客戶端的一員,充當(dāng)數(shù)據(jù)的“接收發(fā)員”。該程序采用開源的emqx/qmqtt的開源模塊[4]交叉編譯構(gòu)成MQTT的客戶端模塊組件進(jìn)行編寫,并采用MySql的Qt官方驅(qū)動(dòng)于數(shù)據(jù)庫進(jìn)行對(duì)接。程序直接連接云服務(wù)上的數(shù)據(jù)庫,由于Qt與MySql的庫文件中沒有數(shù)據(jù)庫實(shí)時(shí)監(jiān)聽的模塊[5],固采用“偽監(jiān)聽”的方式實(shí)時(shí)關(guān)注數(shù)據(jù)庫的改動(dòng),通過定時(shí)器設(shè)定每秒查詢一次當(dāng)前狀態(tài)表中的關(guān)鍵字段,與舊狀態(tài)表中的記錄作比較,若比較結(jié)果不同,則在對(duì)應(yīng)主題下發(fā)送對(duì)應(yīng)的變動(dòng)指令,同時(shí)修改舊狀態(tài)表。硬件部分在執(zhí)行完相關(guān)指令后會(huì)反饋相關(guān)數(shù)據(jù),數(shù)據(jù)在被Qt程序截獲后會(huì)被轉(zhuǎn)化為對(duì)應(yīng)的操作記錄寫入日志中保存。

若硬件端所連的用電設(shè)備被人為手動(dòng)開關(guān),則根據(jù)硬件的設(shè)計(jì),在人為開關(guān)后都會(huì)返回一個(gè)反饋信息,當(dāng)程序的一個(gè)特定訂閱反饋信息的客戶端收到該反饋信息后會(huì)根據(jù)回傳數(shù)據(jù)生成對(duì)應(yīng)的修改數(shù)據(jù)庫命令直接更新數(shù)據(jù)庫的對(duì)應(yīng)字段。

同時(shí)程序也有對(duì)應(yīng)的定時(shí)功能,用戶可以自主設(shè)定時(shí)間,在固定時(shí)間內(nèi)自動(dòng)發(fā)送關(guān)閉或開啟命令,可執(zhí)行全部關(guān)閉或按類別關(guān)閉,并且程序會(huì)自主維持一個(gè)長(zhǎng)運(yùn)行操作,會(huì)在每日12點(diǎn)整的時(shí)候作重啟動(dòng)作,將所有客戶端重置后重新連接,達(dá)到message編號(hào)歸零的操作,如圖3所示。

圖3 MQTT服務(wù)器

在這里展示項(xiàng)目中的教室控制案例中的數(shù)據(jù)格式。在數(shù)據(jù)格式上采用JSON數(shù)據(jù)格式,通過協(xié)商好的鍵值對(duì),如表1所示。

表1 系統(tǒng)控制指令格式

4 硬件部分

4.1 電路結(jié)構(gòu)

本系統(tǒng)的硬件部分是通過STM32單片機(jī)接收MQTT的消息,然后使能繼電器,進(jìn)而控制電器開關(guān)來實(shí)現(xiàn)的。

繼電器的工作原理是將一個(gè)簡(jiǎn)單回路的一根導(dǎo)線一分為二,導(dǎo)線一端連接繼電器公共端,另一端連接在繼電器常開端。當(dāng)繼電器接收到使能信號(hào),繼電器的公共端和常開端連接在一起,將電路恢復(fù)到正常狀態(tài)。

傳統(tǒng)電器開關(guān)大多是用單刀單擲開關(guān),配合繼電器的使用會(huì)出現(xiàn)一種狀況:用戶需要手動(dòng)控制開關(guān),但是MQTT服務(wù)器沒有發(fā)送消息,繼電器沒有被使能,導(dǎo)致用戶無法正常使用電器。針對(duì)這種情況,本系統(tǒng)對(duì)電器開關(guān)進(jìn)行一些改進(jìn)。

本系統(tǒng)使用單刀雙擲開關(guān)作為繼電器和電器開關(guān)[6],單片機(jī)引出兩條導(dǎo)線,一條導(dǎo)線連接到繼電器,為繼電器提供使能信號(hào);另一條導(dǎo)線連接在電路,作為電流檢測(cè),如圖4所示。當(dāng)電路是通路或者斷路時(shí),單片機(jī)會(huì)識(shí)別出當(dāng)前電路狀態(tài),然后反饋到MQTT服務(wù)器。用戶手動(dòng)控制開關(guān)不受影響,同時(shí)服務(wù)器也能知道當(dāng)前電器狀態(tài)。

圖4 開關(guān)改進(jìn)

4.2 STM32單片機(jī)

STM32單片機(jī)是硬件結(jié)構(gòu)的核心部分,搭載LAN8720A以太網(wǎng)卡配置物理層,使用Lwip輕量IP協(xié)議配置數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層。當(dāng)STM32單片機(jī)連接上以太網(wǎng)之后,配置相關(guān)信息進(jìn)而連接上MQTT服務(wù)器,單片機(jī)和服務(wù)器可以相互收發(fā)消息。

STM32單片機(jī)和MQTT服務(wù)器通信時(shí)使用JSON數(shù)據(jù)格式,單片機(jī)調(diào)用cJSON庫可以對(duì)數(shù)據(jù)進(jìn)行解析和打包[7]。

4.3 ZigBee

在一個(gè)場(chǎng)景中并不需要所有電器設(shè)備都要入網(wǎng),只需要至少一個(gè)聯(lián)網(wǎng)設(shè)備接收MQTT服務(wù)器的消息,然后使用ZigBee自組網(wǎng)將數(shù)據(jù)轉(zhuǎn)發(fā)出去[8],也能達(dá)到控制的目的。ZigBee無線傳輸技術(shù)在物聯(lián)網(wǎng)中也是經(jīng)常使用到的技術(shù)。

5 結(jié)束語

本文設(shè)計(jì)的控制系統(tǒng)經(jīng)過實(shí)踐操作,利用高校中的教學(xué)樓作為實(shí)踐對(duì)象,順利通過測(cè)試。經(jīng)過測(cè)試,與傳統(tǒng)的教室控制系統(tǒng)相比,在使用服務(wù)器以及路由器的搭橋之下實(shí)現(xiàn)了根據(jù)課表時(shí)間自動(dòng)控制用電設(shè)備的開關(guān),通過指令的方式控制教室中的用電器開關(guān)并返回相關(guān)用電設(shè)備的用電情況,比傳統(tǒng)的系統(tǒng)更加智能,也大大降低了教室用電成本以及人力維護(hù)成本。該系統(tǒng)也可用于其他場(chǎng)景,具有一定的經(jīng)濟(jì)和社會(huì)效益。

猜你喜歡
單片機(jī)程序數(shù)據(jù)庫
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
試論我國(guó)未決羈押程序的立法完善
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
主站蜘蛛池模板: 日本精品αv中文字幕| 72种姿势欧美久久久大黄蕉| 国产一级毛片高清完整视频版| 国产小视频a在线观看| 国产男女免费视频| 国产自视频| 99在线观看精品视频| 最新国产成人剧情在线播放| 91久久偷偷做嫩草影院| 国产福利2021最新在线观看| 国产区免费精品视频| 亚洲AⅤ永久无码精品毛片| 精品99在线观看| 国产精品尤物铁牛tv| 国产精品极品美女自在线看免费一区二区| 色妞www精品视频一级下载| 一级黄色网站在线免费看| 久久久久青草线综合超碰| 日韩欧美国产中文| 欧美精品黑人粗大| 91黄视频在线观看| 亚洲天堂视频在线观看免费| 性视频久久| 青青草国产在线视频| 亚洲黄色视频在线观看一区| 曰韩免费无码AV一区二区| 亚洲国产日韩视频观看| 欧美专区日韩专区| 国产91色| 狼友视频国产精品首页| 国产夜色视频| 国产日本一区二区三区| 婷婷丁香在线观看| 亚洲天堂精品在线观看| 亚洲伊人久久精品影院| 国产sm重味一区二区三区| 中文字幕免费在线视频| 尤物亚洲最大AV无码网站| 国产成人精品视频一区二区电影| 国产在线八区| 国产欧美亚洲精品第3页在线| 91外围女在线观看| 亚洲人成亚洲精品| 欧美午夜理伦三级在线观看| 日本黄色不卡视频| 天天激情综合| 国产精品中文免费福利| 欧美精品亚洲精品日韩专区va| 国产不卡一级毛片视频| 亚洲欧美人成电影在线观看| 欧美啪啪一区| 国产久草视频| 一级片一区| 免费人成在线观看视频色| 国产大全韩国亚洲一区二区三区| 天天摸天天操免费播放小视频| 五月婷婷综合在线视频| 久久99国产综合精品1| 国产在线一区二区视频| 日本一区二区三区精品AⅤ| 国产伦片中文免费观看| 成人伊人色一区二区三区| 日本精品中文字幕在线不卡 | 四虎国产成人免费观看| 丁香六月激情综合| 精品午夜国产福利观看| 无码免费的亚洲视频| 99久久精品久久久久久婷婷| 日韩无码真实干出血视频| 国产精品护士| 欧洲日本亚洲中文字幕| 97青青青国产在线播放| 国产乱子伦无码精品小说| 91青青草视频| 久久亚洲精少妇毛片午夜无码 | 欧美一区二区福利视频| 亚洲三级色| 亚洲综合网在线观看| 亚洲香蕉在线| 色综合久久88| 一级毛片高清| 任我操在线视频|