Nano 33 BLE Senseで温湿度センサ―

Nano 33 BLE Senseを用いて、周囲の温度と湿度を測定し、表示する方法を学びます。


AUTHOR: Jose Garcia、LAST REVISION: 2023/02/20 18:07


このチュートリアルでは、Arduino Nano 33 BLE Senseを用いて、周囲の温度と湿度を測定し、表示する方法を学びます。これは、内蔵HTS221センサーにより実現されます。

目的

このプロジェクトの目的は以下の通りです。

  • Arduino Nano 33 BLE Senseから生のセンサーデータを出力する方法を学びます。
  • HTS221ライブラリを使用します。
  • 温湿度が特定の範囲のときにだけ、シリアルモニターに表示します。
  • 温湿度モニターを作成します。

必要なハードウェアとソフトウェア

  • Arduino Nano 33 BLE Sense
  • このプロジェクトでは、外部のセンサーや機器を利用しません。
  • このチュートリアルでは、ボードのプログラムを記述するのに、Arduino Create Webエディタを利用します。

HTS221センサー

HTS221センサー

HTS221センサー

温度センサーは物理的な温度をデジタルデータに変換する部品です。同様に、湿度センサーは、大気中の湿度レベルを測定し、電子信号に変換することができます。このように、温湿度センサーは、特に高感度の電子機器の環境モニタリングに不可欠です。

HTS221は、相対湿度と温度用の超小型センサーです。センサーとの通信にはI2Cを使い、データを取得します。センサーの範囲は以下の通りです。

  • 湿度の精度: ±3.5% rH, 20 to +80% rH
  • 湿度の範囲: 0から100%
  • 温度の精度: ±0.5℃,15から+40℃

このようなセンサーは、思うほか広く使われていて、様々なモノの中に見つけることができます。

以下のようなアプリケーションが、センサーが利用される有効な方法です。

  • エアコン、暖房、換気
  • 加湿器
  • 冷蔵庫
  • ウェアラブルデバイス
  • スマートホームオートメーション
  • 産業オートメーション
  • 呼吸器(respiratory equipment)
  • 資産・物品の追跡

HTS221センサーの詳細を知りたければ、こちらを参照してください。

プログラム作成

  1. 設定

Arduino Webエディタを開き、Librariesタブをクリックし、HTS221ライブラリを探します。その後、> Examplesで、ReadSensorsスケッチを開きます。開いた後は、Temp_Humidityという名前に変更します。

Webエディタでライブラリを探す

Webエディタでライブラリを探す

  1. ボードを接続する

次に、Arduino Nano 33 BLE SenseをPCに接続し、Webエディタが認識することを確認します。すると、ポートとボードが以下の図で示すように現れます。現れない場合は、指示に従いエディタがボードを認識するためのプラグインをインストールしてください。

ボードを選択する

ボードを選択する

  1. 温度と湿度の値を表示する

ここでは、温度が最低0.5℃の変化するか、湿度が最低1.0%変化したときにだけ、温度と湿度の値を表示するように、スケッチ例を変更します。このため、以下の変数をsetup()関数の前で初期化します。

1
2
float old_temp = 0;
float old_hum = 0;

setup()では、センサーが適切に初期化されていない場合、if文内のHTW.begin()関数の結果により、文字列のメッセージを表示します。

そして、loop()内の、HTS.readTemperature()HTS.readHumidity()関数の後に、以下のコードを追加します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// check if the range values in temperature are bigger than 0,5 ºC
  // and if the range values in humidity are bigger than 1%
  if (abs(old_temp - temperature) >= 0.5 || abs(old_hum - humidity) >= 1 )
  {
    old_temp = temperature;
    old_hum = humidity; 
    // print each of the sensor values
    Serial.print("Temperature = ");
    Serial.print(temperature);
    Serial.println(" °C");
    Serial.print("Humidity    = ");
    Serial.print(humidity);
    Serial.println(" %");
    Serial.println();
  }

コードのこの箇所で、温度が0.5℃以上上昇・下降した場合か、湿度が1%以上、上下した場合に温度と湿度を表示します。

  1. 完全なコード

コード作成セクションをスキップした場合のために、完全なコードを以下に示します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
  HTS221 - Read Sensors

  This example reads data from the on-board HTS221 sensor of the
  Nano 33 BLE Sense and prints the temperature and humidity sensor
  values to the Serial Monitor once a second.

  The circuit:
  - Arduino Nano 33 BLE Sense

  This example code is in the public domain.
*/

#include <Arduino_HTS221.h>

float old_temp = 0;
float old_hum = 0;

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

  if (!HTS.begin()) {
    Serial.println("Failed to initialize humidity temperature sensor!");
    while (1);
  }
}

void loop() {
  // read all the sensor values
  float temperature = HTS.readTemperature();
  float humidity    = HTS.readHumidity();

  // check if the range values in temperature are bigger than 0,5 ºC
  // and if the range values in humidity are bigger than 1%
  if (abs(old_temp - temperature) >= 0.5 || abs(old_hum - humidity) >= 1 )
  {
    old_temp = temperature;
    old_hum = humidity;
    // print each of the sensor values
    Serial.print("Temperature = ");
    Serial.print(temperature);
    Serial.println(" °C");
    Serial.print("Humidity    = ");
    Serial.print(humidity);
    Serial.println(" %");
    Serial.println();
  }

  // print each of the sensor values
  Serial.print("Temperature = ");
  Serial.print(temperature);
  Serial.println(" °C");

  Serial.print("Humidity    = ");
  Serial.print(humidity);
  Serial.println(" %");

  // print an empty line
  Serial.println();

  // wait 1 second to print again
  delay(1000);
}

テスト

スケッチの検証とアップロードに成功したら、左側のメニューからモニターを開きます。新しい値が表示されるのがわかります。スケッチが動作しているのかを確かめるには、ボードに息を吹きかけ、温度や湿度が一定以上変化したときに新しい値が表示されるのかを確認します。以下の図にデータがどのように表示されるのかを示します。

シリアルモニターに温度と湿度が表示される

シリアルモニターに温度と湿度が表示される

トラブルシュート

エラーが起きることもあります。コードが動作しないときはいくつかの共通の問題があり、解決できます。

  • 括弧やセミコロンが抜けている。
  • Arduinoボードが、間違ったポートに接続されている。
  • ケーブル接続の予期しない切断。

おわりに

このチュートリアルで、HTS221ライブラリを使い、HTS221センサーから温度と湿度の値の読み方と、Arduino Nano 33 BLE Senseボードに内蔵されているセンサーの使い方、環境の温度と湿度を測定し表示する方法を学びました。

オリジナルのページ

https://docs.arduino.cc/tutorials/nano-33-ble-sense/humidity-and-temperature-sensor

最終更新日

March 12, 2023

inserted by FC2 system