王孜 俞曉鋒 趙玉美 王效靈
摘 要:基于數字中國的物聯網概念,文中設計了基于安卓平臺的智能停車系統。為緩解大中城市停車難的問題,依托全向輪技術設計了一種全新的采用紅外測距傳感器避障的全向移動機器人。基于Bmob云構建了安卓平臺,實現了傳感器到管理端的藍牙數據無線傳輸以及通過用戶手機終端遠程與管理端進行信息交互。本系統的用戶可在手機APP上隨時搜索附近的停車場;發送命令遠程調配機器人停車;在手機APP上在線繳費。該系統結合全向移動機器人和安卓平臺,通過手機滿足用戶快速停車的需求,實現了停車系統的智能化、互聯網化。
關鍵詞:物聯網;安卓平臺;全向輪;Bmob云;智能停車
中圖分類號:TP319 文獻標識碼:A 文章編號:2095-1302(2018)08-00-04
0 引 言
隨著家庭車輛擁有量的快速上漲,“停車難”已經成為很多城市的通病,困擾著人們的出行。當前階段,城市中大多數停車場均為傳統模式,車主需要刷卡進出場、自行倒車入位,取車時需要走到停車處,找到自己的車輛后再將車子駛出車庫。而停車更是一件對駕駛人員停車技術、安全意識要求較高的事情。同時考慮到車輛雙向通行的現狀,對停車場空間要求也較高。可以看出,傳統停車模式占地空間大、效率低,已遠遠不能滿足大中型城市中人們的停車需求[1]。
本項目針對傳統停車模式的缺點,結合最新的物聯網概念,開發了基于安卓平臺的用戶端APP、管理端APP,研發并封裝了全向移動機器人,這三者通過藍牙、Bmob云結合,成為一個完整的停車系統,使得用戶操作流程更加人性化、管理者故障檢測更加輕松、管理者系統調配更加合理。
1 設計方案
基于安卓平臺的智能停車系統包括全向移動機器人、安卓平臺APP、Bmob云服務器、停車臺四個主體部分,其組成如圖1所示。
(1)全向移動機器人的組成包括鋰電池、直流電機、全向輪、Arduino主控板、紅外測距傳感器、藍牙通信模塊、L298N電機驅動模塊、M0300舵機、升降平臺;
(2)安卓平臺APP包括管理端APP、用戶端APP。
基于安卓平臺的智能停車系統的總體結構如圖2所示。
系統主要實現如下功能:
(1)自動避障:通過紅外測距傳感器檢測數據,并通過Arduino板、藍牙通信模塊傳送至管理端,當距離小于設定的安全距離時,機器人停止運動,實現自動避障。
(2)控制全向移動機器人:管理端根據用戶的停車需求,將管理端APP與機器人的藍牙連接,操作APP控制4個全向輪的運動及升降平臺的抬升和下降。
(3)智能停取車:用戶通過用戶端APP發送“開始停車”命令,通過Bmob云服務器將該命令傳輸至管理端,使其迅速調配、控制機器人停車;取車時,發送“結束停車”命令通知管理端控制全向移動機器人取車。
(4)找停車場:用戶可以使用手機APP的“找停車場”按
鍵,開啟內置的百度地圖功能,迅速找到附近停車場。
(5)線上繳費:采用計時器記錄停車時間,再通過換算轉化為停車費用展示給用戶,實現在線快速繳費。
2 系統各部分工作原理
2.1 全向移動機器人
全向移動機器人的組成包括全向輪、Arduino主控板、紅外測距傳感器、藍牙通信模塊等部件。紅外測距傳感器將檢測到的距離信息傳輸給主控板。主控板一方面將數據通過藍牙模塊發送到管理端,另一方面通過L298N電機驅動模塊控制全向輪運動。
2.1.1 紅外測距傳感器
紅外測距傳感器為三線制,其主要功能為距離檢測。紅外測距傳感器體積小,響應時間短,功耗較低,在無反光板和反射率低的情況下能測量較遠的距離,其很高的頻率響應適合惡劣的工業環境,可實時測量距離。
其輸出電壓與實際距離的關系表達式經過測算、擬合如下:
2.1.2 Arduino主控板
Arduino是一款便捷靈活、方便上手的開源電子原型平臺。本系統采用的Arduino主控板以ATmega328 MCU控制器為基礎,具備14路數字輸入/輸出引腳(其中6路可用于PWM輸出)、6路模擬輸入、1個16 MHz的陶瓷諧振器、1個USB接口、
1個電源插座、1個ICSP接頭和1個復位按鈕[2]。
(1)Arduino數據上傳
ATmega328內置的UART通過數字口0(RX)和1(TX)與外部實現串口通信,將數據傳送到藍牙通信模塊中。管理端通過藍牙發送指令給主控板,使其控制機器人運動。
(2)Arduino閾值控制
ATmega16U2可以訪問數字口實現USB上的虛擬串口,核心程序代碼燒錄在主控板中,可通過藍牙獲取管理端的指令閾值并接受傳感器檢測的距離信息。通過對設定的閾值和實際檢測到的距離數值進行比較,判斷是否控制L298N電機驅動模塊使全向輪停止運動,由此實現自動避障。
2.1.3 全向輪
本系統采用全向輪代替一般車輪實現機器人的全向運動,它是一種結構簡單、適用范圍廣,可以在較差路況上運動的車輪。全向輪實物如圖3所示。
采用全方位運動車輪可以有效解決一般車輪由于不能左右側滑而帶來的非完全約束問題。它可以向任意一個方向作直線運動而不需要提前作旋轉運動,并且當其沿著直線運動到目標點的過程中還可以調整自身旋轉角度與姿態,實現最終所需角度[3]。
本系統設計的全向移動機器人共采用4個全向輪,且相互之間的連線可構成一個正方形。機器人俯視圖如圖4所示。
2.1.4 藍牙通信模塊
藍牙通信模塊的主要功能是實現遠程通信,具有實時性強、可遠程控制、覆蓋范圍廣、抗干擾能力強等優點。本系統采用HC-05藍牙通信模塊,該模塊是主從一體的藍牙串口模塊。當藍牙設備之間配對連接成功后,可以忽視藍牙內部的通信協議,直接將藍牙當做串口使用。
本系統的藍牙通信模塊主要實現與管理端進行數據交互的功能。在每輪數據交互中,管理端發送一個代表運動方向的字符給藍牙,藍牙將該字符傳輸給Arduino主控板,主控板更新字符并與程序預設的代表不同運動方向的字符進行比較,啟動L298N電機驅動模塊控制全向輪運動,由此實現管理端控制機器人全向移動。若在數據交互中沒有管理端的運動命令,則機器人不再運動。
全向移動機器人的各部件連接方式如圖5所示。
2.2 Bmob云服務器
安卓平臺的開發以及云端數據的存儲均需服務器的支持,開發者首先需搭建好公網服務器,本文系統選用Bmob云服務器。Bmob云服務器是一款為移動應用提供后端集成功能的云平臺,具有網絡數據下載、儲存功能以及信息通知功能[4]。Bmob云服務器數據交互示意圖如圖6所示,Bmob云服務器停車指令傳遞流程如圖7所示。
本文系統的實現使得用戶可在手機APP端查看附近停車場的情況,還可以通過手機APP與管理端實現信息交互,調配機器人智能停車或在線繳費。因此服務器端需要完成如下三個方面的設計:
(1)連接用戶端APP;
(2)連接管理端;
(3)在數據庫中存儲用戶個人登錄信息、用戶停車信息、安全距離閾值等狀態信息。
2.3 安卓平臺APP
安卓是一種基于Linux的自由及開放源代碼的操作系統,本文系統的所有程序開發均在Android Studio上進行,主要面向智能手機。本文系統中的安卓平臺APP分為管理端和用戶端兩部分:
(1)管理端用于獲取用戶停車信息,控制全向移動機器人,實現系統控制與用戶管理;
(2)用戶端用于登錄賬號、停車場搜索、發送停取車指令、繳費等,同時與管理者對接,進行數據交互[5]。
2.3.1 管理端
本系統的管理端通過藍牙與機器人對接,負責控制其全向的移動、旋轉和平臺升降。在機器人遇到障礙物時,電機會停止運轉進行保護,系統會通過彈窗形式提醒管理者,達到安全作業的目標。
同時,用戶信息會通過Bmob云服務器上傳至管理端,便于信息的管理、操控、反饋。
2.3.2 用戶端
本文系統的用戶端APP名稱為“易停車”,具有尋找停車場、停車繳費、當前訂單查詢三大主要功能[6-7]。
(1)“找停車場”功能
主要調用百度地圖實現此功能,具體步驟如下:
① 下載百度地圖移動版API(Android)開發包;
② 申請API Key;
③ 創建一個Android工程;
④ 在布局文件中添加地圖控件。
(2)“停取車”功能
在平臺停車后,用戶輸入平臺號,再通過手機APP發送“開始停車”命令。該命令先傳輸至Bmob云,再由云端傳輸至管理者端,使其迅速控制機器人停車。取車時,發送“結束停車”命令通知管理者控制機器人取車。
(3)“繳停車費”功能
系統采用計時器記錄停車時間,再通過換算轉化為停車費用展示給用戶,達到在線快速繳費的目標。部分代碼如下:
……
public class Pay extends MainActivity{
TextView parkmoney;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pay);
Intent intent=getIntent();
String time = intent.getStringExtra("extra_time");
parkmoney=(TextView)findViewById(R.id.money);
parkmoney.setText(String.valueOf(time));
}
}
同時,為了加強用戶端與管理端的溝通,本系統將用戶登錄信息、訂單信息、停車信息上傳至管理端,實現實時信息交互功能,優化用戶體驗,使停車過程變得快速、便利、智能。其啟動頁、登錄界面、主界面如圖8所示。
2.4 停車臺
停車臺用于放置所停車輛。每個停車臺對應一個停車臺號,用戶先將車輛停于外部的停車臺上,再通過用戶端APP發送停車臺號與停車指令給管理端,管理端控制機器人將停車臺整體抬起,進入內部停車場進行停車操作,到達指定停車位后將停車臺整體放下,然后機器人可以離開繼續執行停車任務;待用戶發送取車指令后,再找到相應位置,將停車臺整體抬起,送至外部。停車臺的俯視圖略大于機器人。
3 系統的整體操作流程
首先,登錄用戶端APP,之后點擊“找停車場”按鍵,打開內置地圖找到附近的停車場。
接下來點擊“停取車”按鍵,輸入停車臺號,點擊“開始停
車”按鍵(此時開始計費),此命令通過Bmob云服務器傳輸至管理端,管理端將收到對應停車臺的停車請求。管理端通過與藍牙通信模塊的連接,可發送代表運動方向的字符給藍牙,藍牙將字符傳輸至Arduino主控板,主控板更新字符并與程序預設的代表不同運動方向的字符進行比較,啟動L298N電機驅動模塊控制直流電機帶動全向輪,操作全向移動機器人駛入停車臺下;之后發送代表抬升的字符給藍牙,藍牙將字符傳輸給主控板,主控板更新字符并與程序預設的代表升降的字符進行比較,啟動舵機控制升降平臺,使其抬升停車臺;管理端控制機器人駛入內部停車場,到達停車位后將下放平臺,放置停車臺至地面。
用戶取車時,點擊“結束停車”按鍵(此時結束計費),此命令通過Bmob云服務器傳輸至管理端APP,管理端收到取車請求后,控制機器人將車輛移至用戶等待位置。
最后用戶點擊“支付”按鍵在線繳納停車費方可取車離開停車場。
4 安卓用戶端APP效果圖
安卓用戶端APP使用界面如圖9所示。用戶可通過APP搜索附近停車場、發送命令遠程調配機器人停車、在線繳
費等。
5 結 語
本文設計實現的智能停車系統結合全向輪技術和物聯網概念,基于安卓平臺開發,使得用戶操作流程更加人性化、管理者故障檢測更加輕松、管理者系統調配更加合理。
該系統不僅為人們的生活提供了便利,更有效緩解了城市停車空間不足的問題。全向移動停車機器人在經過工業級設計投產后,可以迅速滿足一個智能停車場的車輛停放需求,實現真正意義上的智能化停車[8]。在可持續發展方面,該系統在進行停取車作業時汽車均處在熄火狀態,能夠真正實現零排放。
因此,該系統在停車模式的智能化、互聯網化、環保化等方向均具有良好的應用價值和前景。
參考文獻
[1]云賀.城市"停車難"如何破局[J].財經國家周刊,2017(9).
[2]李國豪,翁柏濤,楊曉冰,等.基于Arduino的AGV小車設計[J].中國科技信息,2018(5):82.
[3]許松清,吳海彬,楊興裕.兩輪驅動移動機器人的運動學研究[J].電子機械工程,2005,21(6):31-34.
[4]周冉,高玉竹.Bmob云平臺在Android APP開發中的應用[J].微型機與應用,2015,34(1):26-28.
[5]劉學.移動智能終端停車系統APP用戶體驗研究與設計[D].天津:天津科技大學,2015.
[6]宋超.手機停車APP系統的設計與實現[D].長春:吉林大學,2016.
[7]陳飛,羅文廣.基于Android的智能交互APP設計[J].廣西科技大學學報,2017,28(2):29-34.
[8]鄒丹,馬向莉.全向輪智能移動平臺前景展望[J].軍民兩用技術與產品,2012(2):56-58.