这是一个从Android Things官方Weather Station简化而来的例子,去掉了联网和数码管显示,主要演示入门配件包中的BMP280气压温度传感器的用法。
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
BST-BMP280-DS001-11.pdf是BMP280芯片的详细文档,可参考。
程序首次启动时,会出现以下异常
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
这是因为Android Things不支持动态权限导致的,重启Android Things开发板,即可成功运行。
屏幕上会显示当前的温度和气压,你可以把手放在传感器上使其温度上升,看到温度值的变化。屏幕界面效果如下:
如果不连接屏幕,也可以在Logcat中看到温度和气压的输出值。
按照官网的例子,会根据气压值范围显示晴、多云、雨的图标,不过影响气压值的因素很多(海拔、季节),所以这个天气图标是不准确的,纯属娱乐。
后续会增加一些传感器,实现一个多功能的气象站。
考虑到Google Cloud的可用性问题,接入阿里云IoT,实现传感器数据的发布。