STM32+ESP8266+AIR202/302基本控制篇-114-功能測試-APP掃碼綁定Air302(NB-IOT),並通過MQTT和Air302(NB-IOT)實現遠程通信控制


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

 

說明

1.隨着2G基站撤銷和不再維護,對於低速,小數據量場合的通信由另一個GPRS模組代替(NB-IOT)

NB-IOT模塊和GPRS模塊使用起來是一樣的,都需要插手機卡(需要NB專用卡).NB-IOT是作為移動網絡的一個單獨的分支.

如果您的設備傳輸的數據量不是很大,傳輸速率也沒有嚴格的要求,直接用NB-IOT模塊即可.傳輸速度低就代表耗電少.低功耗!

如果您的設備傳輸的數據量挺大,而且希望傳輸速度快,那么還是選用2G/3G/4G模塊.

 

 

 

2.開發板板載的NB-IOT是合宙的Air302模組

這節演示一下使用APP掃碼綁定NB-IOT,然后通過MQTT服務器實現遠程溫濕度采集和遠程控制繼電器

 

 

 

測試功能

1.請按照第一節硬件介紹,下載單片機程序

 

2.安裝APP


 


3.請使用杜邦線連接如下:(安裝手機卡(NB卡,我使用的移動的NB卡),天線)
(STM32)A3 --- TX(NB-IOT)
(STM32)A2 --- RX(NB-IOT)


 

 

 

4.當前撥動開關如下:

 

5.提醒
串口1在程序里面作為了日志打印輸出口
用戶可以打開串口調試助手觀察日志

 

 

測試

1.打開APP,點擊右上角菜單,選擇添加設備 掃一掃

 

 

 

 

 

 

 

 

2.掃描成功以后,自動跳轉到主頁面,並添加了一個設備

 

設備顯示的信息為NB-IOT的IMEI

 

 

3.點擊設備進入設備控制頁面

 

 

 

 

4.控制繼電器

 

 

 

 

 

 

 

單片機程序

1.如果用戶搭建好了MQTT服務器,可以修改下面的參數連接自己的服務器

注:假設服務器的IP地址是 47.92.31.46,則unsigned char IP[55]="47.92.31.46";

ClientID默認使用芯片的唯一碼,用戶不需要填寫.

 

 

2.程序主要概況

 

 

 

① 控制模塊以非阻塞方式連接MQTT服務器
② MQTT消息處理封裝包

 

2.和NB-IOT通信

單片機使用串口2和NB-IOT用AT指令通信

串口1作為日志輸出口

所有的串口采用環形隊列緩存管理,利用空閑中斷檢測接收完一條數據以后再去處理.

由於NB-IOT模塊發送數據有間斷問題,為保證接收完一條數據

在空閑中斷的基礎上增加了額外的20Ms空閑檢測

 

 

 

 

 

 

 

3.我封裝的MQTT庫為回調函數形式

 

 

 

 

 

4.MQTT服務器實際上就是一個TCP服務器

然后在TCP的基礎上增加的協議.

所以一開始連接TCP服務器

連接服務器是使用的我寫的 ConfigModuleNoBlock小框架

 

 

 

 

 

 

 

 

 

提示:

case 3 是獲取模組的IMEI號,就是模組上面的二維碼

用IMEI作為了MQTT的ClientID

 

連接上TCP服務器(MQTT服務器)完成以后,發送連接MQTT協議

執行上面的case9 的 FunctionParseConnectMqtt 函數

在FunctionParseConnectMqttAck 函數里面處理返回的消息.

 

5.發送連接MQTT協議

 

 

 

提示:設備發布的主題在此地方組合   device/模組IMEI

 

注意一件事情: 字符串轉16進制表示的字符串

模組的發送數據需要先把所有的數據轉換程序16進制,然后再發!

模組內部程序就做成了這樣!!!確實有點麻煩,需要先轉一下!!!

 

6.連接成功以后執行MQTT連接回調

 

 

 

 

7.在連接回調函數里面訂閱主題

訂閱的主題:user/設備的IMEI

 

 

 

 

8.接收處理消息

模組發過來的是把數據轉成16進制字符串以后的信息,需要轉換為實際的數據

然后讓mqtt_read_function 處理各種MQTT消息.

如果返回的是普通通信數據,則調用回調函數處理

 

 

 

 

 

 

 

 

9.發送數據

 

 

 

 

 

APP程序

1.如果用戶搭建好了MQTT服務器,可以修改下面的參數連接自己的服務器

 

 

 

2.程序主要概況

 

 

 

 

① APUConfig 實現部分
② 操作手機數據庫相關
③ 控制頁面
④ MQTT通信封裝
⑤ UDP通信封裝
⑥ 掃描二維碼相關
⑦ 連接WI-Fi熱點包

 

2.掃碼綁定

APP程序使用的google的二維碼掃碼程序
掃描到二維碼(設備的IMEI號)以后執行以下程序(攜帶着掃碼信息傳給主頁面)

 

 

 

3.主頁面把數據插入數據庫

 

 

 

 

4.點擊相應的設備以后,把設備的IMEI傳遞給控制頁面

 

 

 

 

 

 

 

5.啟動兩個定時器,訂閱主題和查詢設備繼電器狀態

 

 

 

 

 

 

 

 

 

 

3.用戶點擊按鈕,發送繼電器開關指令

 

 

 

4.接收數據

 

 

 

 

 

結語

這一節使用了NB-IOT模組連接自己的MQTT服務器,並實現遠程通信控制.

實際上NB-IOT也屬於GPRS,只不過是面向低速低數據量的場合.

用戶需要注意必須使用專門的NB卡

這節只是大致概括下程序,為已經有基礎的人提供學習思路
如果沒有基礎,請按部就班的接着學習

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM