全部產品
Search
文件中心

IoT Platform:Android Things接入物聯網平台

更新時間:Jun 30, 2024

本文檔以室內空氣檢測專案為例,介紹如何將GoogleAndroid Things物聯網硬體接入阿里雲物聯網平台。

硬體裝置

  • 專案裝置列表

    下表中為室內空氣檢測所需的硬體裝置:

    裝置裝置圖片備忘

    NXP Pico i.MX7D

    開發板

    Android Things

    基於Android things系統1.0。

    如需更多協助,請參見NXP Pico i.MX7D I/O官網介面文檔:開發人員指南

    說明 該硬體可以用樹莓派替代。詳細內容,請參見遠端控制樹莓派伺服器

    DHT12

    溫濕度感應器

    Android Things採用I2C資料通訊方式。

    ZE08-CH2O

    甲醛檢測感應器

    Android Things採用UART資料通訊方式。
  • 裝置接線示意圖
    Android Things
    • 將溫濕度感應器(DHT12)的時鐘訊號線引腳SCL和資料線引腳SDA分別與開發板的I2C匯流排的SCL和SDA引腳相接。
    • 將甲醛檢測感應器(ZE08-CH2O)的發送資料引腳TXD與開發板的接收資料引腳RXD相接;將ZE08-CH2O的接收資料引腳RXD與開發板的發送資料引腳TXD相接。

建立阿里雲物聯網平台產品和裝置

  1. 登入阿里雲物聯網平台控制台
  2. 建立產品。
    1. 執行個體概覽頁面,找到對應的執行個體,單擊執行個體進入執行個體詳情頁面。
      重要 目前日本(東京)地區開通了企業版執行個體服務。其他地區,請跳過此步驟。
      執行個體概覽
    2. 在左側導覽列,單擊裝置管理,選擇產品
    3. 產品頁,單擊建立產品進入產品建立流程。詳情操作,請參見建立產品
  3. 定義物模型。
    1. 在產品建立成功頁面,單擊前往定義物模型
    2. 產品詳情頁的功能定義頁簽下,單擊編輯草稿 > 添加自訂功能
    3. 添加以下屬性。
      屬性名稱標識符資料類型取值範圍描述
      溫度temperaturefloat-50~100DHT12溫濕度感應器採集的溫度資料。
      濕度humidityfloat0~100DHT12溫濕度感應器採集的濕度資料。
      甲醛濃度ch2odouble0~3ZE08甲醛檢測感應器採集的甲醛濃度。
    4. 單擊發布上線發布物模型。
  4. 建立裝置。

    裝置頁面,單擊添加裝置,在產品下建立裝置。詳情操作,請參見單個建立裝置

開發Android things裝置

  1. 使用Android Studio建立Android things工程,添加網路許可權。
    <uses-permission android:name="android.permission.INTERNET" />
  2. 在gradle中添加eclipse.paho.mqtt
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
  3. 配置通過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);
            }
    
        }
  4. 配置通過UART擷取甲醛檢測感應器Ze08-CH2O的資料。
    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);
                }
  5. 建立阿里雲物聯網平台與裝置端的串連,上報資料。
    /*
    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 pubTopYourPc = "/sys/${YourProductKey}/${YourDeviceName}/thing/event/property/post";
    
    mqttClient.publish(pubTopic, message);

請訪問GitHub阿里雲IoT ,下載完整的樣本工程代碼。

查看即時資料

裝置啟動後,登入物聯網平台控制台,找到裝置詳情頁,在運行狀態頁簽下,查看裝置當前的即時屬性資料。

Android Things