趙 雪, 蔡士東, 黃伊婷, 劉蓉蓉, 王丹丹, 張樂(lè)樂(lè), 楊雨菲, 王佳偉
(大連民族大學(xué) 信息與通信工程學(xué)院, 遼寧 大連116600)
隨著物聯(lián)網(wǎng)與無(wú)線技術(shù)的發(fā)展和日趨成熟,Android 智能終端以其獨(dú)有的開(kāi)放性優(yōu)勢(shì)為人們提供了更多優(yōu)質(zhì)便捷的技術(shù)服務(wù)。 但是,智能終端控制下的智能小車少有涉及,一些相對(duì)成熟的應(yīng)用也還存在著很多缺陷,尚且需要完善。 在典型的多層物聯(lián)網(wǎng)架構(gòu)中,實(shí)體數(shù)量多,類型也非常復(fù)雜。 特別是在包含傳感器和致動(dòng)器的感知層。 為了滿足設(shè)備的不同連接需求,基于網(wǎng)關(guān)的設(shè)計(jì)已成為首選解決方案。 Mozilla 網(wǎng)關(guān)事物描述使用標(biāo)準(zhǔn)JSON 格式來(lái)描述事物及其功能,將所要傳遞的信息包裝成JSON字符串,能夠更快捷、更準(zhǔn)確地進(jìn)行數(shù)據(jù)傳遞[1]?;贛ozilla 網(wǎng)關(guān)簡(jiǎn)單易學(xué)、使用范圍廣泛、局域網(wǎng)傳輸速度快、成本低廉等優(yōu)點(diǎn),Mozilla 網(wǎng)關(guān)毫無(wú)疑問(wèn)是最優(yōu)的選擇。
本設(shè)計(jì)方案的mozilla 網(wǎng)關(guān)采用基于樹(shù)莓派的物聯(lián)網(wǎng)架構(gòu)Project Things 模式開(kāi)發(fā),將網(wǎng)關(guān)所需的參數(shù)通過(guò)Json 傳輸,網(wǎng)關(guān)接收到參數(shù)后將指令傳遞給樹(shù)莓派小車,從而實(shí)現(xiàn)系統(tǒng)平臺(tái)驅(qū)動(dòng)小車等一系列功能;系統(tǒng)的手機(jī)客戶端使用Android 開(kāi)發(fā)技術(shù)實(shí)現(xiàn)。 客戶端、關(guān)和樹(shù)莓派小車之間用同一個(gè)局域網(wǎng)相連,從而實(shí)現(xiàn)整個(gè)系統(tǒng)運(yùn)轉(zhuǎn)。 系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)框架Fig.1 System framework
本次設(shè)計(jì)的研究?jī)?nèi)容包括:樹(shù)莓派小車的硬件系統(tǒng)、攝像頭模塊、傳感器模塊及移動(dòng)智能終端設(shè)備APP 設(shè)計(jì)。 設(shè)計(jì)方案的整體框架如圖2 所示。
設(shè)計(jì)最終目標(biāo)如下:
(1)實(shí)現(xiàn)小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn),可更改小車的行駛速度和時(shí)間。
(2)實(shí)現(xiàn)攝像頭數(shù)據(jù)采集及視頻的實(shí)時(shí)回傳。
(3)獲取小車超聲波測(cè)距以進(jìn)行人為避障。
(4)實(shí)現(xiàn)小車在陰暗處的照明功能。
圖2 系統(tǒng)框架Fig.2 System block diagram
Raspberry Pi 小車動(dòng)作模塊在 TheCarRun ModelImpl.java 中進(jìn)行處理,用來(lái)處理小車的動(dòng)作。先將收到的信息用RequestBody.create 包裝成json 字符串,再將其封裝到Request 請(qǐng)求中。 android 手機(jī)端與網(wǎng)關(guān)之間的信息傳遞,需要在android 端所發(fā)送的request 請(qǐng)求中寫好網(wǎng)關(guān)所對(duì)應(yīng)的秘鑰,這樣才能在同一個(gè)局域網(wǎng)內(nèi),將指令傳遞給網(wǎng)關(guān)。 傳遞json 數(shù)據(jù)時(shí)用的是okhttp,最后在局域網(wǎng)中用okhttp 將包裝好的Request 發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)準(zhǔn)確地接收到j(luò)son 數(shù)據(jù)后再將json 數(shù)據(jù)傳遞給樹(shù)莓派小車,樹(shù)莓派小車中寫好Python 程序接收網(wǎng)關(guān)傳送的json 數(shù)據(jù)。 在MyCar 類中標(biāo)記小車的端口號(hào)8888,F(xiàn)adeAction 類中接收json數(shù)據(jù)并進(jìn)行解析。 實(shí)現(xiàn)過(guò)程如圖3 所示。
圖3 Raspberry Pi 小車動(dòng)作模塊詳細(xì)設(shè)計(jì)Fig.3 Car control module detailed design
視頻回調(diào)模塊的功能在TheCarRunFragment.java中實(shí)現(xiàn),用來(lái)將收到的小車信息進(jìn)行解析,然后在手機(jī)頁(yè)面中進(jìn)行顯示。 在小車python 程序中VideoStreamingTest 類,用來(lái)將小車所拍攝的視頻進(jìn)行解析為視頻流并設(shè)置host 為192.168.1.101,port 為8000。 小車中運(yùn)用socket()將視頻流包裝好傳輸給網(wǎng)關(guān)。 在TheCarRunFragmeng.java 中,用webView.loadUrl( ) 方 法 參 數(shù)http:/ /192.168.1.101:8000/stream.mjsp 收到網(wǎng)關(guān)傳遞過(guò)來(lái)的http 網(wǎng)址并將網(wǎng)址解析。 在頁(yè)面中用WebView 將收到的視頻流顯示到手機(jī)APP 的頁(yè)面上。 實(shí)現(xiàn)過(guò)程如圖4 所示。
圖4 視頻回調(diào)模塊詳細(xì)設(shè)計(jì)Fig.4 Video callback module detailed design
測(cè)距模塊在PhoneFragment.java 中實(shí)現(xiàn),用來(lái)將小車上所測(cè)的數(shù)據(jù)進(jìn)行返回,在手機(jī)端進(jìn)行顯示。同樣該模塊也是與網(wǎng)關(guān)之間的json 數(shù)據(jù)進(jìn)行傳遞。在PhoneFragment.java 中用request 請(qǐng)求網(wǎng)關(guān),用showResponse()收到返回的測(cè)距信息。 實(shí)現(xiàn)過(guò)程如圖5 所示。
圖5 測(cè)距模塊詳細(xì)設(shè)計(jì)Fig.5 Measuring distance module detailed design
本文主要闡述了APP 控制智能車的實(shí)現(xiàn),從移動(dòng)客戶端到網(wǎng)關(guān)再到智能小車之間的信息傳輸。 基于Mozilla 網(wǎng)關(guān)開(kāi)發(fā)的軟件可以讓用戶將設(shè)備輕松連接到網(wǎng)關(guān),并根據(jù)其在設(shè)備描述中定義的功能,與各個(gè)設(shè)備進(jìn)行信息交互。 Raspberry Pi 生態(tài)系統(tǒng)與Mozilla 開(kāi)源代碼的組合為開(kāi)發(fā)人員提供了用于擴(kuò)展基本設(shè)計(jì)的綜合環(huán)境。 通過(guò)將Mozilla 網(wǎng)關(guān)與Raspberry Pi 3 結(jié)合使用,開(kāi)發(fā)人員可以快速、高效地評(píng)估網(wǎng)關(guān)應(yīng)用,并輕松擴(kuò)展網(wǎng)關(guān)以支持不同的連接選項(xiàng),為將來(lái)用于家電控制、野外探測(cè)、家人看護(hù)提供了參考經(jīng)驗(yàn)。