メインコンテンツまでスキップ

温度を測定する - Wio Terminal

このレッスンのこの部分では、Wio Terminalに温度センサーを追加し、そこから温度値を読み取ります。

ハードウェア

Wio Terminalには温度センサーが必要です。

使用するセンサーはDHT11湿度および温度センサーで、1つのパッケージに2つのセンサーが組み合わされています。これは非常に人気があり、温度、湿度、時には気圧を組み合わせた市販のセンサーが多数あります。温度センサーコンポーネントは負の温度係数(NTC)サーミスタで、温度が上昇すると抵抗が減少するサーミスタです。

これはデジタルセンサーであり、温度と湿度のデータを含むデジタル信号を作成するためのオンボードADCを備えており、マイクロコントローラーが読み取ることができます。

温度センサーを接続する

Grove温度センサーはWio Terminalのデジタルポートに接続できます。

タスク - 温度センサーを接続する

温度センサーを接続します。

A grove temperature sensor

  1. Groveケーブルの一端を湿度および温度センサーのソケットに挿入します。これは一方向にしか入りません。

  2. Wio Terminalをコンピューターや他の電源から切断した状態で、Groveケーブルのもう一方の端をWio Terminalの画面を見たときの右側のGroveソケットに接続します。これは電源ボタンから最も遠いソケットです。

The grove temperature sensor connected to the right hand socket

温度センサーをプログラムする

Wio Terminalは、接続された温度センサーを使用するようにプログラムできます。

タスク - 温度センサーをプログラムする

デバイスをプログラムします。

  1. PlatformIOを使用して新しいWio Terminalプロジェクトを作成します。このプロジェクトをtemperature-sensorと呼びます。setup関数にシリアルポートを構成するコードを追加します。

    ⚠️ 必要に応じて、プロジェクト1、レッスン1のPlatformIOプロジェクトの作成手順を参照できます。

  2. Seeed Grove湿度および温度センサーライブラリの依存関係をプロジェクトのplatformio.iniファイルに追加します:

    lib_deps =
    seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1

    ⚠️ 必要に応じて、プロジェクト1、レッスン4のPlatformIOプロジェクトにライブラリを追加する手順を参照できます。

  3. 既存の#include <Arduino.h>の下に、次の#includeディレクティブをファイルの先頭に追加します:

    #include <DHT.h>
    #include <SPI.h>

    これは、センサーと対話するために必要なファイルをインポートします。DHT.hヘッダーファイルにはセンサー自体のコードが含まれており、SPI.hヘッダーを追加することで、アプリがコンパイルされるときにセンサーと通信するために必要なコードがリンクされることが保証されます。

  4. setup関数の前に、DHTセンサーを宣言します:

    DHT dht(D0, DHT11);

    これは、Digital HumidityおよびTemperatureセンサーを管理するDHTクラスのインスタンスを宣言します。これは、Wio Terminalの右側のGroveソケットであるD0ポートに接続されています。2番目のパラメーターは、使用しているセンサーがDHT11センサーであることをコードに伝えます。使用しているライブラリは、このセンサーの他のバリアントもサポートしています。

  5. setup関数内で、シリアル接続を設定するコードを追加します:

    void setup()
    {
    Serial.begin(9600);

    while (!Serial)
    ; // シリアルが準備完了するのを待つ

    delay(1000);
    }
  6. 最後のdelayの後、setup関数の最後にDHTセンサーを開始する呼び出しを追加します:

    dht.begin();
  7. loop関数内で、センサーを呼び出し、シリアルポートに温度を出力するコードを追加します:

    void loop()
    {
    float temp_hum_val[2] = {0};
    dht.readTempAndHumidity(temp_hum_val);
    Serial.print("Temperature: ");
    Serial.print(temp_hum_val[1]);
    Serial.println ("°C");

    delay(10000);
    }

    このコードは、2つの浮動小数点数の空の配列を宣言し、これをDHTインスタンスのreadTempAndHumidity呼び出しに渡します。この呼び出しは、配列に2つの値を入力します - 湿度は配列の0番目の項目に入り(C++の配列は0ベースであることを覚えておいてください。したがって、0番目の項目が配列の「最初」の項目です)、温度は1番目の項目に入ります。

    温度は配列の1番目の項目から読み取られ、シリアルポートに出力されます。

    🇺🇸 温度は摂氏で読み取られます。アメリカ人のために、これを華氏に変換するには、読み取った摂氏値を5で割り、次に9を掛け、次に32を加えます。例えば、20°Cの温度読み取り値は((20/5)*9) + 32 = 68°Fになります。

  8. コードをビルドしてWio Terminalにアップロードします。

    ⚠️ 必要に応じて、プロジェクト1、レッスン1のPlatformIOプロジェクトの作成手順を参照できます。

  9. アップロードが完了したら、シリアルモニターを使用して温度を監視できます:

    > Executing task: platformio device monitor <

    --- 使用可能なフィルターとテキスト変換: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- 詳細はhttp://bit.ly/pio-monitor-filtersで確認できます
    --- /dev/cu.usbmodem1201でのMiniterm 9600,8,N,1 ---
    --- 終了: Ctrl+C | メニュー: Ctrl+T | ヘルプ: Ctrl+Tの後にCtrl+H ---
    Temperature: 25.00°C
    Temperature: 25.00°C
    Temperature: 25.00°C
    Temperature: 24.00°C

💁 このコードはcode-temperature/wio-terminalフォルダーにあります。

😀 あなたの温度センサープログラムは成功しました!