开发者社区 > 物联网 > 正文

谷歌Android things接入阿里云IoT物联网套件


谷歌Android things物联网硬件接入阿里云IoT物联网套件云端实战

1.硬件设备



1.1 项目设备列表




设备名

图片

备注

购买地址

NXP Pico i.MX7D开发板


Android things系统1.0

谷歌开发者大会赠送可以用树莓派替代

DHT12温湿度传感器


I2C数据通信方式

淘宝

ZE08-CH2O甲醛检测传感器


UART数据通信方式

淘宝


1.2 NXP i.MX7D开发板针脚介绍


NXP Pico i.MX7D 完整I/O接口文档



1.3 设备接线示意图





2.阿里云IoT物联网套件



2.1 开通阿里云IoT物联网套件


IoT物联网套件官网地址

2.2 创建高级版产品


添加产品属性定义


属性名

标识符

数据类型

描述

温度

temperature

float

DHT12传感器采集

湿度

humidity

float

DHT12传感器采集

甲醛浓度

ch2o

double

ZE08传感器采集




2.3 Android things设备端开发


a) 使用Android Studio创建Android things工程,添加网络权限
<uses-permission android:name="android.permission.INTERNET" />

b) gradle引入eclipse.paho.mqtt
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'

c) 通过I2C读取DHT12数据
private void readDataFromI2C() {


        try {


            byte[] data = new byte[5];
            i2cDevice.readRegBuffer(0x00, data, data.length);


            // check data
            if ((data[0] + data[1] + data[2] + data[3]) % 256 != data[4]) {
                humidity = temperature = 0;
                return;
            }
            // humidity data
            humidity = Double.valueOf(String.valueOf(data[0]) + "." + String.valueOf(data[1]));
            Log.d(TAG, "humidity: " + humidity);
            // temperature data
            if (data[3] < 128) {
                temperature = Double.valueOf(String.valueOf(data[2]) + "." + String.valueOf(data[3]));
            } else {
                temperature = Double.valueOf("-" + String.valueOf(data[2]) + "." + String.valueOf(data[3] - 128));
            }


            Log.d(TAG, "temperature: " + temperature);


        } catch (IOException e) {
            Log.e(TAG, "readDataFromI2C error " + e.getMessage(), e);
        }


    }

d) 通过UART获取Ze08CH2O数据
try {
                // data buffer
                byte[] buffer = new byte[9];


                while (uartDevice.read(buffer, buffer.length) > 0) {


                    if (checkSum(buffer)) {
                        ppbCh2o = buffer[4] * 256 + buffer[5];
                        ch2o = ppbCh2o / 66.64 * 0.08;
                    } else {
                        ch2o = ppbCh2o = 0;
                    }
                    Log.d(TAG, "ch2o: " + ch2o);
                }


            } catch (IOException e) {
                Log.e(TAG, "Ze08CH2O read data error " + e.getMessage(), e);
            }
e) 创建阿里云IoT连接,上报数据
/*
payload格式
{
  "id": 123243,
  "params": {
    "temperature": 25.6,
    "humidity": 60.3,
    "ch2o": 0.048
  },
  "method": "thing.event.property.post"
}
*/
MqttMessage message = new MqttMessage(payload.getBytes("utf-8"));
message.setQos(1);

String pubTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";

mqttClient.publish(pubTopic, message);



2.4 云端控制台实时数据


设备启动后,可以在阿里云IoT云端控制台, 设备管理->运行状态 查看设备当前的实时数据


3. 源代码


GitHub 传送门:   https://github.com/iot-blog/aliyun-iot-android-things-nxp



展开
收起
游客886 2018-06-26 16:27:01 13757 0
2 条回答
写回答
取消 提交回答
  • Re谷歌Android things接入阿里云IoT物联网套件
    emm,Package com.aliyun.iot.androidthings requires unavailable shared library com.google.android.things; failing!]
    另小白绝望
    2019-03-08 16:26:49
    赞同 展开评论 打赏
  • 学习了!
     
    2018-08-27 15:22:14
    赞同 展开评论 打赏

物联网领域前沿技术分享与交流

相关产品

  • 物联网平台
  • 相关电子书

    更多
    58同城Android客户端Walle框架演进与实践之路 立即下载
    Android组件化实现 立即下载
    蚂蚁聚宝Android秒级编译——Freeline 立即下载