1. 程式人生 > 其它 >2-HC32F460(華大)+Air724UG(4G GPRS)基本控制篇(自建物聯網平臺)-整體執行測試-微信小程式掃碼繫結Air724,並通過MQTT和微控制器實現遠端通訊控制

2-HC32F460(華大)+Air724UG(4G GPRS)基本控制篇(自建物聯網平臺)-整體執行測試-微信小程式掃碼繫結Air724,並通過MQTT和微控制器實現遠端通訊控制

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTA/Air724UG/my.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

說明

這節測試一下微信小程式掃碼繫結Air724,並通過MQTT和模組實現遠端通訊控制

這一節作為板子的整體功能測試,使用者下載這一節的程式用來測試基本控制篇實現的基本功能

還有就是測試一下板子是否工作正常.

GPRS模組和底板安裝說明

安裝到第三排排母!模組的第一個VCC引腳和底板的5V引腳相連線

GPRS模組手機卡和天線安裝說明

注意手機卡的缺角方向是朝裡面

測試準備工作

1.請根據硬體使用說明下載這節程式到微控制器

2.微控制器工程目錄

3.Hex檔案位置

4.使用usb口列印串列埠日誌

V1.2版本

V1.4及其以上版本

正常情況下會列印

安裝微信小程式(使用開發工具開啟以下工程)

注:如果沒有學習過小程式,請先學習微信小程式開源教程

8.點選 預覽,使用微信掃碼以後安裝到手機

注:預設連線的我的伺服器,mnif.cn,使用者可以在詳情裡面選擇不校驗域名(不推薦,可能通訊有問題)

推薦在微信小程式平臺上設定域名白名單

點選預覽,然後使用微信掃描安裝到手機

9.新增裝置

10.掃碼新增

11.掃描裝置的二維碼

12.掃描成功以後,自動跳轉到主頁面,並添加了一個裝置

顯示的為裝置的IMEI號

13.點選裝置進入裝置控制頁面

整體說明

整個程式就是利用MQTT伺服器實現APP和裝置之間通訊.

微信小程式通過掃碼獲取裝置的IMEI號

裝置連線上MQTT伺服器以後,裝置訂閱的主題是: user/裝置的IMEI號 裝置釋出的主題是: device/裝置的IMEI號

微信小程式獲取裝置的MAC地址後,APP釋出的主題是:user/裝置的IMEI號 APP訂閱的主題是:device/裝置的IMEI號

微信小程式和裝置的釋出和訂閱的主題相對應,APP和裝置的訊息發給MQTT伺服器以後,MQTT伺服器就為各自的訊息互相轉發.

微信小程式掃碼程式

1.點選新增裝置選單跳轉到新增裝置頁面

2.點選掃碼,呼叫掃碼程式.掃碼成功以後攜帶著資料跳轉到index頁面

3.index把接收的資料儲存起來

4.在onShow顯示資料

程式MQTT通訊過程

1.關於MQTT解析包

mqtt_msg 檔案是最底層的mqtt協議封裝檔案, 使用者不需要研究

mqtt 檔案是在mqtt_msg之上封裝的一套檔案,該檔案內部處理了mqtt各種通訊流程,使用者也是呼叫這裡面的api函式.

具體使用可以接著往下看.

使用者始終記住:和mqtt伺服器通訊就是和tcp伺服器通訊.不過他們之間的通訊資料需要按照mqtt協議規定.

2.配置所連線的MQTT伺服器的引數

3.初始化MQTT變數,註冊相應的回撥函式

我編寫的包是以註冊回撥函式的形式使用.

4.先使用TCP連線上TCP伺服器(MQTT伺服器就是TCP伺服器嘛)

控制連線伺服器使用的是ConfigModuleNoBlock 框架

注意哈連線上TCP以後設定為了透傳, 以後微控制器串列埠傳送的資料就會直接通過模組發到伺服器

伺服器接收的資料直接就通過串列埠發給了微控制器

5.連線上TCP以後,傳送連線MQTT協議

6.把伺服器返回的資料交給mqtt_function_connect_ack 函式處理

如果返回的資料是連線成功,此函式便會呼叫上面註冊的連線成功回撥函式

6.在連線成功回撥函式中訂閱主題,釋出訊息

7.連線成功MQTT伺服器以後解析MQTT資料是下面的函式

把資料交給這個函式,函式內部解析之後會呼叫相應的回撥函式

8.接收處理MQTT訊息

控制繼電器吸合 {"data":"switch","bit":"1","status":"1"}

控制繼電器斷開 {"data":"switch","bit":"1","status":"0"}

查詢繼電器狀態 {"data":"switch","bit":"1","status":"-1"}

9.傳送溫溼度資料

10.提示

只要是連線上MQTT了,使用者只需要在任意地方呼叫訂閱主題和釋出訊息就可以.

使用者呼叫其api函式所打包的資料會儲存在mqtt內部快取管理裡面,然後內部自動把資料通過tcp傳送出去.

快取管理是使用的我編寫的BufferManage

把打包好的MQTT協議資料提取出來併發送給伺服器的地方

關於下面的mymqtt.timer_out_send = mqtt_timerout_send_default; 這個是預防有的模組傳送資料之後需要等待,按照提示修改就可以

當前我設定的為20ms

12,如果傳送的MQTT訊息比較大,可在此處修改快取管理大小

13.如果自己的MQTT資料包超過16383位元組,則還需要修改底層

當前是使用兩位元組儲存資料個數

14.這裡有mqtt包的使用流程,瞭解一下就可以,後面有詳細的移植教程

14,現在看微信小程式端的程式

paho-mqtt.js 官方底層包 mqtt.js本人再次封裝的mqtt包,使用者後期通訊都是使用這個裡面的api函式

使用者可以根據自己的mqtt伺服器更改引數

15,連線mqtt只需要在一開始的時候呼叫下

MQTT.ConnectMqtt();//連結MQTT

然後內部就是自動連線.

16,點選頁面上的裝置,攜帶著裝置的MAC地址資訊跳轉到裝置控制頁面

17,控制頁面在onLoad函式裡面接收跳轉的資料,並在裡面設定MQTT回撥函式

18.在定時器裡訂閱主題

19.在MQTT接收回調函式中接收處理資料

20.點選按鈕釋出繼電器控制命令

結語

這節測試了基本的MQTT遠端通訊控制,在後面的章節中將學習到整個流程是如何實現的.並有相應的移植教程.