Android Things旨在讓Android開發(fā)者可以用熟悉的工具(Android Studio)開發(fā)智能設(shè)備。
Android Things是給Android開發(fā)者開發(fā)智能設(shè)備的一個大大的福利,Android開發(fā)者熟悉移動開發(fā)和移動互聯(lián)網(wǎng),可以將自己的移動互聯(lián)網(wǎng)思維注入智能設(shè)備的設(shè)計中,而傳統(tǒng)的硬件開發(fā)者,在這方面相較于Android開發(fā)者有所欠缺,這是Android開發(fā)者的優(yōu)勢。

然而,Android開發(fā)者對硬件、電路往往不夠熟悉,這是劣勢,然而通過學(xué)習(xí),對硬件和電子電路有一些了解,就可以很方便的用Android Things開發(fā)智能設(shè)備了。如果你喜歡動手,可以很方便的設(shè)計你的智能設(shè)備,并DIY出原型產(chǎn)品,開發(fā)運行在設(shè)備中的Android Things APP,結(jié)合云服務(wù)和手機APP,展示你的產(chǎn)品創(chuàng)意。之后聰明的你就可以全面的展示你的智能設(shè)備,融資或是通過眾籌的方式,進行智能設(shè)備的產(chǎn)品化?;蛘吣阒幌隓IY自己玩玩,或是帶著你的孩子一起玩,對,給孩子開發(fā)自己專屬的智能玩具,那也是很酷的事情。

做Android Things,做物聯(lián)網(wǎng)開發(fā),就不得不說電子電路了,Android開發(fā)者可能并不熟悉,不過本文會幫你梳理一下,基本上都是初中物理的知識。首先要介紹一個非常好的工具——面包板。

面包板可以讓你不需要焊接,通過接插的方式,把電子元件連接在一起,實現(xiàn)所需的功能,非常省時省力。Android Things官網(wǎng)的開發(fā)案例,也基本上都是通過面包板連接電子元件實現(xiàn)的。上圖就是Android Things官網(wǎng)的第一個例子,電燈大法(讓LED燈閃爍)。雖然Android Things現(xiàn)在也推薦一些集成了LED、按鍵和一些傳感器的樹莓派擴展板,不過還是建議入門者選擇面包板和插件元件的配件套裝,這樣你知道電路是怎么連接的,知道原理會有助于發(fā)展你的創(chuàng)意。
我們可以按上圖,先連接好電路:
1. 圖中從樹莓派的一個GPIO引腳(Pin31-BCM6),引出線到面包板上。
2. 面包板中間每一行(標(biāo)注了1~30)中下半部分的ABCDE五個孔、FGHIJ五個孔,是分別連通的。即第1列的ABCDE孔可以理解為是用一根導(dǎo)線連通的。
3. 如圖中,導(dǎo)線和電阻左側(cè),都連在第13列下半部分的孔中,它們是接通的。
4. 連接一個電阻(可以選用300Ω~1KΩ的電阻,如果有我們的配件套裝,可以使用藍(lán)色的電阻,阻值是1KΩ的)。
5. 同樣,通過面包板,電阻的另一端連接到了紅色LED燈上,注意是連接LED燈的長腳。
6. 紅色LED燈的短腳,通過面包板,連接一根杜邦線,連接到了面包板上面的負(fù)極插孔上。
7. 面包板上下各有一對電源正極插孔(標(biāo)紅線)和負(fù)極插孔(標(biāo)藍(lán)線或黑線),這些孔同一行整行都是連通的。
8. 將面包板上方的負(fù)極插孔,連接到樹莓派的負(fù)極(GND)上。
這樣,我們就可以通過控制GPIO產(chǎn)生高電平,電流通過電阻流過LED燈,使LED燈發(fā)光了。
我們在淘寶上提供了入門套裝,你可以選擇包含了樹莓派和已燒錄Android Things系統(tǒng)的TF的套件,如果你已經(jīng)有樹莓派,只購買配件即可。如果你要自己下載燒錄Android Things系統(tǒng),可以先讀我的另一篇《Android Things入門防坑必讀-硬件和系統(tǒng)下載安裝篇》。
套件根據(jù)Android Things官網(wǎng)Samples開發(fā)案例所需的配件進行打包,精選優(yōu)品,無需自己搭配,專業(yè)工程師親自搭配測試。

