开源一个基于微信小程序的蓝牙室内定位软件(附下载链接)

1. 运行环境要求

软件运行环境:微信开发者工具V1.02.1902010(基础库2.2.3以上),微信云开发控制台;

硬件运行环境:NRF51822(两个以上),一部支持蓝牙4.0的手机;

2. 软件功能及程序说明

2.1 软件组成

本软件包括一共由五部分构成:

  1. images,主要存放小程序中用到的各种图片;
  2. cloudfunctions,主要作用是存储云函数的信息云函数,云函数的上传;
  3. pages,pages中包含两个子项,第一个子项是collection,这部分功能是在离线阶段扫描并采集室内某个点的蓝牙信标的各种信息并且上传到云数据库;第二个子项是position,这部分的主要功能是在线阶段扫描当前所处位置的蓝牙信标信息并且与云数据库中的信息进行比较,计算当前所处位置的坐标并显示在屏幕上;
  4. utils,这部分的主要功能是将离线阶段将采集到的RSSI,UUID等通过计算转换为百分比表示;
  5. app,这部分的主要功能是配置各种提示信息,窗口颜色。

文件大纲

软件平台基于微信开发者工具V1.02.1902010(基础库版本2.2.3以上)和微信云开发控制台开发,本软件在离线阶段采集室内各个坐标点的蓝牙信标信息并上传到云数据库,在线匹配阶段实时获取行人所处位置周围的蓝牙信息并且与云数据库中存储的蓝牙信标信息进行比对,应用WKNN算法解算出行人所处的坐标,并显示在屏幕上。

本软件的结构总框图如下:

总体流程图

WKNN算法流程图:

算法流程图

版权声明:本文为CSDN博主「嵌入式与Linux那些事」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16933601/article/details/117755574

2.2 主要功能

基于微信小程序的蓝牙室内定位软件主要功能包括:

  1. 可以检测一定区域内的蓝牙信标,并且可以显示周围蓝牙的信号强度,蓝牙信标的数量以及UUID等信息。

  2. 可以采集室内某一个点的蓝牙信息并上传到云数据库。

  3. 可以根据需要设置采集蓝牙信标信息的数量。

  4. 可以根据接收到的蓝牙信号强度应用WKNN算法解算出行人在室内的坐标并在地图上显示出来。

2.3 文件及函数功能说明

基于微信小程序的蓝牙室内定位软件V1.0的各文件及函数功能说明如下。

  1. Images

本文件夹下主要是存放室内地图,定位坐标,后台采集三种图标,用于程序的其他部分调用。

  1. Cloudfunctions

本文件夹下存放的主要是用于配置云数据库的index.js和package.json。index.js的主要作用是配置云函数入口文件以及入口函数。package.json的主要作用是存放了云函数的名字,版本号以及详细的描述信息。

  1. Pages

本文件夹下存放主要存放了两个子项,collection和position。

(1)collection中主要有三个文件,collection.js,collection.json,

collection.wxml,collection,wxss。

Collection.js的主要作用离线阶段采集室内的各个点的信息。当用户进入页面时,加载页面的显示信息。当用户输入采集点的坐标以及采集数量时,将这些数值缓存下来。当用户点击“开始扫描”按钮之后,执行startBluetoothDeviceDiscovery函数,开始扫描 wx.startBluetoothDevicesDiscovery中符合services要求的蓝牙信标,当扫描完成时,将其UUID,RSSI,数量等信息显示在屏幕上,并且将扫描到的UUID,RSSI等信息存入数组,当采集的信息达到用户要求的采集数量时会自动停下,并在屏幕上提示用户采集完成。当用户点击“提交数据”按钮时,将采集到的UUID,RSSI等信息先转换未JSON格式,再传入数据库中存储起来。当用户点击“停止扫描”,扫描会提前停下,等待下一步的指令。

collection.json主要作用是显示页面的名称“信息采集”。

collection.wxml主要作用是配置界面显示的“开始扫描”,“停止扫描”,”提交数据”,“信号强度”等文字信息的样式,类型等,并且为他们绑定点击事件,绑定数据等。

