天天看點

泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

  • 本<泰淩微ble mesh藍牙模組天貓精靈學習之旅>系列部落格學習由非官方人員 半顆心髒 潛心所力所寫,僅僅做個人技術交流分享,不做任何商業用途。如有不對之處,請留言,本人及時更改。

1、小白也癡迷,如何在 Linux環境搭建編譯燒錄 安信可TB02,點亮一盞LED燈;

2、如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!

文章目錄

    • 前言
  • 一、材料準備
  • 二、實作過程
  • 三、藍牙子產品初始化
  • 四、微信小程式程式設計
    • 4.1 搜尋裝置
    • 4.2 連接配接裝置
    • 4.3 擷取服務清單
    • 4.4 擷取服務下的特征清單
    • 4.5 如何接受裝置發來的資料
    • 4.6 如何發送資料到裝置
    • 另外,不要把我的部落格作為學習标準,我的隻是筆記,難有疏忽之處,如果有,請指出來,也歡迎留言哈!
泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

前言

    接着上篇環境搭建,我們這篇玩下如何通過微信小程式藍牙控制TB02開發闆;

    接觸微信硬體生态已經有2年了,微信用戶端如果能夠實作以藍牙控制裝置,無非是從微信公衆号或微信小程式入手,但微信公衆号藍牙控制裝置,那麼裝置必須支援AirSync協定;

    AirSync協定已經很久很久沒有維護了,個人認為官網已經不維護了!如果想要通過微信公衆号藍牙控制裝置,那麼裝置必須支援AirSync協定,而且要經過微信硬體平台認證才可以釋出!而安信可TB02開發闆暫不開放支援AirSync協定!

    微信AirSync協定介紹: https://iot.weixin.qq.com/wiki/new/index.html?page=4-2-1

    而安信可TB02開發闆支援ble 普通連接配接控制,是以,支援低功耗藍牙連接配接和控制,幸運,我就花了半天時間做出來了,并以此分享出來!共勉!!!

    欲要了解更多微信控制硬體,清關注我的微信硬體專題:點我通路。

一、材料準備

    這裡務必聲明一下,硬體對接需要一點成本請自行出資,并不像純軟體就可以搞的!下面推薦的藍牙子產品自行某寶購買哈!本人寫技術文章,不是帶貨寫,而是正真分享出來實作過程,不喜勿噴!

  1. ble藍牙子產品一個,可從淘寶購買!我使用的是安信可TB02子產品開發版-普通版;
  2. 微信小程式開發賬号,自行從微信公衆号注冊!請自行入門小程式哦!
泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

二、實作過程

泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

    這裡不涉及到單片機程式設計,直接用序列槽助手模拟單片機;

  1. 藍牙子產品開啟 從機模式,等待連接配接;
  2. 微信小程式開始搜尋裝置,之後成功連接配接;
  3. 之後讀取裝置服務service清單,再讀取指定服務的特征清單 characters;
  4. 根據硬體廠商指定通訊的特征通道來做資料的收、發和通知特性;

     注意:一個ble藍牙裝置可擁有多個服務和特征,涉及到讀取裝置的服務和特征,都是需要需要裝置廠商指定的!如果未能列出,那麼此特征的權限是 可讀可寫可通知,一般為一個特征擁有此三個權限;如果不是,那需要具體問裝置廠商啦!!

三、藍牙子產品初始化

     如果您的闆子并沒燒錄AT固件,請按照第一篇文章,編譯

example/at

工程,燒錄到闆子即可!

     預設波特率等設定,上電後會有資訊列印,如下圖所示:

泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

     本人不玩AT指令開發,因做微信小程式,是以需了解此裝置的AT指令,如需了解具體的AT指令集,點我:

     下面為大家列下主要指令:

序号 指令 功能
1 AT 測試 AT
2 ATE 開關回顯
3 AT+GMR 查詢固件版本
4 AT+RST 重新開機模組
5 AT+SLEEP 深度睡眠
6 AT+ RESTORE 恢複出廠設定 恢複後将重新開機
7 AT+BAUD 查詢或設定波特率 重新開機後生效
8 AT+NAME 查詢或設定藍牙廣播名稱 重新開機後生效
9 AT+MAC 設定或查詢模組 MAC 位址 重新開機後生效
10 AT+STATE 查詢藍牙連接配接狀态
11 AT+SEND AT 模式下發送資料
12 +DATA AT 模式下收到資料

四、微信小程式程式設計

     微信小程式開發的API文檔還是很齊全的,具體的API使用詳情,請移步!點我進去檢視!

4.1 搜尋裝置

     第一步肯定是搜尋裝置,通過 調用

wx.startBluetoothDevicesDiscovery(Object object)

來發現裝置,入參可以指定 UUID,注意裝置清單的回調是通過

wx.onBluetoothDeviceFound

方法回調。

4.2 連接配接裝置

    上步我們已經拿到了周圍的藍牙裝置清單,那麼如何判斷哪個是我們想要的呢?一般為名字,TB02的廣播名字一般為 Ai-Thinker,于是乎,調用

wx.createBLEConnection()

