亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ESP32平臺和MQTT協(xié)議的遠程控制系統(tǒng)設(shè)計

        2020-08-31 01:38:50王浩
        軟件工程 2020年8期

        摘 ?要:隨著工業(yè)互聯(lián)網(wǎng)的快速發(fā)展,智能化遠程控制成為現(xiàn)代工業(yè)發(fā)展的必然趨勢,目前主流的基于TCP/IP網(wǎng)絡(luò)連接方式是一種MQTT通信協(xié)議,它可以通過發(fā)布和訂閱方式進行數(shù)據(jù)雙向通信,是面向物聯(lián)網(wǎng)遠程通信的輕量級連接協(xié)議。本文設(shè)計一種基于MQTT通信協(xié)議在ESP32硬件平臺上的遠程控制設(shè)計方案,利用Python語言編程實現(xiàn)遠程控制功能,并通過MQTT通信協(xié)議方式實現(xiàn)遠程控制風(fēng)扇。實驗結(jié)果表明:該系統(tǒng)數(shù)據(jù)通信穩(wěn)定和可靠性強,具有一定的應(yīng)用前景。

        關(guān)鍵詞:ESP32;MQTT;Python

        中圖分類號:TP323 ? ? 文獻標識碼:A

        Abstract: With the fast development of the industrial Internet, intelligent remote control has become the inevitable trend of the modern industry development. At present, the main TCP/ IP-based network connection mode is an MQTT (Message Queuing Telemetry Transport) communication protocol. As a lightweight connection protocol for Internet of Things telecommunication, it allows two-way data communication via publishing and subscription. This paper designs a remote control plan on the ESP32 hardware platform based on MQTT communication protocol. It uses Python as the programming language to realize remote control and remote control fans through MQTT communication protocol. The experiment result shows that the data communication of this system is stable with higher reliability, and has a certain application prospect.

        Keywords: ESP32; MQTT; Python

        1 ? 引言(Introduction)

        隨著工業(yè)互聯(lián)網(wǎng)技術(shù)和無線網(wǎng)絡(luò)通信技術(shù)的迅速發(fā)展,智能制造產(chǎn)業(yè)對遠程智能化控制工業(yè)設(shè)備的開發(fā)和應(yīng)用不斷加大力度,使得對工業(yè)嵌入式設(shè)備和PC端之間相互通信提出了更高的要求,如果采用原始的socket網(wǎng)絡(luò)通信,并不能保障數(shù)據(jù)通信可以準確到達接收方,同時數(shù)據(jù)的可靠性和實時性也會有一定的影響[1]。為了保障數(shù)據(jù)信息傳遞的服務(wù)質(zhì)量,本文提出一種在ESP32硬件平臺上基于MQTT通信協(xié)議方式,使用Python語言實現(xiàn)遠程通信控制風(fēng)扇設(shè)計方案。首先啟動PC端MQTT云服務(wù)器,然后利用ESP32硬件模塊的WIFI功能連接MQTT云服務(wù)器,并作為MQTT通信客戶端,向MQTT云服務(wù)器進行訂閱消息,一旦有PC端向MQTT云服務(wù)器進行發(fā)布消息,就可以實現(xiàn)雙方消息的相互推送[2],并達到遠程控制硬件設(shè)備。

        2 ? 總體設(shè)計(Overall design)

        為了提高PC終端對智能制造產(chǎn)業(yè)中的執(zhí)行機構(gòu)實現(xiàn)遠程控制的靈活性和可擴展性,本系統(tǒng)以ESP32硬件平臺為載體,一方面利用Python語言編程構(gòu)建MQTT的客戶端,通過訂閱的通信方式與MQTT云服務(wù)器進行數(shù)據(jù)通信,另一方面PC終端也通過MQTT云服務(wù)器進行發(fā)布相關(guān)信息,這樣雙方就可以通過云服務(wù)器作為中間橋梁,實現(xiàn)遠程控制硬件設(shè)備,如圖1所示系統(tǒng)的整體架構(gòu)。

        3 ? 系統(tǒng)的硬件設(shè)計(Hardware design of the system)

        3.1 ? ESP32平臺的硬件設(shè)計

        ESP32硬件平臺中的MCU芯片是一款可作為獨立運行應(yīng)用程序的設(shè)備模塊,其主要載體可以通過SPI/SDIO或I2C/UART接口提供WiFi和藍牙功能[3]。另外ESP32模塊只需極少的外圍器件,即可實現(xiàn)安全可靠數(shù)據(jù)通信處理功能。本文主要使用GPIO輸出功能和WIFI通信的STA客戶端模式,通過ESP32模塊提供的WiFi功能連接至MQTT云服務(wù)器端實現(xiàn)對風(fēng)扇的遠程控制,ESP32硬件平臺電路如圖2所示。

        3.2 ? 風(fēng)扇控制硬件設(shè)計

        為了能夠通過ESP32硬件模塊驅(qū)動大功率的風(fēng)扇設(shè)備運行,需要將ESP32硬件模塊的GPIO19引腳連接L9110直流電機驅(qū)動芯片,這里L(fēng)9110芯片是為控制和驅(qū)動電機設(shè)計的兩通道推挽式功率放大專用集成電路器件[4],該芯片有兩個TTL/CMOS兼容電平的輸入,具有較大的電流驅(qū)動能力,每通道能通過750—800mA的持續(xù)電流,它的兩個輸出端能直接驅(qū)動直流風(fēng)扇電機的運行和停止,風(fēng)扇控制硬件電路如圖3所示。

        4 ? 系統(tǒng)的軟件設(shè)計(Software design of the system)

        4.1 ? 無線連接WiFi功能程序設(shè)計

        ESP32設(shè)備端系統(tǒng)軟件部分主要是利用Python語言在VSCode開發(fā)平臺上進行功能代碼編寫,實現(xiàn)MQTT通信控制功能[5],這里包括無線連接WiFi功能、MQTT客戶端與MQTT云服務(wù)器端數(shù)據(jù)通信功能。

        為了能夠讓ESP32硬件平臺連接WIFI的AP熱點,需要將WIFI啟動為STA模式,這里首先從JSON配置文件中讀取熱點名稱和密碼,如果沒有產(chǎn)生配置文件,用戶需要從終端輸入熱點和密碼,然后保存,接著連接當前環(huán)境AP熱點,在連接網(wǎng)絡(luò)成功之后,顯示ESP32設(shè)備平臺IP、子網(wǎng)掩碼、網(wǎng)關(guān)和DNS信息,如圖4所示ESP32硬件平臺連接WiFi功能流程。

        無線連接WiFi主要功能代碼如下:

        def do_connect():

        import json

        import network

        # 嘗試讀取配置文件wifi_confi.json,這里以json的方式來存儲WIFI配置

        # wifi_config.json在根目錄下

        # 若不是初次運行,則將文件中的內(nèi)容讀取并加載到字典變量config

        try:

        with open('wifi_config.json','r') as f:

        config = json.loads(f.read())

        # 若初次運行,則將進入except執(zhí)行配置文件的創(chuàng)建

        except:

        essid = input('wifi name:') # 輸入essid

        password = input('wifi passwrod:') # 輸入password

        config = dict(essid=essid, password=password) # 創(chuàng)建字典

        with open('wifi_config.json','w') as f:

        f.write(json.dumps(config)) # 將字典序列化為json字符串,存入wifi_config.json

        #以下為正常的WIFI連接流程

        wifi = network.WLAN(network.STA_IF)

        if not wifi.isconnected():

        print('connecting to network...')

        wifi.active(True)

        wifi.connect(config['essid'], config['password'])

        while not wifi.isconnected():

        pass

        print('network config:', wifi.ifconfig())

        if __name__ == '__main__':

        do_connect()

        4.2 ? MQTT客戶端連接MQTT云服務(wù)器功能程序設(shè)計

        4.2.1 ? MQTT協(xié)議通信流程

        MQTT通信協(xié)議是一種基于發(fā)布和訂閱模型的輕量級消息傳輸網(wǎng)絡(luò)協(xié)議,這個輕量級協(xié)議可在設(shè)備硬件資源受限、高延遲以及帶寬有限的網(wǎng)絡(luò)上實現(xiàn)。它可以為物聯(lián)網(wǎng)設(shè)備的多樣化應(yīng)用場景提供適當?shù)馁Y源平衡和靈活性服務(wù)。另外在基于MQTT協(xié)議的IOT網(wǎng)絡(luò)里面有發(fā)布者Publisher負責(zé)發(fā)布消息,訂閱者Subscriber訂閱消息,以及MQTT云服務(wù)器中轉(zhuǎn)站負責(zé)將信息從發(fā)布者傳遞到訂閱者[6]。這里在進行MQTT異步消息通信前,需要建立可靠的TCP網(wǎng)絡(luò)通信連接,整個通信過程大致分成三個部分。

        (1)PC端MQTT云服務(wù)器開啟Server模式

        MQTT云服務(wù)器是整個網(wǎng)絡(luò)通信的核心,這里采用Mosquitto作為整個系統(tǒng)MQTT云服務(wù)端,當開啟Server模式之后,所有MQTT報文都是通過Mosquitto進行管理和轉(zhuǎn)發(fā)的,首先ESP32硬件平臺利用PC端MQTT云服務(wù)器IP地址和端口號作為參數(shù),創(chuàng)建一個訂閱信息的MQTT客戶端,然后PC端再創(chuàng)建一個可以發(fā)布消息的MQTT客戶端,這樣通過MQTT云服務(wù)器的中轉(zhuǎn)站可以實現(xiàn)ESP32設(shè)備端和PC端之間信息的訂閱和發(fā)布。

        (2)ESP32設(shè)備平臺訂閱主題過程

        當MQTT云服務(wù)器開啟Server模式之后,ESP32設(shè)備平臺通過設(shè)置PC端MQTT云服務(wù)器IP地址和端口號,啟動與MQTT云服務(wù)端進行長連接,然后向MQTT云服務(wù)端訂閱TOPIC_ID的主題為Fan_Control,以實現(xiàn)一個MQTT客戶端創(chuàng)建。

        (3)PC端發(fā)布主題

        首先PC端上通過MQTT云服務(wù)器IP地址和端口號與MQTT云服務(wù)端進行長連接,實現(xiàn)PC端的MQTT客戶端創(chuàng)建,然后發(fā)送數(shù)據(jù)幀TOPIC_ID+消息指令,這里TOPIC_ID: Fan_Control, MESSAGE: Fan_on或者Fan_off。這樣就實現(xiàn)了向MQTT云服務(wù)端發(fā)布主題。

        一旦MQTT云服務(wù)端收到發(fā)送過來數(shù)據(jù)幀之后,發(fā)現(xiàn)ESP32設(shè)備平臺訂閱了Fan_Control這個主題,立即將數(shù)據(jù)幀轉(zhuǎn)發(fā)至ESP32設(shè)備平臺,最后根據(jù)消息指令Fan_on或者Fan_off實現(xiàn)對風(fēng)扇的開啟和關(guān)閉操作,如圖5所示系統(tǒng)訂閱與發(fā)布流程。

        4.2.2 ? ESP32設(shè)備平臺的MQTT客戶端實現(xiàn)

        為了使ESP32硬件平臺能夠創(chuàng)建MQTT客戶端對象,并連接MQTT云服務(wù)器,實現(xiàn)訂閱控制風(fēng)扇的功能。這里使用Python編程語言在VSCode開發(fā)平臺上,調(diào)用針對ESP32平臺的MQTT通信功能庫,實現(xiàn)MQTT客戶端連接MQTT云服務(wù)器訂閱功能[7],主要功能代碼如下:

        from umqtt.simple import MQTTClient

        import time

        from machine import Pin

        fan = Pin(19, Pin.OUT) ?#設(shè)置控制風(fēng)扇的GPIO19引腳

        SERVER = '云服務(wù)器IP地址'

        TOPIC = b'Fan_Control'

        def mqtt_callback(topic, msg):

        if msg==b"Fan_on":

        fan.value(1) #風(fēng)扇運行

        if msg==b"Fan_off":

        fan.value(0) #風(fēng)扇停止

        def connmqtt():

        client = MQTTClient(CLIENT_ID, SERVER)

        client.set_callback(mqtt_callback)

        client.connect()

        client.subscribe(TOPIC)#訂閱主題

        5 ? 系統(tǒng)測試(System testing)

        為了驗證ESP32硬件平臺和PC端之間通過MQTT云服務(wù)器作為中轉(zhuǎn)站,實現(xiàn)雙方數(shù)據(jù)信息的訂閱和發(fā)布,這里采用第三方Mosquitto作為MQTT云服務(wù)器,當雙方連接MQTT云服務(wù)器成功之后,一旦ESP32硬件平臺向MQTT云服務(wù)器訂閱主題為Fan_Control,如果PC端向MQTT云服務(wù)器發(fā)布主題信息和控制風(fēng)扇的命令消息之后,ESP32硬件平臺通過訂閱主題的信息獲得PC端發(fā)來的數(shù)據(jù)幀,最后通過數(shù)據(jù)幀中包含F(xiàn)an_on或者Fan_off命令信息實現(xiàn)對風(fēng)扇設(shè)備的遠程控制操作,如圖6所示基于MQTT客戶端運行界面。

        6 ? 結(jié)論(Conclusion)

        文中采用ESP32硬件平臺和PC端通過MQTT通信協(xié)議連接MQTT云服務(wù)器之后,實現(xiàn)數(shù)據(jù)雙方的相互推送,并利用Python語言編程實現(xiàn)ESP32硬件平臺的MQTT數(shù)據(jù)訂閱通信功能,PC端設(shè)備通過MQTT發(fā)布數(shù)據(jù)信息實現(xiàn)對ESP硬件平臺的風(fēng)扇設(shè)備進行遠程控制。實驗結(jié)果表明:該系統(tǒng)操作方便和通信可靠,具有一定的應(yīng)用前景。

        參考文獻(References)

        [1] 張玉杰,張海濤,張婷婷.基于MQTT的物聯(lián)網(wǎng)系統(tǒng)消息發(fā)布/訂閱方法研究[J]電視技術(shù),2017(Z3):23-25.

        [2] 崔自賞,陳冰,艾武,等.基于MQTT協(xié)議的物聯(lián)網(wǎng)電梯監(jiān)控系統(tǒng)設(shè)計[J].電子測量技術(shù),2018(07):15-17.

        [3] 范興隆.ESP8266在智能家居監(jiān)控系統(tǒng)中的應(yīng)用[J].單片機與嵌入式系統(tǒng)應(yīng)用,2016,16(9):47-50.

        [4] 王浩.基于Esp8266WIFI平臺和MQTT協(xié)議的遠程設(shè)備數(shù)據(jù)采集與控制設(shè)計[J].泰山學(xué)院學(xué)報,2017,39(06):86-91.

        [5] 姚丹謝.雪松.基于MQTT協(xié)議的物聯(lián)網(wǎng)通信系統(tǒng)的研究與實訓(xùn)[J].信息通信,2016,3(20):33-35.

        [6] 蔣鵬,袁嵩.基于MQTT協(xié)議的綜合消息推送[J].現(xiàn)代計算機,2015,4(16):20-22.

        [7]吳俊輝,吳桂初,陳沖,等.基于MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計[J].溫州大學(xué)學(xué)報(自然科學(xué)版),2019,40(04):54-61.

        作者簡介:

        王 ?浩(1971-),男,碩士,副教授.研究領(lǐng)域:物聯(lián)網(wǎng)工程應(yīng)用.

        丰满熟女人妻一区二区三区| 久久精品国产亚洲av高清色欲| 中文无码一区二区不卡αv| 后入内射欧美99二区视频| 日韩精品国产自在久久现线拍| 国产一级淫片免费大片| 精品视频一区二区杨幂| 一区二区人妻乳中文字幕| 国产av国片精品有毛| 国产极品美女高潮抽搐免费网站| 国产av成人精品播放| 国产精品香蕉网页在线播放| 亚洲av高清不卡免费在线| 西西午夜无码大胆啪啪国模| 少妇无码太爽了不卡视频在线看| 国产高潮刺激叫喊视频| 五月激情狠狠开心五月| 女主播国产专区在线观看| 中文字幕乱码日本亚洲一区二区 | 亚洲男人天堂av在线| 人妻熟女中文字幕在线视频| 亚洲一区二区蜜桃视频| 三年片免费观看影视大全视频| 亚洲永久精品ww47| 亚洲综合偷自成人网第页色| 亚洲天堂免费一二三四区| 免费黄片小视频在线播放| 免费国产成人肉肉视频大全| 嫖妓丰满肥熟妇在线精品| 亚洲日韩精品A∨片无码加勒比| 亚洲精品无人区一区二区三区| 伊人加勒比在线观看视频| 亚洲欧美色一区二区三区| 国产成人vr精品a视频| 国产永久免费高清在线观看视频| 日韩国产精品一区二区三区| 国产又粗又黄又爽的大片| 同性男男黄g片免费网站| 国产精品综合久久久久久久免费 | 亚洲成在人网站av天堂| 亚洲a级片在线观看|