鄭 杰 ,李 冉
(荊楚理工學院,湖北 荊門 448000)
智慧導覽是基于物聯網、云計算、移動互聯網等技術,提供具有一定智慧化決策的導覽系統或設備,通過音頻、視頻、圖片和文字等多種呈現方式,幫助用戶實時獲取相應區域的導覽服務[1]。智慧導覽除了被廣泛地應用于博物館、博覽會場館以外,近年來也逐漸被應用于景區導覽、校園導覽、園區導覽,如南京青龍綠帶二期的智慧園區導覽[2]、泉州經貿職業技術學院基于微信小程序和GPS定位的校園導覽[3]等。
荊門園博園是湖北省第三屆園林博覽會的承辦地,面積達2 094畝,分為園林生活區、靈秀荊楚區南北兩大片區,5大主題展館展廳呈現荊楚文化魅力,32個特色展園分散在園區的不同位置。在園區內構建智慧導覽系統,為廣大游客提供個性化的旅游導覽和景點自動講解服務,對提升園博園的服務水平和游客體驗度具有十分重要的意義。
本研究以荊門園博園景區為背景,深入研究藍牙信標和微信小程序技術,設計并實現了荊門園博園藍牙導覽系統,助力荊門園博園游園智慧化水平的提升。
在荊門園博園藍牙導覽系統中,為園區內每個展園或景點安裝低功耗藍牙信標,每個信標具有唯一的ID,并且連續廣播。游客進入園區,打開微信小程序,在游玩的過程中接近某一展園,即可收到藍牙信號,從而自動播放該展園的音視頻和圖文等多媒體內容,多維度地幫助游客體驗園林藝術的精華。導覽系統包含藍牙信標、游客游覽微信小程序、后臺管理端、數據庫四大部分,系統體系結構如圖1所示。

圖1 系統體系結構
藍牙信標iBeacon是一款基于低功耗藍牙BLE廣播協議的硬件設備,兼容iBeacon協議或者Eddystone。BLE設備通常安裝在某個特定位置,作為固定位置的基準點,向周圍連續廣播,不需要和任何主機設備進行連接,只需要主機設備掃描解析廣播數據即可。藍牙信標功耗低、待機時間長、不需要外部供電,具有安裝方便、成本較低、兼容適配性高的優點。當用戶接近藍牙信標就會收到廣播信息,正好適用于園博園多個松散布局的展園。本導覽系統采用了E5定位型iBeacon藍牙信標,可根據展園的大小設置功率,最大感應范圍為150 m。每個藍牙信標具有唯一的ID,并連續對外廣播ID數據。藍牙信標能起到位置標識的作用,當游客打開藍牙并啟動微信小程序,即可接收藍牙廣播,解析ID,通過移動互聯網向服務器查詢該展園的多媒體信息。
本導覽系統中,通過微信小程序的uni-app組件解析藍牙廣播數據。uni-app是一個使用Vue.js開發所有前端應用的框架,開發者編寫一套代碼,可發布到iOS、Android、Web(響應式)以及各種小程序、快應用等[4]。uni-app框架中存在豐富的對低耗藍牙設備進行監聽、數據讀取的API,可實現對iBeacon硬件信息的獲取,相關API的詳細信息如表1所示。

表1 低功耗藍牙設備操作API摘要
藍牙信標的廣播標識數據結構如圖2所示,標識數據每個字段的含義如表2所示。

圖2 廣播標識數據示例

表2 標識數據的字段說明
微信小程序是小程序的一種,英文名為Wechat Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種全新的連接用戶與服務的方式,它可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。微信小程序提供了一個簡單、高效的應用開發框架和豐富的組件及API,幫助開發者在微信中開發具有原生App體驗的服務。整個框架系統分為兩部分:邏輯層(App Service)和視圖層(View)。它提供了自己的視圖層描述語言WXML和WXSS以及基于JavaScript的邏輯層框架,并在視圖層與邏輯層之間提供了數據傳輸和事件系統,讓開發者能夠專注于數據與邏輯[5]。
結合荊門園博園景點的特點和智慧導覽的需求,在園區內32個展園固定位置上安裝藍牙信標,游客進入園區后,掃一掃二維碼,打開微信小程序,即可開啟智慧導覽。荊門園博園藍牙導覽系統包括兩大部分:微信小程序導覽端和服務端,總體功能規劃如圖3所示。

