Cette rubrique explique comment connecter un appareil matériel Google Android Things à Alibaba Cloud IoT Platform, en prenant pour exemple un projet de surveillance de la qualité de l'air intérieur.
Matériel
-
Liste du matériel pour le projet
Ce projet nécessite le matériel suivant.
Appareil
Image
Remarques
Carte de développement NXP Pico i.MX7D

Basé sur Android Things 1.0.
Pour plus d'informations, consultez le Guide du développeur pour les E/S NXP Pico i.MX7D.
RemarqueVous pouvez utiliser un Raspberry Pi comme alternative. Pour plus d'informations, consultez Contrôler à distance un serveur Raspberry Pi.
Capteur de température et d'humidité DHT12

Utilise le protocole I2C pour la communication des données.
Capteur de détection de formaldéhyde ZE08-CH2O

Utilise le protocole UART pour la communication des données.
-
Schéma de câblage

Connectez les broches SCL (signal d'horloge) et SDA (données) du capteur DHT12 aux broches SCL et SDA correspondantes du bus I2C sur la carte de développement.
Connectez la broche TXD (transmission des données) du capteur ZE08-CH2O à la broche RXD (réception des données) de la carte de développement, et la broche RXD du capteur à la broche TXD de la carte.
Créer un produit et un appareil
Connectez-vous à la console IoT Platform.
-
Créez un produit.
-
Sur la page Instance Overview, localisez l'instance cible et cliquez sur son nom pour accéder à la page Instance Details.
ImportantLes instances Enterprise Edition sont disponibles uniquement dans les régions Japon (Tokyo). Si votre instance se trouve dans une autre région, ignorez cette étape.
Connectez-vous à la console IoT Platform. Dans le volet de navigation de gauche, cliquez sur Instance Overview pour afficher les instances Enterprise Edition de la région actuelle et leur statut.
Sur la page Instance Overview, consultez l'état d'exécution des instances Enterprise Edition de la région actuelle, y compris le type d'instance (Standard), l'environnement (environnement de production/environnement de test), le nombre d'appareils en ligne et les informations de quota TPS pour les messages entrants et sortants.
Dans le volet de navigation de gauche, choisissez Device Management > Products.
Sur la page Products, cliquez sur Create Product. Pour plus d'informations, consultez Créer un produit.
-
-
Définissez un modèle TSL.
Une fois le produit créé, cliquez sur Define TSL Model.
Sur la page Product Details, sous l'onglet Define Feature, cliquez sur .
-
Ajoutez les propriétés suivantes.
Propriété
Identifiant
Type
Valeur
Description
Température
temperature
float
-50–100
Données de température collectées par le capteur de température et d'humidité DHT12.
Humidité
humidity
float
0–100
Données d'humidité collectées par le capteur de température et d'humidité DHT12.
Concentration de formaldéhyde
ch2o
double
0–3
Concentration de formaldéhyde collectée par le capteur ZE08-CH2O.
Cliquez sur Publish pour publier le modèle TSL.
-
Créez un appareil.
Sur la page Device, cliquez sur Add Device pour créer un appareil sous un produit. Pour plus d'informations, consultez Créer un seul appareil.
Développer l'appareil Android Things
-
Utilisez Android Studio pour créer un projet Android Things et ajoutez l'autorisation Internet au fichier manifeste.
<uses-permission android:name="android.permission.INTERNET" /> -
Dans le fichier Gradle, ajoutez la dépendance
eclipse.paho.mqtt.implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0' -
Configurez l'appareil pour lire les données du capteur de température et d'humidité DHT12 via I2C.
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); } } -
Configurez l'appareil pour lire les données du capteur de détection de formaldéhyde Ze08-CH2O via UART.
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); } -
Connectez l'appareil à IoT Platform et envoyez les données.
/* Payload format { "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/${YourProductKey}/${YourDeviceName}/thing/event/property/post"; mqttClient.publish(pubTopic, message);
Pour obtenir l'exemple de code complet, téléchargez le projet depuis Alibaba Cloud IoT sur GitHub.
Afficher les données en temps réel
Une fois l'appareil démarré, connectez-vous à la console IoT Platform. accédez à la page Device Details. Sous l'onglet Status, consultez les données de propriété en temps réel de l'appareil.