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

基于ESP32平臺和MQTT協議的遠程控制系統設計

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

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

關鍵詞: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)

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

2 ? 總體設計(Overall design)

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

3 ? 系統的硬件設計(Hardware design of the system)

3.1 ? ESP32平臺的硬件設計

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

3.2 ? 風扇控制硬件設計

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

4 ? 系統的軟件設計(Software design of the system)

4.1 ? 無線連接WiFi功能程序設計

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

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

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

def do_connect():

import json

import network

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

# wifi_config.json在根目錄下

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

try:

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

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

# 若初次運行,則將進入except執行配置文件的創建

except:

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

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

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

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云服務器功能程序設計

4.2.1 ? MQTT協議通信流程

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

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

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

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

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

(3)PC端發布主題

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

一旦MQTT云服務端收到發送過來數據幀之后,發現ESP32設備平臺訂閱了Fan_Control這個主題,立即將數據幀轉發至ESP32設備平臺,最后根據消息指令Fan_on或者Fan_off實現對風扇的開啟和關閉操作,如圖5所示系統訂閱與發布流程。

4.2.2 ? ESP32設備平臺的MQTT客戶端實現

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

from umqtt.simple import MQTTClient

import time

from machine import Pin

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

SERVER = '云服務器IP地址'

TOPIC = b'Fan_Control'

def mqtt_callback(topic, msg):

if msg==b"Fan_on":

fan.value(1) #風扇運行

if msg==b"Fan_off":

fan.value(0) #風扇停止

def connmqtt():

client = MQTTClient(CLIENT_ID, SERVER)

client.set_callback(mqtt_callback)

client.connect()

client.subscribe(TOPIC)#訂閱主題

5 ? 系統測試(System testing)

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

6 ? 結論(Conclusion)

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

參考文獻(References)

[1] 張玉杰,張海濤,張婷婷.基于MQTT的物聯網系統消息發布/訂閱方法研究[J]電視技術,2017(Z3):23-25.

[2] 崔自賞,陳冰,艾武,等.基于MQTT協議的物聯網電梯監控系統設計[J].電子測量技術,2018(07):15-17.

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

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

[5] 姚丹謝.雪松.基于MQTT協議的物聯網通信系統的研究與實訓[J].信息通信,2016,3(20):33-35.

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

[7]吳俊輝,吳桂初,陳沖,等.基于MQTT協議的物聯網網關設計[J].溫州大學學報(自然科學版),2019,40(04):54-61.

作者簡介:

王 ?浩(1971-),男,碩士,副教授.研究領域:物聯網工程應用.

主站蜘蛛池模板: 国产色婷婷视频在线观看| 精品国产免费观看一区| 九九热免费在线视频| 亚洲第一成年网| 黄色网在线| 人妻无码AⅤ中文字| 国产真实乱人视频| 九九热精品免费视频| 亚洲欧美成人网| 日本高清在线看免费观看| 91福利国产成人精品导航| 久久精品无码中文字幕| 狠狠躁天天躁夜夜躁婷婷| 亚洲综合18p| 成人字幕网视频在线观看| 免费毛片视频| 亚洲AV无码不卡无码| 亚洲嫩模喷白浆| 最新日韩AV网址在线观看| 国产在线第二页| 伊人91在线| 在线网站18禁| 中文成人无码国产亚洲| 国产午夜无码专区喷水| 日本一区高清| 无码日韩视频| 久久午夜夜伦鲁鲁片无码免费| 女人18毛片水真多国产| 亚洲一欧洲中文字幕在线| 另类重口100页在线播放| 中文字幕不卡免费高清视频| 亚洲成人福利网站| 亚洲无线一二三四区男男| 精品一区二区久久久久网站| 欧美精品成人一区二区视频一| 久久国产精品麻豆系列| 国产成人盗摄精品| 中文字幕乱码二三区免费| 亚洲最大综合网| 国外欧美一区另类中文字幕| 中国一级特黄大片在线观看| 亚洲天堂视频在线播放| 青青草国产免费国产| 国产成人凹凸视频在线| 伊人久久青草青青综合| 亚洲AV无码乱码在线观看裸奔| 福利视频一区| 婷婷伊人五月| 国产成人av一区二区三区| 亚洲成人网在线观看| AⅤ色综合久久天堂AV色综合 | 久久国产亚洲偷自| 呦系列视频一区二区三区| 亚洲一区波多野结衣二区三区| 欧美午夜小视频| 97se亚洲综合不卡| 欧美黄色a| 国内老司机精品视频在线播出| 亚洲乱码在线播放| 日韩欧美中文字幕在线韩免费| 在线不卡免费视频| 亚洲黄色激情网站| 国产一级α片| av一区二区三区高清久久| 久久频这里精品99香蕉久网址| 久久精品丝袜高跟鞋| 欧洲高清无码在线| 99尹人香蕉国产免费天天拍| 综合亚洲色图| 国产美女久久久久不卡| 中文成人在线| 一区二区日韩国产精久久| 国产91丝袜在线播放动漫 | 久久综合色视频| 欧美精品三级在线| 午夜国产理论| а∨天堂一区中文字幕| 亚洲第一黄片大全| 国产精品自在线拍国产电影| 亚洲天堂网站在线| 久久精品91麻豆| 在线色综合|