基於藍牙的定位系統設計方案


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