谷歌Android things物联网硬件接入阿里云IoT物联网套件云端实战
1.硬件设备
1.1 项目设备列表
设备名 | 图片 | 备注 | 购买地址 |
NXP Pico i.MX7D开发板 | Android things系统1.0 | 谷歌开发者大会赠送可以用树莓派替代 | |
DHT12温湿度传感器 | I2C数据通信方式 | 淘宝 | |
ZE08-CH2O甲醛检测传感器 | UART数据通信方式 | 淘宝 |
属性名 | 标识符 | 数据类型 | 描述 |
温度 | temperature | float | DHT12传感器采集 |
湿度 | humidity | float | DHT12传感器采集 |
甲醛浓度 | ch2o | double | ZE08传感器采集 |
<uses-permission android:name="android.permission.INTERNET" />
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);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。