前 言 本文主要介紹創(chuàng )龍科技TL3562-MiniEVM評估板基于MQTT通信協(xié)議的開(kāi)發(fā)案例,適用開(kāi)發(fā)環(huán)境如下。 Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit Linux開(kāi)發(fā)環(huán)境:VMware16.2.5、Ubuntu20.04.6 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.209 LinuxSDK:rk3562-ubuntu20.04-sdk-[版本號](基于rk3562_linux_release_v1.2.0) 我司提供的MQTT通信協(xié)議開(kāi)發(fā)案例主要包括mqtt_client和mqtt_sinewave_pub,位于產(chǎn)品資料“4-軟件資料Demomqtt-demos”目錄下。 評估板簡(jiǎn)介 創(chuàng )龍科技 TL3562-MiniEVM 是一款基于瑞芯微 RK3562J/RK3562 處理器設計的四核 AR M Cortex-A53 + 單核 ARM Cortex-M0 國產(chǎn)工業(yè)評估板,主頻高達 2.0GHz。評估板由核心板和評估底板組成,核心板 CPU、ROM、RAM、電源、晶振等所有元器件均采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率 100%,評估底板大部分元器件亦采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率約 99%(按元器件數量占比,數據僅供參考)。核心板經(jīng)過(guò)專(zhuān)業(yè)的 PCB Layout 和高低溫測試驗證,支持選配屏蔽罩,質(zhì)量穩定可靠,可滿(mǎn)足各種工業(yè)應用環(huán)境要求。 評估板引出 2 路 Ethernet、2 路 USB、Micro SD、UART 等通信接口,同時(shí)引出 2 路 M IPI CSI、LVDS LCD、MIPI LCD、HDMI OUT、MIC IN、SPK OUT、HP OUT 多媒體接口,支 持 1080P@60fps H.264 視頻編碼、4K@30fps H.265 視頻解碼。 評估板體積小巧,尺寸為 85x130mm,可作為卡片式電腦使用,且便于產(chǎn)品集成,方便用戶(hù)快速進(jìn)行產(chǎn)品方案評估與技術(shù)預研。 評估板硬件資源圖解 1 評估板硬件資源圖解 2 MQTT通信協(xié)議簡(jiǎn)介 概述 MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協(xié)議),是一種基于發(fā)布/訂閱(Publish/Subscribe)模式的“輕量級”通訊協(xié)議,該協(xié)議構建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布。MQTT最大優(yōu)點(diǎn)在于,可以極少的代碼和有限的帶寬,為連接遠程設備提供實(shí)時(shí)可靠的消息服務(wù)。 MQTT是輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現的,同時(shí)作為一種低開(kāi)銷(xiāo)、低帶寬占用的即時(shí)通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設備、移動(dòng)應用等方面有較廣泛的應用。 圖 1 MQTT具有如下特點(diǎn): 輕量可靠:MQTT的報文格式精簡(jiǎn)、緊湊,可在嚴重受限的硬件設備和低帶寬、高延遲的網(wǎng)絡(luò )上實(shí)現穩定傳輸。 發(fā)布/訂閱模式(Publish/Subscribe):發(fā)布/訂閱模式的優(yōu)點(diǎn)在于發(fā)布者與訂閱者的解耦,實(shí)現異步協(xié)議。即訂閱者與發(fā)布者無(wú)需建立直接連接,亦無(wú)需同時(shí)在線(xiàn)。 為物聯(lián)網(wǎng)而生:提供心跳機制、遺囑消息、QoS質(zhì)量等級 + 離線(xiàn)消息、主題和安全管理等全面的物聯(lián)網(wǎng)應用特性。 生態(tài)更完善:覆蓋范圍廣,已成為眾多云廠(chǎng)商物聯(lián)網(wǎng)平臺的標準通信協(xié)議。 應用場(chǎng)景 MQTT作為一種低開(kāi)銷(xiāo),低帶寬占用的即時(shí)通訊協(xié)議,可以極少的代碼和帶寬為聯(lián)網(wǎng)設備提供實(shí)時(shí)可靠的消息服務(wù),適用于硬件資源有限的設備及帶寬有限的網(wǎng)絡(luò )環(huán)境。常見(jiàn)的應用場(chǎng)景如下: 物聯(lián)網(wǎng)M2M通信,物聯(lián)網(wǎng)大數據采集。 移動(dòng)即時(shí)消息及消息推送。 智能硬件、智能家居、智能電器。 車(chē)聯(lián)網(wǎng)通信,電動(dòng)車(chē)站樁采集。 智慧城市、遠程醫療、遠程教育。 電力能源、石油能源。 Mosquitto工具安裝 Mosquitto是一款開(kāi)源的MQTT消息代理(服務(wù)器)軟件,提供輕量級的、支持可發(fā)布/可訂閱的的消息推送模式。我司提供的評估板文件系統已支持Mosquitto工具,本文mqtt_client案例采用Mosquitto工具演示MQTT通信協(xié)議的通信功能。由于上位機Ubuntu系統作為通信對象,因此需在Ubuntu終端執行如下命令安裝Mosquitto工具。 Host#sudo apt-get install mosquitto-clients 圖 2 mqtt_client案例 案例說(shuō)明 案例功能:使用libmosquitto的API與MQTT代理服務(wù)器通信;贛QTT通信協(xié)議,實(shí)現發(fā)布和訂閱消息功能。 程序流程圖如下圖所示。 圖 3 案例測試 本案例使用公網(wǎng)MQTT HiveMQ服務(wù)器與上位機Ubuntu Mosquitto工具通信。請通過(guò)網(wǎng)線(xiàn)將評估板千兆網(wǎng)口ETH0 RGMII和上位機連接至公網(wǎng),確?烧TL(fǎng)問(wèn)互聯(lián)網(wǎng)。 下表提供了可用的在線(xiàn)公共MQTT服務(wù)器,可根據需要自行切換。 表 1
評估板啟動(dòng),將案例bin目錄下mqtt_client可執行文件拷貝至評估板文件系統的任意目錄下,執行如下命令查看程序參數說(shuō)明。 Target#./mqtt_client --help 圖 4 評估板發(fā)布/上位機訂閱 在上位機執行如下命令,使用mosquitto_sub工具訂閱MQTT主題。 Host#mosquitto_sub -h broker.hivemq.com -p 1883 -t test/data 參數解析: -h:指定MQTT服務(wù)器; -p:指定MQTT服務(wù)器TCP端口; -t:定義MQTT主題,可自定義命名。 圖 5 在評估板文件系統執行如下命令發(fā)布消息至MQTT服務(wù)器。 Target#./mqtt_client -h broker.hivemq.com -p 1883 -M publish -t test/data -m 'www.tronlong.com' 參數解析: -h:MQTT服務(wù)器 -p:MQTT服務(wù)器端口 -M:模式,publish為發(fā)布,subscribe為訂閱 -t:MQTT主題,可隨便命名 -m:發(fā)布的MQTT消息 圖 6 評估板發(fā)布 消息發(fā)布成功后,上位機將從MQTT服務(wù)器接收到對應的消息。 圖 7 上位機訂閱 評估板訂閱/上位機發(fā)布 在評估板文件系統執行如下命令訂閱MQTT主題。 Target#./mqtt_client -h broker.hivemq.com -p 1883 -M subscribe -t test/data 圖 8 在上位機執行如下命令發(fā)布消息至MQTT服務(wù)器。 Host#mosquitto_pub -h broker.hivemq.com -p 1883 -t test/data -m www.tronlong.com 圖 9 上位機發(fā)布 消息發(fā)布成功后,評估板將從MQTT服務(wù)器接收到對應消息。 圖 10 評估板訂閱 案例編譯 將案例src文件夾拷貝至Ubuntu工作目錄下,請先確保已參考《Ubuntu系統使用手冊》文檔安裝LinuxSDK,在案例src目錄執行如下命令修改Makefile文件。 Host#vim Makefile 圖 11 修改內容如下: SDK_PATH = /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0 //修改為L(cháng)inuxSDK源碼路徑 圖 12 執行如下命令,配置交叉編譯工具鏈環(huán)境變量,進(jìn)行案例編譯。編譯完成后,將在當前目錄下生成可執行文件。 Host#source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment Host#make 圖 13 關(guān)鍵代碼 創(chuàng )建Mosquitto實(shí)例 圖 14 設置回調函數 圖 15 連接MQTT服務(wù)器 圖 16 發(fā)布消息 圖 17 訂閱主題 圖 18 mqtt_sinewave_pub案例 案例說(shuō)明 案例功能:使用libmosquitto的API與MQTT代理服務(wù)器通信。評估板生成正弦波數據,每秒發(fā)送512個(gè)采樣點(diǎn)的數據至MQTT服務(wù)器;上位機通過(guò)Web頁(yè)面從MQTT服務(wù)器接收到數據后,將會(huì )繪制波形。 程序流程圖如下圖所示。 圖 19 案例測試 本案例使用公網(wǎng)MQTT HiveMQ服務(wù)器與上位機Ubuntu Web程序通信。請通過(guò)網(wǎng)線(xiàn)將評估板千兆網(wǎng)口ETH0 RGMII和上位機連接至公網(wǎng),確?烧TL(fǎng)問(wèn)互聯(lián)網(wǎng)。 評估板啟動(dòng),將案例bin目錄下mqtt_sinewave_pub可執行文件拷貝至評估板文件系統的任意目錄下,執行如下命令查看程序參數說(shuō)明。 Target#./mqtt_sinewave_pub --help 圖 20 執行如下命令運行程序,連接MQTT服務(wù)器,并發(fā)送正弦波數據至MQTT服務(wù)器。 Target#./mqtt_sinewave_pub -h broker.hivemq.com -p 1883 圖 21 評估板程序運行后,在上位機使用瀏覽器打開(kāi)"toolsweb_mqtt_sub"目錄下的index.html文件。在彈出的Web頁(yè)面(如下圖),依次輸入MQTT服務(wù)器:broker.hivemq.com,端口號:8000,最后點(diǎn)擊連接,Web頁(yè)面將會(huì )從MQTT服務(wù)器獲取正弦波數據并進(jìn)行波形繪制。 備注:ARM端MQTT通信協(xié)議基于TCP協(xié)議,Web端MQTT通信協(xié)議基于WebSocket協(xié)議,因此使用的端口號不同。 圖 22 圖 22 案例編譯 將案例src文件夾拷貝至Ubuntu工作目錄下,請先確保已參考《Ubuntu系統使用手冊》文檔安裝LinuxSDK,進(jìn)入案例src目錄執行如下命令修改Makefile文件。 Host#vim Makefile 圖 24 修改內容如下: SDK_PATH = /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0 //修改為L(cháng)inuxSDK源碼路徑 圖 25 執行如下命令配置交叉編譯工具鏈環(huán)境變量。編譯完成后,將在當前目錄下生成可執行文件。 Host#source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment Host#make 圖 26 關(guān)鍵代碼 創(chuàng )建Mosquitto實(shí)例 圖 27 設置回調函數 圖 28 連接MQTT服務(wù)器 圖 29 發(fā)送數據 圖 30 想了解更多資料,可前往創(chuàng )龍科技官網(wǎng)或微信公眾號。 |