開發(fā)第一個Android Things APP
如果你是Android開發(fā)者,你應(yīng)該已經(jīng)有了Android Studio,如果沒有的話,可以到官網(wǎng)下載一個最新版的。
https://developer.android.google.cn/studio/index.html

之后,到Github上去下載官網(wǎng)第一個例子(Simple PIO)的源代碼。
https://github.com/androidthings/sample-simplepio
在Android Studio中打開,這里有個坑,應(yīng)該是Android Studio的Bug,由于項目使用的是新的gradle-4.1進行編譯,提示Failed to open zip file。沒有下載成功。測試發(fā)現(xiàn)用瀏覽器是可以打開下載的,所以感覺是Android Studio的Bug。如圖,打開gradle-wrapper.properties文件,看最后一行。

如下圖紅框所示,講最后一行的https改成http,重新編譯即可,第一次編譯時要下載gradle-4.1-all.zip文件,需要耗費很長時間。

通過網(wǎng)絡(luò)adb連上樹莓派,假設(shè)樹莓派的IP地址為192.168.1.100,即在命令行輸入
adb connect 192.168.1.100
如果是NXP的Pico開發(fā)板,則是通過USB Type-C線,通過USB方式連接ADB,通過網(wǎng)絡(luò)方式連接ADB會提示拒絕連接。
連接成功后,運行blink這個APP即可看到LED燈閃爍了,可以嘗試換其它顏色的LED燈試試效果。

如果你希望你的APP可以開機自動運行,那么可以修改AndroidManifest.xml文件。

如文件中的注釋所述,將下面的<intent-filter>代碼段的注釋取消即可。主要是設(shè)置了“android.intent.category.HOME”屬性,這樣相當(dāng)于你的APP是設(shè)備的默認(rèn)啟動程序了。此時你的APP將會開機自動啟動,當(dāng)APP意外中止時,也將會自動重啟。
試想你的智能設(shè)備售賣出去了,然后程序異常退出了,你總不希望它在用戶手里變磚頭吧,所以Android Things發(fā)現(xiàn)你的APP退出之后,會幫你重新啟動。(以前都要自己寫異常重啟的代碼,現(xiàn)在系統(tǒng)幫你實現(xiàn)了。)
不過在調(diào)試的時候,APP因為自動重啟而沒辦法停止就不太好,比如你先調(diào)試了A程序,然后又運行了B程序,A程序沒法退出,B程序就沒法申請A程序已使用的資源。所以,官網(wǎng)給出的方法是,調(diào)試完A程序之后,如果要調(diào)試B程序,則先通過ADB將A程序卸載掉。
adb uninstall com.example.projectA
或者,保持AndroidManifest.xml文件中,下面的<intent-filter>代碼段為注釋狀態(tài)。
使用PWM控制舵機
在官網(wǎng)Simple PIO這個例子中,還有一個pwm項目,可以在啟動運行的地方,將blink項目切換為pwm項目,運行這個APP,我們可以控制舵機旋轉(zhuǎn)。


如圖,需要通過三根線連接舵機:

1. 樹莓派5V電源線,如圖中紅線,連接到舵機的 紅色線
2. 樹莓派 GND線,如圖中黑線,連接到舵機的 棕色線
3. 樹莓派 PWM輸出線,如圖中黃線,連接到舵機的 橙色線
注意線不要接錯,否則可能燒毀舵機。
更多動手實踐
我在Blink代碼的基礎(chǔ)上,做了一個數(shù)字管顯示數(shù)字,自動累加的例子,你可能猜到了數(shù)碼管其實就是一系列LED燈組合在一起的,后面的文章中會做介紹,你也可以動手實踐一下。

