<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,也沒有使用.
結語
對於初學者,感受一下遠程通信就可以.在后面的章節中將會詳細的學習到是怎么做到的.