林鑫睿
摘要: Android Things是谷歌公司推出的新一代智能物聯網操作系統,有效地降低了開發的難度。該文首先對Android Things的結構、優勢和應用場景進行了分析,然后從硬件的準備、關鍵技術的實現來探討如何基于Android Things來進行LED燈開關的操作試驗,為學習Android Things提供了較好的實踐案例。
關鍵詞:物聯網;Android Things;LED燈控制;樹莓派
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)03-0084-02
1 Android Things技術
Android Things為谷歌公司在2016年12月發布的物聯網操作系統。在圖1的系統架構中可看出,Android Things通過Things Support Library庫,擴展了核心Android框架,從而可使APP能夠與手機上沒有的硬件集成在一起。此外,出于優化的目的,Android Things只是選用了Android API的子集。由于嵌入式設備典型情況下是為用戶呈現單個應用程序,因此在Android Things中一次只能運行一個應用程序,而且應用程序將隨著系統自動啟動。
Android Things帶來了如下顯著的優勢:
1) 在標準上,通過谷歌的品牌和影響力,類似于Android手機操作系統,有望在業界中推動建立一個流行的智能物聯網操作系統。
2) 在開發上,可以在Android Things中使用Java語言來編程,通過調用Android Things提供的有關API來操作硬件,此外還可以使用谷歌豐富的開發資源,降低實現難度。
3) 在效率上,使用Android Studio來開發和調試程序,直接可以在物聯網硬件上運行,提高了開發效率。
4) 硬件價格低,Android Things對硬件的要求比Android要低。目前支持Androd Things的開發板有:NXP i.MX7D、NXP i.MX6UL、Raspberry Pi 3、Intel Edison、Intel Joule。
5) 機器學習能力:支持TensorFlow,能夠將深度學習應用到物聯網領域,提高物聯網設備的智能性。
6) 安全性:通過Cloud IOT云平臺來進行安全管理,依靠谷歌的安全團隊技術,提高物聯網產品的使用安全性,減少數據泄露和被攻擊的幾率。
可以將Android Things部署在多個物聯網領域,例如:智慧城市、車聯網、智能音箱、數字標牌、打印機等,但目前受開發板成本的限制,Android Things還沒有開始大規模在商業市場上應用。
2 硬件準備
1) 樹莓派(Raspberry PI)。樹莓派作為專門用于學習計算機編程的微型電腦,具有體積小、功能強大、價格便宜的優點,因此在本實驗中采用樹莓派來安裝Android Things。
2) 面包板。面包板是集成電路實驗板,板上由若干個小插孔組成,用于插放各類電子元器件。中間部分的5個小插孔是縱向相互連通,而上、下部分的所有橫向孔是相互連通的。面包板的優點在于不需要焊接,組裝電路較快,而且可以重復使用電子元器件。
3) 其他配件:紅、黃、藍LED燈各1個,電阻3個、杜邦線若干、HDMI接口顯示屏1個。
3 系統實現
3.1 功能介紹
通過APP操作界面設置LED燈的開和關,并通過滑動欄來控制開燈的閃爍頻率。
3.2 軟件開發環境配置
1) Android Studio 3.0對Android Things提供了支持,需要到谷歌開發者官網下載并安裝。
2) 打開Android Studio,新建一個項目,設置目標Android設備為“Android Things”,并選擇合適的API版本。
3.3 關鍵實現代碼
實現的原理是獲取連接在GPIO的引腳對象,通過該對象去訪問連接在燈上的引腳BCM6,然后進行true/false的取值來發送接通/關閉引腳,從而實現對燈的管理。
1) 定義一個PeripheralManagerService對象:PeripheralManagerService是負責管理外設連接的類。
PeripheralManagerService service = new PeripheralManagerService();
2) 定義一個Gpio對象:Gpio對象用于讀取輸入設備的二進制狀態(例如:按鈕開關)和控制二進制輸出設備的開關狀態(例如:LED燈)。PeripheralManagerService對象的openGpio方法用于打開指定引腳名字的Gpio對象。
Gpio mLedGpio= service.openGpio("BCM6");
3) 通過Gpio對象的setDirection方法來配置 BCM6引腳為輸出信號引腳。
mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
4) 調用Gpio對象的setValue(true)方法打開LED,或者調用setValue(false)方法關閉LED。
5) 最后調用Gpio對象的close()方法關閉端口的連接,釋放資源。
本案例的運行結果如圖5,6所示:
4 結論
Android Things能夠和樹莓派較好地結合,進行物聯網的相關應用。在本實驗搭建的LED環境中,可以作進一步的物聯網擴展開發實驗,例如:增加煙霧探測、溫度、人體紅外感應等類型的傳感器,添加攝像頭進行圖像捕捉等。
參考文獻:
[1] 謝景明,鐘閏祿,陳長輝,等. Android移動開發項目式教程 [M].2版.北京:人民郵電出版社,2015.
[2] Google, Things[EB/OL].[2018-01-03]. https://developer.android.google.cn/things/index.html.