張世嬌,靳毅軒,杜清河,張翠翠,張鵬輝
(1. 西安交通大學(xué) 電子與信息學(xué)部 信通與通信工程學(xué)院,陜西 西安 710049;2. 西安交通大學(xué) 國(guó)家級(jí)通信與信息系統(tǒng)虛擬仿真實(shí)驗(yàn)教學(xué)中心,陜西 西安 710049)
嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪,功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)[1-2]。隨著信息產(chǎn)業(yè)的迅速發(fā)展,嵌入式系統(tǒng)在智能手機(jī)、可視電話、高清電視、無(wú)人機(jī)、數(shù)碼相機(jī)、醫(yī)療器械等領(lǐng)域的應(yīng)用越來(lái)越廣泛。嵌入式 Android 系統(tǒng)就是將 Android 作為嵌入式產(chǎn)品的操作系統(tǒng),將嵌入式產(chǎn)品的靈活性和Android 系統(tǒng)的穩(wěn)定性緊密結(jié)合起來(lái),其具有靈活的應(yīng)用程序框架、優(yōu)化的圖形處理、多樣化的通信方式等特點(diǎn)[3],成為互聯(lián)網(wǎng)、消費(fèi)電子領(lǐng)域的應(yīng)用熱點(diǎn)之一[4-5]。
雖然高校開(kāi)設(shè)了嵌入式實(shí)驗(yàn)課程,但是基于Android的嵌入式開(kāi)發(fā)實(shí)驗(yàn)相對(duì)較少,學(xué)生嵌入式Android 方面的開(kāi)發(fā)能力仍然欠缺??紤]到 Android 在當(dāng)前移動(dòng)通信市場(chǎng)的占有率達(dá)到70%以上,并且在未來(lái)一段時(shí)間內(nèi),可以預(yù)見(jiàn)嵌入式Android 開(kāi)發(fā)需求將持續(xù)增加,因此增強(qiáng)學(xué)生在嵌入式 Android 方面的知識(shí)技術(shù)儲(chǔ)備和應(yīng)用開(kāi)發(fā)能力十分必要。本文從嵌入式Android 系統(tǒng)的典型應(yīng)用場(chǎng)景出發(fā),結(jié)合應(yīng)用開(kāi)發(fā)過(guò)程的趣味性、實(shí)物展示的直觀性、工業(yè)場(chǎng)景的實(shí)用性,設(shè)計(jì)了嵌入式Android 系統(tǒng)中無(wú)線數(shù)據(jù)采集、傳輸綜合實(shí)驗(yàn)。通過(guò)實(shí)驗(yàn),學(xué)生可掌握嵌入式 Android 系統(tǒng)的應(yīng)用開(kāi)發(fā)流程、界面設(shè)計(jì)、應(yīng)用程序設(shè)計(jì)、網(wǎng)絡(luò)通信應(yīng)用開(kāi)發(fā)、信號(hào)采集與傳輸應(yīng)用開(kāi)發(fā)的技能。一方面強(qiáng)化學(xué)生對(duì)硬件設(shè)備的認(rèn)知,另一方面提高學(xué)生應(yīng)用軟件設(shè)計(jì)開(kāi)發(fā)水平,以期達(dá)到增強(qiáng)學(xué)生工程實(shí)踐能力、分析解決實(shí)際問(wèn)題能力的目的[6-9]。
軟件平臺(tái)方面,相比于Eclipse,Google 推出的基于IntelliJ IDEA 的集成開(kāi)發(fā)環(huán)境Android Studio 具有穩(wěn)定速度快、界面美觀度高、智能性強(qiáng)、插件系統(tǒng)豐富等特點(diǎn),并且內(nèi)置終端,更加容易上手,所以選擇Android Studio 作為軟件開(kāi)發(fā)環(huán)境[10]。
硬件平臺(tái)方面,除一般的實(shí)驗(yàn)需求外,還應(yīng)考慮偏遠(yuǎn)地區(qū)及礦井信號(hào)探測(cè)的需求[11-12],故選用Exynos4412 為核心芯片的實(shí)驗(yàn)開(kāi)發(fā)板,該開(kāi)發(fā)板具有LCD 顯示屏、Wi-Fi/BT 模塊、4G 模塊、串口模塊、LED 燈等豐富的外設(shè)模塊和接口,方便拓展使用。其他能夠滿足實(shí)驗(yàn)要求的開(kāi)發(fā)板或者自制實(shí)驗(yàn)開(kāi)發(fā)板亦可應(yīng)用于該綜合實(shí)驗(yàn)。
考慮到學(xué)生幾乎零基礎(chǔ)進(jìn)入嵌入式Android 實(shí)驗(yàn)教學(xué)課堂,將該綜合實(shí)驗(yàn)設(shè)計(jì)為由淺入深的實(shí)驗(yàn)層次,見(jiàn)表1。
表1 實(shí)驗(yàn)體系設(shè)計(jì)
綜合實(shí)驗(yàn)的四個(gè)層次分別為初階、進(jìn)階、提升、設(shè)計(jì),設(shè)計(jì)實(shí)驗(yàn)是在前三個(gè)層次實(shí)驗(yàn)的基礎(chǔ)上完成的,其難點(diǎn)在于教師只給出實(shí)驗(yàn)要求,學(xué)生需根據(jù)要求獨(dú)立進(jìn)行實(shí)驗(yàn)分析、設(shè)計(jì)實(shí)驗(yàn)方案、完成應(yīng)用開(kāi)發(fā),并在實(shí)驗(yàn)板上進(jìn)行驗(yàn)證,此外在基本實(shí)驗(yàn)要求上自行設(shè)定應(yīng)用場(chǎng)景、擴(kuò)展應(yīng)用需求,完善設(shè)計(jì)。設(shè)計(jì)實(shí)驗(yàn)對(duì)學(xué)生的綜合設(shè)計(jì)能力和工程應(yīng)用開(kāi)發(fā)能力要求較高。綜合實(shí)驗(yàn)內(nèi)容設(shè)計(jì)如下。
1.2.1 初階實(shí)驗(yàn)
實(shí)驗(yàn)內(nèi)容包括:使用VMware、Ubuntu 搭建嵌入式交叉編譯環(huán)境;使用交叉編譯生成嵌入式系統(tǒng)內(nèi)核文件;使用超級(jí)終端作為控制臺(tái)將鏡像燒寫至開(kāi)發(fā)板,完成硬件環(huán)境構(gòu)建;安裝Android Studio,搭建嵌入式軟件開(kāi)發(fā)環(huán)境。
該部分的主要目的是了解嵌入式系統(tǒng)的結(jié)構(gòu)和發(fā)展歷程,了解嵌入式系統(tǒng)發(fā)展中所使用的工具及嵌入式開(kāi)發(fā)方法,了解嵌入式系統(tǒng)對(duì)軟硬件平臺(tái)的需求,搭建適合后續(xù)嵌入式開(kāi)發(fā)的軟硬件環(huán)境,增強(qiáng)軟件開(kāi)發(fā)對(duì)硬件資源需求的意識(shí),樹(shù)立全面客觀的工程社會(huì)意識(shí)觀。
1.2.2 進(jìn)階實(shí)驗(yàn)
實(shí)驗(yàn)內(nèi)容包括:在 Android Studio 中使用各種Layout、Widget 設(shè)計(jì)用戶界面;使用 Activity、Intent實(shí)現(xiàn)消息發(fā)送應(yīng)用開(kāi)發(fā)和用戶注冊(cè)應(yīng)用開(kāi)發(fā);使用JNI 從上層控制底層硬件,實(shí)現(xiàn)LED 控制,實(shí)現(xiàn)蜂鳴器控制;引入線程概念,拓展完成LED 燈閃爍控制。
該部分的主要目的是在初階實(shí)驗(yàn)的基礎(chǔ)上,學(xué)習(xí)Java 編程知識(shí),掌握Android 應(yīng)用從界面設(shè)計(jì)到應(yīng)用開(kāi)發(fā)的全部流程,掌握嵌入式 Android 中上層應(yīng)對(duì)外設(shè)的控制方法,掌握設(shè)計(jì)過(guò)程中問(wèn)題分析的方法和設(shè)計(jì)完成后的驗(yàn)證方法,培養(yǎng)學(xué)生分析問(wèn)題解決問(wèn)題的能力。
1.2.3 提升實(shí)驗(yàn)
實(shí)驗(yàn)內(nèi)容包括:在Android Studio 中完成簡(jiǎn)易游戲開(kāi)發(fā);使用UART 協(xié)議實(shí)現(xiàn)串口通信應(yīng)用開(kāi)發(fā);使用TCP/IP 協(xié)議實(shí)現(xiàn)開(kāi)發(fā)板間的無(wú)線通信;使用無(wú)線通信實(shí)現(xiàn)開(kāi)發(fā)板間的遠(yuǎn)程控制,完成簡(jiǎn)易智能家居應(yīng)用。
該部分的主要目的是在進(jìn)階實(shí)驗(yàn)的基礎(chǔ)上,提升Java 編程能力,掌握網(wǎng)絡(luò)編程基礎(chǔ)知識(shí),掌握TCP/IP網(wǎng)絡(luò)協(xié)議、串口協(xié)議,實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)通信應(yīng)用開(kāi)發(fā),培養(yǎng)學(xué)生針對(duì)復(fù)雜應(yīng)用分析、設(shè)計(jì)的能力。
1.2.4 設(shè)計(jì)實(shí)驗(yàn)
實(shí)驗(yàn)內(nèi)容包括:使用嵌入式軟硬件開(kāi)發(fā)環(huán)境,設(shè)計(jì)并完成嵌入式 Android 系統(tǒng)中無(wú)線數(shù)據(jù)信號(hào)的采集、傳輸、處理。
該設(shè)計(jì)實(shí)驗(yàn)只給出實(shí)驗(yàn)要求,每?jī)晌粚W(xué)生組成團(tuán)隊(duì),團(tuán)隊(duì)根據(jù)實(shí)驗(yàn)要求進(jìn)行分析、設(shè)計(jì),并完成硬件驗(yàn)證,此外可在基本要求的基礎(chǔ)上進(jìn)行功能拓展,完善應(yīng)用設(shè)計(jì),以培養(yǎng)學(xué)生的工程實(shí)踐能力、交流溝通能力和團(tuán)隊(duì)協(xié)作意識(shí)。
綜合實(shí)驗(yàn)的總體架構(gòu)如圖1 所示。
圖1 綜合實(shí)驗(yàn)總體架構(gòu)
針對(duì)該架構(gòu)圖說(shuō)明如下:
(1)初階、進(jìn)階實(shí)驗(yàn)均可在一塊開(kāi)發(fā)板上完成;
(2)提升實(shí)驗(yàn)中無(wú)線網(wǎng)絡(luò)通信實(shí)驗(yàn)和設(shè)計(jì)實(shí)驗(yàn)需要兩塊以上的開(kāi)發(fā)板配合;實(shí)現(xiàn)驗(yàn)證時(shí),可使用多個(gè)開(kāi)發(fā)板接入同一網(wǎng)絡(luò),通過(guò)多跳傳輸實(shí)現(xiàn)遠(yuǎn)距離通信。
鑒于綜合實(shí)驗(yàn)中初階、進(jìn)階、提升實(shí)驗(yàn)的實(shí)現(xiàn)復(fù)雜度低于設(shè)計(jì)實(shí)驗(yàn),因此本文著重闡述設(shè)計(jì)實(shí)驗(yàn)的具體設(shè)計(jì)實(shí)現(xiàn)。
設(shè)計(jì)實(shí)驗(yàn)的實(shí)驗(yàn)要求:根據(jù)自行設(shè)計(jì)的應(yīng)用場(chǎng)景,監(jiān)測(cè)應(yīng)用區(qū)域的環(huán)境信息,將該信息通過(guò)無(wú)線信號(hào)傳輸至主控臺(tái),由主控臺(tái)進(jìn)行信息處理。基本要求:準(zhǔn)確采集環(huán)境信息,高效進(jìn)行信息傳輸,如環(huán)境信息超出閾值范圍時(shí)主控臺(tái)處應(yīng)給出預(yù)警,主控臺(tái)可遠(yuǎn)程控制信息采集板的工作狀態(tài)。
根據(jù)實(shí)驗(yàn)要求,選取SHT20 溫濕度傳感器作為環(huán)境數(shù)據(jù)采集器,開(kāi)發(fā)板間使用無(wú)線通信實(shí)時(shí)傳輸數(shù)據(jù),連接主控臺(tái)的開(kāi)發(fā)板接收數(shù)據(jù)并判斷是否超過(guò)閾值,如果超過(guò)則報(bào)警,同時(shí)該開(kāi)發(fā)板將數(shù)據(jù)傳至主控臺(tái),主控臺(tái)進(jìn)行數(shù)據(jù)分析,并發(fā)出調(diào)整采集板工作狀態(tài)的指令,采集板實(shí)時(shí)響應(yīng)主控臺(tái)的指令,如停止采集、開(kāi)始采集、調(diào)整采集速率等。
該設(shè)計(jì)實(shí)驗(yàn)劃分以下模塊實(shí)現(xiàn)。
2.2.1 環(huán)境信息的采集控制
SHT20 為主芯片的數(shù)字溫濕度傳感器為全量程標(biāo)定,兩線數(shù)字接口,抗干擾能力強(qiáng),溫濕一體,兼有露點(diǎn)測(cè)量,可適用的測(cè)量場(chǎng)合多。SHT20 測(cè)得的環(huán)境信息通過(guò)串口傳至開(kāi)發(fā)板。
SHT20 采集到的溫濕度數(shù)據(jù)信息為串行通信數(shù)據(jù)格式,為了能夠通過(guò)串口與開(kāi)發(fā)板進(jìn)行通信,需通過(guò)TTL 轉(zhuǎn)串口芯片將采集到的數(shù)據(jù)轉(zhuǎn)化為可以通過(guò)串口傳輸?shù)臄?shù)據(jù),考慮到 SHT20 芯片和 TTL 轉(zhuǎn)串口芯片需要供電才能工作,需為 SHT20 和TTL 轉(zhuǎn)串口芯片提供外部供電。如圖2 所示。
圖2 SHT20 與TTL 轉(zhuǎn)RS232 模塊的連接
SHT20 溫濕度傳感器模塊與 TTL 轉(zhuǎn) RS232 模塊連接后,通過(guò)串口連接開(kāi)發(fā)板,由開(kāi)發(fā)板發(fā)送指令控制SHT20 的工作狀態(tài)。
2.2.2 開(kāi)發(fā)板之間無(wú)線信號(hào)傳輸
考慮到信號(hào)傳輸?shù)膶?shí)時(shí)性、空曠地區(qū)及礦井等應(yīng)用場(chǎng)景使用有線傳輸?shù)牟季€成本過(guò)高、環(huán)境信息采集開(kāi)發(fā)板可移動(dòng)探測(cè)等要求,開(kāi)發(fā)板之間采用無(wú)線傳輸。
采用網(wǎng)絡(luò)通信編程實(shí)現(xiàn)嵌入式Android 開(kāi)發(fā)板間的無(wú)線傳輸應(yīng)用。無(wú)論借助于Wi-Fi 或者4G,在網(wǎng)絡(luò)傳輸層所用的協(xié)議均為 TCP/IP,使用套接字 Socket編程。Android 中基于Socket 的通信模型如圖3 所示。
圖3 Android 中Socket 通信模型
在網(wǎng)絡(luò)通信的實(shí)現(xiàn)過(guò)程中,Socket 的建立和數(shù)據(jù)收發(fā)通過(guò)線程完成。因?yàn)槎嗑€程程序設(shè)計(jì)相對(duì)復(fù)雜,學(xué)生可先完成單線程通信程序,實(shí)現(xiàn)點(diǎn)到點(diǎn)之間信息傳輸,測(cè)試成功后再實(shí)現(xiàn)多線程。多線程通信時(shí),多個(gè)板子組成星型網(wǎng)絡(luò),處于中心結(jié)點(diǎn)的板子作為服務(wù)器,其他板子作為客戶端,網(wǎng)絡(luò)中任意節(jié)點(diǎn)發(fā)送的信息均可以通過(guò)中心結(jié)點(diǎn)的轉(zhuǎn)發(fā)實(shí)現(xiàn)多點(diǎn)通信。在多線程的支持下,通過(guò)多跳轉(zhuǎn)發(fā)實(shí)現(xiàn)遠(yuǎn)距離通信。
實(shí)時(shí)通信確保了信息的傳輸,當(dāng)環(huán)境信息超過(guò)閾值時(shí),連接主控臺(tái)的開(kāi)發(fā)板應(yīng)產(chǎn)生警告,因此需實(shí)現(xiàn)開(kāi)發(fā)板間的遠(yuǎn)程控制。Android 的應(yīng)用開(kāi)發(fā)使用 Java語(yǔ)言,對(duì)底層硬件的控制需要借助 JNI。采集到的環(huán)境信息達(dá)到告警門限時(shí),連接主控臺(tái)的開(kāi)發(fā)板蜂鳴器報(bào)警,LED 燈閃爍。
2.2.3 開(kāi)發(fā)板與主控臺(tái)間通信
在數(shù)據(jù)采集、傳輸通信網(wǎng)絡(luò)中,采集到的環(huán)境信息通過(guò)無(wú)線傳輸至終端的開(kāi)發(fā)板,為了更好地進(jìn)行數(shù)據(jù)分析和處理,需將終端開(kāi)發(fā)板與主控臺(tái)相連。
開(kāi)發(fā)板與主控臺(tái)之間使用串口或無(wú)線通信??稍O(shè)計(jì)終端開(kāi)發(fā)板的控制界面(圖4),選擇將接收的數(shù)據(jù)發(fā)送、丟棄、定期發(fā)送至主控臺(tái)。同時(shí)主控臺(tái)根據(jù)數(shù)據(jù)分析結(jié)果向環(huán)境信息采集開(kāi)發(fā)板發(fā)送控制指令,調(diào)整信息采集開(kāi)發(fā)板上傳感器的工作模式。
圖4 數(shù)據(jù)接收控制板界面
2.3.4 環(huán)境信號(hào)采集、傳輸結(jié)果展示
傳感器采集環(huán)境數(shù)據(jù),通過(guò)開(kāi)發(fā)板組成的無(wú)線網(wǎng)絡(luò)多跳傳輸至終端開(kāi)發(fā)板,并最終傳至主控臺(tái)處理。圖5 為環(huán)境采集端的控制界面。圖6 為主控臺(tái)收到的可供Matlab 等軟件處理的環(huán)境數(shù)據(jù)。
圖5 數(shù)據(jù)采集板實(shí)時(shí)采集數(shù)據(jù)
圖6 主控臺(tái)收到的傳感器數(shù)據(jù)
實(shí)踐教學(xué)是本科生教學(xué)的一個(gè)重要組成部分,相對(duì)于理論教學(xué),更加注重培養(yǎng)學(xué)生運(yùn)用理論分析問(wèn)題、解決問(wèn)題的能力。本文從嵌入式 Android 實(shí)驗(yàn)教學(xué)出發(fā),考慮工業(yè)現(xiàn)場(chǎng)生產(chǎn)實(shí)際需求,設(shè)計(jì)了無(wú)線信號(hào)采集與傳輸綜合實(shí)驗(yàn),范圍涵蓋底層硬件到上層應(yīng)用,設(shè)計(jì)實(shí)驗(yàn)部分充分體現(xiàn)了嵌入式 Android 開(kāi)發(fā)的關(guān)鍵技術(shù)要點(diǎn),目前該綜合實(shí)驗(yàn)已應(yīng)用于實(shí)驗(yàn)教學(xué),具有較高的教學(xué)實(shí)用性。