2-STM32+BC26/260Y基本控制篇-整體運行測試-微信小程序掃碼綁定BC26,並通過MQTT和BC26實現遠程通信控制


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

 

說明

這節測試一下微信小程序掃碼綁定BC26模組然后實現微信小程序和開發板之間通過MQTT進行遠程通信控制.

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

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

先睹為快

小程序的頁面做的簡單些,后面有了好看的UI之后再改下.

 

 

 

測試准備工作

1.請根據硬件使用說明下載這節程序到單片機

 

 

 

2.單片機工程目錄

 

 

3.Hex文件位置

 

 

 

 

4.別忘了安裝好手機卡和天線

 

5.安裝微信小程序(使用開發工具打開以下工程)

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

 

 

 

6.點擊 預覽,使用微信掃碼以后安裝到手機

注:默認連接的我的服務器,mnif.cn,用戶可以在詳情里面選擇不校驗域名(不推薦,可能通信有問題)

 

 

 

也可以在微信小程序平台上設置域名白名單(推薦)

 

 

 

 

 

 

 

注:預覽模式有時間限制,如想長期使用,請發布小程序

 

注: 微信小程序平台上設置域名白名單

 

 

 

 

7.添加設備

 

 

 

8.選擇掃碼添加

 

 

 

9.掃描模組上面的二維碼

注:雙擊下屏幕可以放大攝像頭掃描倍數

 

 

 

 

10.掃描成功以后將會在主頁面添加一個設備

注:顯示的內容為模組的IMEI號

 

 

 

11.點擊顯示的設備,進入設備控制頁面

 

 

 

測試繼電器控制

1.點擊中間的開關控制繼電器

 

 

 

 

 

 

2.動作一下開發板上面的 PB5按鍵,繼電器會翻轉

 

測試溫濕度傳感器

1.正常情況下OLED會顯示當前的溫濕度數據(也可以驗證OLED是否工作正常)

 

2.手機APP也會顯示當前的溫濕度數據

注:可以給溫濕度吹吹氣,改變一下溫濕度.

 

 

測試光敏電阻

注:這個不是真的光照強度!我只是采集了電壓,然后乘了數然后顯示而已!

 

 

 

可以用手蓋住傳感器看下采集的數是否變化.

 

測試RGB

用手拖動,可以看到板子上的燈隨着拖動顏色的變化而變化

 

 

 

測試蜂鳴器和熱釋紅外傳感器

1.在程序一運行,會吸合一下繼電器,同時蜂鳴器也會 滴 一聲.

2.程序上是熱釋紅外傳感器只要被觸發就會聽到蜂鳴器滴一聲.

打開串口日志也可以看到相關的日志

 

 

 

 

 

 

測試485

1.使用USB轉485模塊連接開發板

 

 

 

2.給485所在的串口號發送信息,將會收到同樣的信息

 

 

 

 

測試CAN總線

程序寫了一個回環測試,可以在日志上面看到CAN測試結果

 

 

提示

后面是介紹整個程序,如果是初學者大概看一下就可以.

寫后面的目的是給已經有基礎的了解一下整個程序執行步驟.

便於迅速的實際應用到項目中.

對於初學者按部就班的一節一節的學習就可以.

后面的教程會一步一步的讓用戶知道所有的一切是怎么做到的.

 

程序整體說明

1.首先我說一下微信小程序 的UI頁面下載鏈接

RGB調色UI源碼鏈接

https://segmentfault.com/a/1190000017749965

 

 

2.提示

整個程序就是利用MQTT服務器實現微信小程序和設備之間通信.

設備連接上MQTT以后

訂閱的主題是: user/設備的IMEI  發布的主題: device/設備的IMEI

 

微信小程序掃碼得到設備的IMEI

發布的主題是: user/設備的IMEI  訂閱的主題是: device/設備的IMEI

 

協議規定:

 

 

 

 

3.單片機程序

 

 

 

①:控制模塊連接TCP服務器(MQTT服務器)

