微信小程序通过低功耗蓝牙设备进行定位及测距(二)

定位及测距的原理
微信小程序搜索附近蓝牙设备,通过指定蓝牙名称获取信号轻度rssi,再通过信号强度转化为距离,进而实现定位和测距。(具体实现看代码)
信号响度转距离的公式
微信小程序通过低功耗蓝牙设备进行定位及测距(二)_第1张图片
代码实现

var pointBRSSi = res.devices[i].RSSI;
var iRssi = Math.abs(pointBRSSi);  
var power = (iRssi-55)/(10*2.0);  
var pointBDistance = Math.pow(10, power);

微信小程序定位及测距
js


//搜索附近蓝牙设备 同时找到hc-09rssi  转换为距离
toClock1: function () { 
  var that = this;
  //console.log(that.data.timer)
//蓝牙初始化
  wx.openBluetoothAdapter({
    success: function (res) {
      console.log("初始化蓝牙适配器");
      /*getBluetoothAdapterState() 获取本机蓝牙适配器状态,判断是否可用,available为false则因为用户没有开启系统蓝牙*/
      wx.getBluetoothAdapterState({
        success:function (res) {
          //打印相关信息
          console.log(JSON.stringify(res.errMsg) + "\n蓝牙是否可用:" + res.available);
          //适配器可用
          if(res.available){
            
              //clearTimeout(timer);
            //搜索蓝牙设备
            wx.startBluetoothDevicesDiscovery({
              services: [],
              allowDuplicatesKey: false,
              success: function (res) {
                //获取蓝牙设备输出信息列表
                wx.getBluetoothDevices({
                  success: function (res) {
                    console.log('搜设备数目:' + res.devices.length)
                    console.log('设备信息:\n' + JSON.stringify(res.devices)+"\n")
                    for (var i = 0; i < res.devices.length; i++) {
                      //console.log("第"+(i+1) + "个RSSI:" + res.devices[i].RSSI+"\n")
                      if(res.devices[i].name==="HC-09"){
                        var rssi=res.devices[i].RSSI
                       // var pointBRSSi = res.devices[i].RSSI;
                        var iRssi = Math.abs(rssi);  
                        var power = (iRssi-55)/(10*2.0);  
                        var pointBDistance = Math.pow(10, power);
                        console.log("hc-o9离手机的距离是:"+pointBDistance)
                        that.setData({
                          dis:pointBDistance
                        })
                        //大于5米  震动
                        if(pointBDistance>5){
                          wx.vibrateLong();
                        }
                      }
                    }
                  }
                })
              },
              fail: function (err) {
                console.log(err);
                wx.showModal({
                  title: '温馨提示',
                  content: '搜索蓝牙失败'
                })
              }
            });
        
          }else{
            wx.showModal({
              title: '温馨提示',
              content: '蓝牙设备不可用'
            })
          }
        
        },
        fail: function (res) {
          //打印相关信息
          console.log(JSON.stringify(res.errMsg) + "\n蓝牙是否可用:" + res.available);
          wx.showModal({
            title: '温馨提示',
            content: '蓝牙设备不可用'
          })
        }
      })
    
    },
    fail: function (err) {
      console.log(err);
      wx.showToast({
        title: '蓝牙初始化失败',
        icon: 'fail',
        duration: 2000
      })
       //搜索超时   停止扫描设备
    setTimeout(function () {
      var that = this;
      wx.stopBluetoothDevicesDiscovery({
        success: function (res) {
          console.log("停止搜索" + JSON.stringify(res.errMsg));
        }
      })
      }, 4000); 
    }
  });
 // },10000)
},

关于微信小程序进行蓝牙初始化、搜索附近蓝牙设备及连接指定蓝牙可以参考学习下面的文章:
https://blog.csdn.net/baidu_38978508/article/details/123439507?spm=1001.2014.3001.5502
更多关于微信小程序知识及javaweb开发知识关注下面公众号可获取更多源码:
小白XBIT
(可获取连接案列和源代码)

你可能感兴趣的:(物联网,微信小程序,微信小程序,小程序)