Collection.wxss的主要作用是配置界面显示的文字信息,图标信息的位置,大小,颜色等。

(2)position中主要有三个文件,position.js,position.json,

position.wxml,position,wxss。

position.js的主要作用是完成坐标的解算。当用户点击定位按钮时,程序开始执行startBluetoothDeviceDiscovery函数,开始扫描 wx.startBluetoothDevicesDiscovery中符合services要求的蓝牙信标。每扫描到一个符合条件的蓝牙信标,就会将UUID,RSSI等信息存进数组当中,与此同时,将其与云数据库中的所有信息进行比对,找出与其信标排序相同的点的坐标,并下载到本地存进数组当中。然后应用WKNN算法解算其最终的坐标并显示在屏幕上。当用户退出本界面之后,扫描会自动停止。

collection.json主要作用是显示页面的名称“蓝牙定位”。

collection.wxml主要作用是配置界面显示的室内地图,定位图标,后台采集图标的样式,类型等,并且为他们绑定点击事件,绑定数据等。

Collection.wxss的主要作用是配置界面显示的文字信息,图标信息的位置,大小,颜色等。

  1. utils

本文件夹中包含一个文件utils,其主要作用是将要显示在界面上的RSSI,转换为百分比形式。

  1. App

本文件夹下包括三个文件,app.js,app.json.

app.js的主要作用是获取用户使用手机的系统,微信的版本等信息,用户的微信版本低于最新版本两个版本的时候不能进入定位页面和采集页面,并提示用户更新微信到最新版本。

app.json的主要作用是配置全局界面的显示形式。当在collection和position界面不配置页面显示的背景颜色,导航栏文字大小,颜色等的时候,默认使用app.json中使用的配置信息。

版权声明:本文为CSDN博主「嵌入式与Linux那些事」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16933601/article/details/117755574

3. 软件设计及操作说明

软件运行及操作说明如下:

步骤1:打开微信开发者工具V1.02.1902010,首先要用微信扫一扫登陆,如图3所示。

图3 登录界面

步骤2:登录之后,在左边选择小程序,如图4红框所示。

图4 登录界面

步骤3:选择导入项目,如图5红框所示,将已有的项目导入进去。项目名称自拟,AppID项目本身自带。

图5 登录界面

步骤4:打开后主界面如图6所示。

图6 主界面

步骤5:点击右侧红框所示的详情

图7 详情

步骤6:详情界面配置如图8红框所示

图8 详情配置

版权声明:本文为CSDN博主「嵌入式与Linux那些事」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16933601/article/details/117755574

步骤7:配置好之后点击编译按钮,如图9红框所示

图9 编译程序

步骤8:编译完成之后,点击真机调试,如图10红框所示,打开手机蓝牙,用微信扫一扫图中二维码。

图10 真机调试

步骤9:进入后如图11所示,点击右下角小手图标进入采集页面。

图11 首页显示

步骤10:设置采样点的坐标信息,采集数量,设置完成后点击开始扫描按钮。

图12 采集页面

步骤11:正在扫描界面

图13 正在扫描

版权声明:本文为CSDN博主「嵌入式与Linux那些事」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16933601/article/details/117755574

步骤12:大约5s左右,采集完成,如图14所示

图14 采集完成

步骤13:点击提交数据按钮,将采集的数据提交到数据库。采集室内各个采样点的信息,直到采集完室内所有的采样点。

图15 提交数据

步骤14:采集完成后,点击左上角后退按钮进入定位界面,如图16所示

图16 提交数据

步骤15:点击右下角第一个定位按钮,则开始定位,如图17所示。

图17 开始定位

步骤16:定位显示如图18所示

图18 定位显示

4. 完整版代码获取

链接:https://pan.baidu.com/s/1gFzx8h3X3msVGdQGLIgMUQ
提取码:8v33
复制这段内容后打开百度网盘手机App,操作更方便哦

  • 24
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式与Linux那些事

您的鼓励将使我写出更好的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值