,入參為搜尋到的裝置的 deviceID,注意這個參數不是唯一的!同一個裝置對于不同手機會有不同而言,對應安卓手機是固定的 藍牙mac位址,而對于IPhone手機又是不一樣的,因為蘋果手機不暴露裝置的mac位址,再外加了一層!

    那麼,我們如果做産品,又是如何适配這種多平台的障礙呢?我有個想法,裝置在廣播時候的資料的 advertisData 字段中加上自定義資料,這樣就可以跨平台搜尋裝置回調時候,通過判斷這個字段是否為我想要搜尋的裝置;

泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

4.3 擷取服務清單

    上面說了,一個裝置可擁有多個服務service,我們在擷取時候,是在已連接配接成功的情況下再擷取哦!

    下面擷取到了服務清單,并通過判斷其 uuid 是否和我們一緻,進而判斷是否Tb01裝置,否則,就是連接配接了其他裝置。

    也許你會問,如何擷取這個uuid是否一緻。參考uuid一般是廠商提供的;

wx.getBLEDeviceServices({
      deviceId: that.data.connectedDeviceId,
      success: function(res) {
        var all_UUID = res.services;
        var index_uuid = -1;
        var UUID_lenght = all_UUID.length;
        /* 周遊服務數組 */
        for (var index = 0; index < UUID_lenght; index++) {
          var ergodic_UUID = all_UUID[index].uuid; //取出服務裡面的UUID
          /* 判斷是否是我們需要的00010203-0405-0607-0809-0A0B0C0D1910*/
          if (ergodic_UUID == '00010203-0405-0607-0809-0A0B0C0D1910') {
            index_uuid = index;
          };
        };
        if (index_uuid == -1) {
          wx.showModal({
            title: '提示',
            content: '非我方出售的裝置',
            showCancel: false,
            success: function(res) {
              that.setData({
                searching: false
              })
            }
          })
        }
           

4.4 擷取服務下的特征清單

    上面已經擷取了服務,那麼我們下一步就是要獲此這個服務下的特征清單;

    同樣道理,也是要擷取到其特征的uuid,在 TB01子產品裡面的這個服務,隻有一個特征好吧。是以隻取元素第一個即可!

    下面程式中的調用

wx.notifyBLECharacteristicValueChange()

方法目的是 主動監聽此通道的數值變化,通俗來說就是:裝置一旦發送資料在此通道,就會立刻收到通知;

wx.getBLEDeviceCharacteristics({
          deviceId: options.connectedDeviceId,
          serviceId: res.services[index_uuid].uuid,
          success: function(res) {
            wx.notifyBLECharacteristicValueChange({
              state: true,
              deviceId: options.connectedDeviceId,
              serviceId: that.data.serviceId,
              characteristicId: that.data.characteristics[0].uuid,
              success: function(res) {
                console.log('啟用notify成功')
              },
              fail(res) {
                console.log(res)
              }
    })
           

4.5 如何接受裝置發來的資料

    上一點已經主動監聽到了某通道的數值變化,這點必須要做的;

    然後,就可以調用下面方法,接收到資料列印出來。注意:接收到的是十六進制格式,還需要轉下!

wx.onBLECharacteristicValueChange(function(res) {
      console.log('接收到資料:' + app.buf2string(res.value))
    })
           

4.6 如何發送資料到裝置

    發送資料時候,必須确定所在的通道是否可寫 write ;發送資料時候,務必轉為buffer,再傳進去;

var buffer = new ArrayBuffer(that.data.inputText.length)
      var dataView = new Uint8Array(buffer)
      for (var i = 0; i < that.data.inputText.length; i++) {
        dataView[i] = that.data.inputText.charCodeAt(i)
      }
      wx.writeBLECharacteristicValue({
        deviceId: that.data.connectedDeviceId,
        serviceId: that.data.serviceId,
        characteristicId: that.data.characteristics[0].uuid,
        value: buffer,
        success: function(res) {
          console.log('發送成功')
        }
      })
           
泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計

       最後貼上源碼連結:GitHub :https://github.com/Ai-Thinker-Open/AiTBxxForWeChat

       有任何疑問聯系本人下方郵箱或加qq群或文章留言,不要私信我,我已經屏蔽私信!多多支援!

另外,不要把我的部落格作為學習标準,我的隻是筆記,難有疏忽之處,如果有,請指出來,也歡迎留言哈!

  • 玩轉

    esp8266

    帶你飛、加群

    QQ

    群,不喜的朋友勿噴勿加:434878850
  • 個人郵箱:[email protected] 24小時線上,有回必回複!
  • esp8266源代碼學習彙總(持續更新,歡迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代碼學習彙總(持續更新,歡迎star):https://github.com/xuhongv/StudyInEsp32
  • 關注下面微信公衆号二維碼,幹貨多多,第一時間推送!
泰淩微ble mesh藍牙模組天貓精靈學習之旅 ② 如何實作 微信小程式藍牙控制 Ble Mesh模組 安信可TB02,全部開源!一、材料準備二、實作過程三、藍牙子產品初始化四、微信小程式程式設計