圖3 系統功能規劃圖
園博園藍牙導覽微信小程序只是一個客戶端,在圖3規劃的功能點中,三個重要的模塊詳細功能描述如下。1)園博園地圖導覽模塊,在園博園的手繪地圖中,通過編程標注每個展園的位置,初始狀態為灰色,表明未游覽;當游客游覽后,該展園的標識變為紅色,表明已經游覽,給游客一個清晰的游覽狀況展示。2)藍牙信標監聽模塊,它采用uni-app中的API時刻監聽藍牙信標,接收廣播標識數據,解析信標ID,然后向服務器查詢該展園的多媒體內容,最后調用展園多媒體播放頁面進行播放。3)展園多媒體播放模塊,主要用于播放當前展園的圖文和音視頻內容,自動實現多維度的展園內容呈現。
服務端是荊門園博園藍牙導覽系統的核心,承擔著小程序客戶端的數據服務、基礎數據管理、系統設置、數據統計等功能。服務端主要功能模塊的詳細描述如表3所示。

表3 服務端主要功能描述
根據導覽系統功能模塊的規劃,所涉及的主要數據實體有五個,它們所對應的數據庫表分別是:展園數據表(exhibitstype)、信標表(exhibits)、小程序授權表(prefixthird)、評論數據表(collection)、用戶表(user),這些表的字段定義和對應的實體關聯關系如圖4所示。

圖4 E-R圖
Nest(NestJS)是一個用于構建高效、可擴展的Node.js服務器端應用程序的開發框架。它利用JavaScript的漸進增強的能力,使用并完全支持TypeScript(仍然允許開發者使用純JavaScript進行開發),并結合了面向對象編程OOP、函數式編程FP和函數響應式編程FRP。在底層,Nest構建在強大的HTTP 服務器框架上,如Express,并且還可以通過配置使用Fastify[6]。Nest在這些常見的Node.js框架之上提高了一個抽象級別,但仍然向開發者直接暴露了底層框架的API。這使得開發者可以自由地使用底層平臺的無數第三方模塊[7]。
導覽微信小程序基于uni-app組件進行開發,開發模式為Vue的Template模板模式,開發完成后打包成微信小程序。在藍牙信標監聽模塊中使用uni.startBeaconDiscover()搜索附近的iBeacon信標設備,根據搜索到的藍牙信標的rssi值進行升序排序,獲取此藍牙信標的ID值,然后通過http請求,向服務端請求與之相匹配的展園多媒體數據,最后調用展園多媒體頁面進行播放[8-9]。微信小程序主要頁面如圖5所示。

圖5 微信小程序主要頁面
服務端的管理模塊主要使用Vue2+Element UI組件開發。頁面局部通信采用Axios插件,很好地兼容了不同的瀏覽器和屏幕的大小。服務端其他模塊主要使用Node.js的Express框架。數據庫采用了關系型數據庫mySql 5.7,進行數據的長久化保存,根據移動端和管理端輸入的參數,實現對數據庫相關數據的查詢,并進行數據返回[10]。數據管理端的展園列表的管理頁面如圖6所示。

圖6 展園列表管理頁面
本研究設計并實現了基于微信小程序的荊門園博園藍牙導覽系統,旨在將景區的信息化服務向移動互聯網進行延伸,適應新時代游覽、生活的需要,提高園博園智慧游覽的體驗度。目前,該系統已經進行了局部測試,并進行了完善和調優,下一步將聯系荊門園博園管理處,進行系統部署、試運行。課題組將不斷地努力改進系統,也希望更多的研究人員、企業能參與進來,助力文旅智慧化發展,助推鄉村振興。