基于蓝牙的定位系统设计方案


1.背景

  本工程实践项目是一个基于蓝牙的定位APP,总共分为两个阶段。第一阶段以收集数据为主,通过手机收集当前位置蓝牙信标的RSSI和GPS数据,上传给服务器以训练模型;第二阶段,通过当前位置所接收到的蓝牙信标数据输入机器学习模型获得当前的位置信息。最后可以通过APP绘制用户路径或提供一定范围内的导航服务。

2.软件设计方案

2.1系统架构

  本项目主要采用MVC架构。MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。MVC是一种模式,确切的说它不是一种设计模式,它是多种设计模式的组合,并不仅仅只是一个单独的一个模式。

    View层,单独实现了组合模式

    Model层和View层,实现了观察者模式

    View层和Controller层,实现了策咯模式

2.2接口API

接口说明 添加蓝牙信标设备
接口地址 /device/add
请求方式 post
请求参数 GPS,设备MAC地址,设备名称
响应数据 200成功 400失败
备注  

 

 

 

 

 

 

 

接口说明 登录
接口地址 /user/login
请求方式 post
请求参数 用户名,密码
响应数据 200成功 400失败
备注  

 

 

 

 

 

 

 

 

接口说明 上传蓝牙信标数据
接口地址 /data/update
请求方式 post
请求参数 GPS,设备MAC地址,时间戳,用户Id,RSSI
响应数据 200成功 400失败
备注  

 

 

 

 

 

 

 

 

接口说明 请求定位
接口地址 /location
请求方式 post
请求参数 蓝牙信标RSSI
响应数据 200成功 当前GPS信息 400失败
备注  

 

 

 

 

 

 

 

 

2.3系统视图

2.3.1分解视图

 

 

 

2.3.2依赖视图

  依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。依赖视图在项目计划中有比较典型的应用。比如它能帮助我们找到没有依赖关系的软件模块或子系统,以便独立开发和测试,同时进一步根据依赖关系确定开发和测试软件模块的先后次序。依赖视图在项目的变更和维护中也很有价值,比如它能有效帮助我们理清一个软件模块的变更对其他软件模块带来影响范围。

  依赖是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。在代码上主要表现为局部变量、方法的参数或者对静态方法的调用。

  

 

2.3.3执行视图

   执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。

                 

 

 

2.3.4部署视图

  部署图描述了一个系统运行时的硬件节点,在这些节点上运行的软件构件将在何处物理运行以及它们将如何彼此通信的静态视图。部署图包括两种基本模型元素:节点和节点间的连接。每个模型中,仅包含一个部署图。

下面是本项目的大致的部署视图:

 

 

 

2.3.5实现视图

 

3.数据库设计

用户表
字段名 类型 注释
user_id int 唯一标识
user_name string  用户名称
user_passwd string 用户密码
user_nickname string 用户昵称

 

 

  

  

 

 

 

信标设备表
字段名 类型 注释
uuid string 设备标识
mac string 信标设备mac地址
name string 设备名称
pt_power int 设备发射功率
flags int 设备模式
device_type int 设备类型
adevrtising_type int 广播类型
rssi int  信号强度
time_interval int 广播发送间隔

 

 

 

 

 

 

 

 

 

 

 

 

 

定位数据表
字段名 类型 注释
provider string 数据提供者
timestramp timestramp 获取定位的时间
accuracy int 获得的数据精度
longitude double 当前位置经度
latitude double 当前位置纬度
altitude double 当前位置海拔
speed double 速度

 

 

 

 

 

 

 

 

 

 

 

信号强度数据表
字段名 类型 注释
mac string 数据发送者mac地址
timestramp timestramp 收集数据的时间
rssi int 信号强度
rssi_1m int rssi@1md的信号强度
uuid string 数据发送者的uuid
group int 数据所在组别

 

 

 

 

 

 

 

 

 

 

4.运行环境与技术选型

  开发语言:Java、Python

  客户端:Android

  后端框架:SpringBoot

  第三方库:OkHttpUtils、EventBus

  开发工具:Intellij IDEA+Android Studio

  数据库:MySQL

  数据库缓存:Redis

  运行环境:Linux平台+Docker容器

5.概念原型的核心工作机制  

  概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论,是一种虚拟的、理想化的软件产品形式,其大致等于用例 + 数据模型。

本系统的概念原型工作机制大致如下:

  用户打开软件,可以通过采集数据的选项,打开蓝牙,网络,与位置信息,通过在一定范围内活动,来收集空间中所获得的信标设备所发出来的信号强度和mac地址,接着将数据保存到数据库中,并且上传到服务器,供机器学习模型训练。用户可以通过请求gps信息返回当前所在经度和纬度。当收集数据到达一定量后,即模型被建立后,用户可以直接使用软件的定位模型,将收集到的信号强度数据送入模型,得到在当前一片范围内自身所在的位置,并返回地图信息。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM