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