[Java]谷歌Android things开发板接入阿里云IoT

本文详细介绍了使用NXP7开发板、DHT12温湿度传感器和ZE08甲醛传感器,结合阿里云IoT物联网平台进行环境监测的全过程。从硬件清单到设备端开发,再到数据上报,提供了详细的代码示例和步骤说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.硬件清单

设备列表
图片
备注
淘宝链接
NXP 7 开发板
​​
​可用树莓派代替
2017谷歌开发者大会赠品
甲醛
ze08-CH2O
​https://item.taobao.com/item.htm?id=528771500519
温湿度 DHT12
​https://detail.tmall.com/item.htm?id=556508855729

2.硬件接线

image.png | left | 497x334

3.阿里云IoT物联网平台开发

3.1 开通IoT产品

image.png | left | 747x469

3.2 创建产品

image.png | left | 747x342

3.3 产品物模型定义

属性名标识符数据类型描述
温度temperaturefloatDHT12传感器采集
湿度humidityfloatDHT12传感器采集
甲醛浓度ch2odoubleZE08传感器采集

image.png | left | 747x402

4.设备端开发

4.1 Android things工程配置

网络访问权限
<uses-permission android:name="android.permission.INTERNET" />
mqtt依赖
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

4.2 传感器数据获取

通过I2C读取DHT12数据(DHT12Thermometer)
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);
        }

    }
通过UART获取ZE08数据(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);
}

4.3 通过MQTT连接阿里云IoT,上报数据

建立Mqtt连接
mqttClient = new MqttAndroidClient(getApplicationContext(),url, clientId, new MemoryPersistence());
MqttConnectOptions connOpts = new MqttConnectOptions();
// MQTT 3.1.1
connOpts.setMqttVersion(4);
connOpts.setAutomaticReconnect(true);
connOpts.setCleanSession(true);
connOpts.setUserName(mqttUsername);
connOpts.setPassword(mqttPassword.toCharArray());
connOpts.setKeepAliveInterval(60);

mqttClient.connect(connOpts);
上报传感器数据
String payload = String.format(payloadJson, String.valueOf(System.currentTimeMillis()), df.format(thermometer.getTemperature()), df.format(thermometer.getHumidity()), df.format(ze08Ch2o.getCh2o()));

MqttMessage message = new MqttMessage(payload.getBytes("utf-8"));
message.setQos(1);

mqttClient.publish(pubTopic, message);

5. 设备运行

image.png | left | 747x365

6.相关资料

硬件相关
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值