文章目录

  • 1. 运行环境要求
  • 2. 软件功能及程序说明
    • 2.1 软件组成
    • 2.2 主要功能
    • 2.3 文件及函数功能说明
  • 3. 软件设计及操作说明
  • 4. 完整版代码获取

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所示。

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

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

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

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

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

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

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

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

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

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

步骤11:正在扫描界面

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

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

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

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

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

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

4. 完整版代码获取

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

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

  1. 如何做一个基于微信小程序的打卡签到

    要做一个基于微信小程序的打卡签到系统,可以按照以下步骤进行: 创建小程序:在微信公众平台上注册小程序账号,创建一个新的小程序. 设计打卡签到功能:根据需求,设计打卡签到的功能模块,包括签到按钮.签到时 ...

  2. “微天气” - 一个基于微信小程序的智能天气预报体验

    "微天气" - 一个基于微信小程序的智能天气预报体验 一.引言 微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生 ...

  3. 【毕业设计_课程设计】基于微信小程序端的视频社交软件+后台管理系统(源码+论文)

    文章目录 0 项目说明 1 项目说明 2 开发环境 3 系统功能 3.1 微信小程序端 3.2 后台管理系统 4 界面展示 5 论文概览 6 项目工程 0 项目说明 基于微信小程序端的视频社交软件 + ...

  4. springboot基于微信小程序的校园外卖系统 毕业设计-附源码091024

    Springboot基于微信小程序的校园外卖系统 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电话订 ...

  5. 如何开发一个基于微信小程序的商城

    随着微信小程序的火爆,越来越多的公司都会开发自己的小程序平台,而打造一个小程序电商平台也是很多公司常见的需求. 本场 Chat 作者将讲解基于 Wepy 的微信小程序框架如何开发一个微信小程序商城项目 ...

  6. 基于微信小程序的多功能记事本软件开发 报告+前后台(java)项目源码+数据库

    摘 要 随着人们生活越来越被科技方便化,人们已经不能接受自己做笔记或者记录生活变得慢速或者繁琐,手机市场的发展让人们越来越习惯用手机来办公或者娱乐,人们的生活和手机的关系越来越紧密,对手机的需求迅速增 ...

  7. SSM基于微信小程序的外卖点餐系统 毕业设计-附源码2711704

    基于微信小程序的外卖点餐系统的设计与实现 摘要 立足于当下餐饮行业现有的点餐模式,分析传统APP点餐的运作流程,结合微信小程序的特点设计新型的外卖点餐系统.近几年,人们生活水平日益提升,但工作强度和压 ...

  8. 基于微信小程序的在线免费小说阅读系统

    项目介绍: 本系统是我的毕业设计,大概耗时一个月完成,后台部分因为某些原因就不放出来了,前端没有用什么框架比较好理解,本着开源精神发布出来.希望能帮助需要的人吧. 一.简介         本程序采用 ...

  9. 【计算机毕业设计】Java基于微信小程序的数学学习辅导系统(源码+论文)

    一.课题概述 随着社会对教育重视程度的不断提高,各种课外辅导班也纷纷兴起.学生接受课外辅导有了很多的方式,比如说,社会辅导机构辅导.家教辅导.网校辅导以及家长辅导.对于辅导机构和家教辅导,辅导效率相对 ...

最新文章

  1. Datawahle文化衫来了!
  2. 7年前去搞数据科学、放弃天文学,现在我后悔了
  3. 知乎高赞回答:走上科研之路,需要培养什么能力?怎样培养这些能力?
  4. matlab python比较_MATLAB与Python的比较
  5. moss2010 sharepoint 2010配置人员搜索
  6. PhotoShop的神奇(重新发表)
  7. git分支拉项目_Git 拉取 GitLab 分支上的项目
  8. 【实例分割论文】SOLOv2: Dynamic, Faster and Stronger
  9. IP库GeoLite2-City.mmdb的使用
  10. 十大机器学习算法(一)
  11. 如何快速部署企业私有云存储
  12. Value of type java.lang.String cannot be conver...
  13. python 编程题 有n个整数、使其前面各数_有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数。...
  14. mysql 免安装版 启动_Windows下配置启动免安装版本mysql
  15. .git文件夹过大,给它瘦身
  16. 177本名著浓缩成了 177句话 、
  17. CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
  18. 怎样给手机网站添加支付接口
  19. 外卖骑手的困局,算法不背这个锅 | Alfred数据室
  20. 祖母与猫 - 推荐图片组

热门文章

  1. 游戏推荐,游戏荒的快来挖宝
  2. 广州徳恒信息技术有限公司——软件实施工程师
  3. 试试以下的瘦腰运动减肥吧,根据不同粗腰类型,减去腰部赘肉,让你也做一回小腰...
  4. ros(Melodic)记录
  5. ZT:0是不是自然数
  6. 微信订单管理小程序开发制作
  7. Android https抓包指南
  8. 均值递推和方差递推公式
  9. IoT 技术演进:揭秘无源零功耗物联网通信技术原理和总体架构
  10. 阿里平头哥芯片设计实习一面