②:MQTT消息處理封裝包(緩存管理,支持消息等級0,1,2)

 

4.微信小程序

 

 

① 添加設備頁面
② 控制頁面
③ paho-mqtt.js 官方底層包  mqtt.js本人再次封裝的mqtt包

 

 

單片機程序詳細說明

為保證程序的執行效率和穩定性,單片機程序使用了環形隊列,緩存管理.

AT指令非阻塞模式配置模組,Flash提高使用壽命等方案.

請用戶先學習完本人開源的 數據處理思想和程序架構里面的以下內容

 

 

 

 

1.關於串口1

串口1作為日志打印,發送數據采用中斷+環形隊列,

在串口2和串口3發送和接收數據的地方把相應數據發給串口1打印出來.

 

 

 

 

 

 

 

 

 

 

2.注冊MQTT相關函數

 

 

 

 

3.控制模組連接MQTT服務器

 

 

 

 

 

 

提示:先前獲取的IMEI就存儲在 MQTTid這個數組里面.

所以下面組合的發布主題為:device/設備的IMEI

 

 

 

 

4.連接成功調用注冊的連接回調函數(在回調函數里面發送訂閱主題的協議)

 

 

 

提示:先前獲取的IMEI就存儲在 MQTTid這個數組里面.

所以下面組合的訂閱主題為:user/設備的IMEI

 

 

 

 

5.在注冊的接收回調函數中處理接收的消息

 

 

 

 

6.發布消息

在接收回調函數里面返回繼電器消息

 

 

 

每隔一段時間上報溫濕度,光照強度消息

 

 

 

如果繼電器狀態改變,上報繼電器狀態

 

 

7.細節說明-關於串口2接收數據的配置

串口2判斷空閑使用的定時器,原因是GSM串口發送的數據並不是那么的標准,中間有斷斷續續的情況.

用自帶的空閑中斷檢測會把一條數據判斷成多條存儲在緩存中.所以用定時器加長了空閑時間判斷.

 

 

 

 

 

 

8.細節說明-串口2接收的數據送給配置函數和MQTT處理函數

注:如果已經建立了TCP通信,找到真實數據的位置,把真實數據送給配置函數或MQTT處理函數

 

 

 

 

9.細節說明-MQTT連接成功以后的發送的各種數據的地方

注:MQTT我使用了緩存管理封裝了下,所有的數據都存儲在了緩存里面

后期移植使用的時候只需要把發送TCP數據改一下就可以,后面章節有相應的移植教程.

 

 

 

 

 

 

 

10.細節說明-RGB控制的參數會實時記錄在Flash里面

注:每次啟動會直接顯示以前的燈的狀態,為提高Flash使用壽命,存儲方式采用我封裝的 flash_helper.

當然也可以不用實時刷新存儲,也可以把 FlashHelperUpdate(); 放到掉電中斷和跌機中斷里面執行.

 

 

 

 

 

微信小程序程序詳細說明

1.mqtt.js 是封裝的MQTT相關的函數

 

 

 

2.點擊添加設備

 

 

 

3.點擊掃碼綁定,並把掃描的二維碼信息傳遞到主頁

 

 

 

4.BC26的二維碼信息是  IMEI號;SN碼  需要只提取IMEI 然后存儲到數據庫,並更新

 

 

 

5.點擊某一個設備,攜帶着這個設備的IMEI號跳轉到控制頁面

 

 

 

6.控制頁面獲取數據

 

 

 

 

7.訂閱主題,和輪訓查詢設備數據

 

 

 

 

 

 

 

 

 

 

 

8.接收處理消息

 

 

 

 

 

 

 

9.發布消息

 

 

 

 

 

其它

 

 

當前只用到了紅色的RGB自定義組件 

circle_progress 暫時沒有用,因為存在問題

藍色是使用 npm安裝的lin-ui,也沒有使用.

 

結語

對於初學者,感受一下遠程通信就可以.在后面的章節中將會詳細的學習到是怎么做到的.

 

 


免責聲明!

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



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