這是一個從Android Things官方Weather Station簡化而來的例子,去掉了聯網和數位管顯示,主要示範入門配件包中的BMP280氣壓溫度傳感器的用法。
案例代碼已更新到Android Things Developer Preview 7版本,注意開發闆系統與代碼版本一緻。
Weather Station調試圖檔
BMP280的連接配接:根據BMP280的定義
The I2C interface uses the following pins:
> VCC: 連接配接至3.3V
> GND: 連接配接至GND
> SCK: serial clock (SCL) -- 連接配接開發闆的SCL,即Pin 5
> SDI: data (SDA) -- 連接配接開發闆的SDA,即Pin 3
> CSB must be connected to VDDIO to select I2C interface. -- 本例中使用I2C,即連接配接至3.3V
> SDO: Slave address LSB (GND = ‘0’, VDDIO = ‘1’) -- 本例中設定為1,即連接配接至3.3V
使用面包闆的連接配接圖如下(樹莓派和NXP開發闆均适用)
面包闆的連接配接圖
程式首次啟動時,會出現以下異常
FATAL EXCEPTION: main Process: com.sysolve.androidthings.weatherstation, PID: 1693 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sysolve.androidthings.weatherstation/com.sysolve.androidthings.weatherstation.MainActivity}: java.lang.SecurityException: Caller lacks required permission com.google.android.things.permission.MANAGE_SENSOR_DRIVERS
<b>這是因為Android Things不支援動态權限導緻的,重新開機Android Things開發闆,即可成功運作。</b>
螢幕上會顯示目前的溫度和氣壓,你可以把手放在傳感器上使其溫度上升,看到溫度值的變化。螢幕界面效果如下:
螢幕界面
不連接配接螢幕,也可以在logcat中看到傳感器傳回值:
溫度和壓力值回報
按照官網的例子,會根據氣壓值範圍顯示晴、多雲、雨的圖示,不過影響氣壓值的因素很多(海拔、季節),是以這個天氣圖示是不準确的,純屬娛樂。
後續會增加一些傳感器,實作一個多功能的氣象站。
考慮到Google Cloud的可用性問題,接入阿裡雲IoT,實作傳感器資料的釋出。