阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 9061阅读
  • 2回复

[技术交流]谷歌Android things接入阿里云IoT物联网套件

级别: 管理员
发帖
142
云币
261

谷歌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工程,添加网络权限
  1. <uses-permission android:name="android.permission.INTERNET" />


b) gradle引入eclipse.paho.mqtt
  1. implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
c) 通过I2C读取DHT12数据
  1. private void readDataFromI2C() {
  2.         try {
  3.             byte[] data = new byte[5];
  4.             i2cDevice.readRegBuffer(0x00, data, data.length);
  5.             // check data
  6.             if ((data[0] + data[1] + data[2] + data[3]) % 256 != data[4]) {
  7.                 humidity = temperature = 0;
  8.                 return;
  9.             }
  10.             // humidity data
  11.             humidity = Double.valueOf(String.valueOf(data[0]) + "." + String.valueOf(data[1]));
  12.             Log.d(TAG, "humidity: " + humidity);
  13.             // temperature data
  14.             if (data[3] < 128) {
  15.                 temperature = Double.valueOf(String.valueOf(data[2]) + "." + String.valueOf(data[3]));
  16.             } else {
  17.                 temperature = Double.valueOf("-" + String.valueOf(data[2]) + "." + String.valueOf(data[3] - 128));
  18.             }
  19.             Log.d(TAG, "temperature: " + temperature);
  20.         } catch (IOException e) {
  21.             Log.e(TAG, "readDataFromI2C error " + e.getMessage(), e);
  22.         }
  23.     }
d) 通过UART获取Ze08CH2O数据
  1. try {
  2.                 // data buffer
  3.                 byte[] buffer = new byte[9];
  4.                 while (uartDevice.read(buffer, buffer.length) > 0) {
  5.                     if (checkSum(buffer)) {
  6.                         ppbCh2o = buffer[4] * 256 + buffer[5];
  7.                         ch2o = ppbCh2o / 66.64 * 0.08;
  8.                     } else {
  9.                         ch2o = ppbCh2o = 0;
  10.                     }
  11.                     Log.d(TAG, "ch2o: " + ch2o);
  12.                 }
  13.             } catch (IOException e) {
  14.                 Log.e(TAG, "Ze08CH2O read data error " + e.getMessage(), e);
  15.             }
e) 创建阿里云IoT连接,上报数据
  1. /*
  2. payload格式
  3. {
  4.   "id": 123243,
  5.   "params": {
  6.     "temperature": 25.6,
  7.     "humidity": 60.3,
  8.     "ch2o": 0.048
  9.   },
  10.   "method": "thing.event.property.post"
  11. }
  12. */
  13. MqttMessage message = new MqttMessage(payload.getBytes("utf-8"));
  14. message.setQos(1);
  15. String pubTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";
  16. mqttClient.publish(pubTopic, message);



2.4 云端控制台实时数据


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


3. 源代码


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



本帖最近评分记录: 1 条评分 云币 +1
xchm 云币 +1 ECS云服务器2折起,1年¥293起  https://dwz.cn/qxEL96bj 02-21
级别: 程序猿
发帖
497
云币
745
只看该作者 沙发  发表于: 2018-08-27
学习了!
 
[ 此帖被服务器云在2018-11-26 23:13重新编辑 ]
级别: 新人
发帖
1
云币
1
只看该作者 板凳  发表于: 03-08
Re谷歌Android things接入阿里云IoT物联网套件
emm,Package com.aliyun.iot.androidthings requires unavailable shared library com.google.android.things; failing!]
另小白绝望
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)