温湿度センサー(DHT11) のアウトプットをグラフで表示

目的

目次

温湿度を取得して、Ambientにデータを送るコードをコピー

  1. 以下のコードをコピーします。
#include <Ambient.h>      // Ambient.h をインクルード
#include <DHT.h>          // DHT.h をインクルード
#include <WiFi.h>         // WiFi.h をインクルード
#define DHTPIN 22         // DHT センサーアウトプットピンの指定
#define DHTTYPE DHT11     // DHT型の指定
#define PERIOD 30         // delay の値を指定 (例:30 -> 30秒間間隔でデーターをAmbientに送信)
DHT dht(DHTPIN, DHTTYPE); // DHTセンサーライブラリーを使うための設定(インスタンス生成)
WiFiClient client;        // WiFiClientを使うための設定(インスタンス生成)
Ambient ambient;          // Ambientを使うための設定(インスタンス生成)

/***************************************/
/*** ここから 環境によって書き換える ***/
/***************************************/

//WiFi接続情報
const char* ssid     =  "<YOUR_SSID>";
const char* password =  "<YOUR_PASSWORD>";
//Ambient接続情報
unsigned int channelId =  <YOUR_CHANNEL_ID>;
const char* writeKey =  "<YOUR_WRITEKEY>";

void setup() {
    Serial.begin(115200);  // シリアル通信の速度を指定
    
    // Wi-Fiの初期化
    WiFi.begin(ssid, password);
    Serial.print("WiFi connecting");

    // Wi-Fiアクセスポイントへの接続待ち
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(500);
    }
    
    Serial.println(" connected"); // Wi-Fi に接続したらコンソール画面に connected を表示

    // チャネルIDとライトキーを指定してAmbientの初期化
    ambient.begin(channelId, writeKey, &client);
    
    dht.begin(); //  DHT11の初期化
}

void loop() {
  float temperature = dht.readTemperature(); // 温度読み取り
  float humidity = dht.readHumidity();   // 湿度読み取り

  // 読み取りに失敗しているかチェック
  // 失敗している場合はもう一度、温湿度の読み取りをする
  if (isnan(temperature) || isnan(humidity)) {
     Serial.println("Failed to read from DHT sensor!");
     return;
  }
    
  //  シリアルモニターに表示
  Serial.print("温度: ");
  Serial.print(temperature);
  Serial.print(" *C\t ");
  Serial.print("湿度: ");
  Serial.print(humidity);
  Serial.println(" %");

  // データーがint型かfloat型であれば、直接セットすることができます。
  // 1番目のデータに温度を指定。
  ambient.set(1, temperature); 
  
  // 2番目のデータに湿度を指定。
  ambient.set(2, humidity);
  
  // Ambientにデータを送信         
  ambient.send();                   
  
  // 30秒間待つ
  delay(PERIOD * 1000);             
}

スケッチにコピーしたコードを張り付ける

  1. 以下の内容を全て削除します。

  2. 上記でコピーしたコードを張り付けます。

  3. 張り付けた結果、以下のようになっていることを確認します。

  4. ファイル から 名前をつけて保存 をクリックします。

  5. ファイル名temperature_humidity_ambient と入力します。保存 をクリックします。

  6. 保存しました。 と表示されることを確認します。

WiFiの設定

  1. WiFi の ssidpassword を入力します。

Ambientの設定

  1. 先ほどコピーした Ambient の チャネルIDライトキー を貼り付けます。

コピーしたコードを検証-ビルド

  1. 検証(ビルド) をクリックし が表示される事を確認します。

ボードの選択

  1. ツール -> ボードNodeMCU-32S が選択されていることを確認します。

シリアルポートの選択

  1. ツール -> シリアルポートCOMx(xには1や2や3が入る) が選択されていることを確認します。

コピーしたコードをマイコンボードに書き込む-アップロード

  1. マイコンボードに書き込む をクリックし が表示される事を確認します。

結果をシリアルモニターに表示

  1. シリアルモニタ をクリックします。

  2. 以下のように温度、湿度が表示される事を確認します。

Ambientに送信したデータを確認

  1. Ambient を開いて、ログインする。

  2. チャネルxxxxx をクリックします。

  3. 以下のようなグラフが表示されていたら成功です。