Arduinoを使用した2つのHTU21DF湿度・温度センサーの追加

Arduinoを使用した2つのHTU21DF湿度・温度センサーの追加

このチュートリアルでは、Arduinoを使用して2つのHTU21DF温湿度センサーを接続して使用する方法を学びます。HTU21DFセンサーは、その高精度と低消費電力で知られており、さまざまな用途に最適です。このチュートリアルの終わりには、両方のセンサーから温度と湿度の値を読み取ってシリアルモニターに表示できるようになります。

HTU21D module

まず、このプロジェクトに関与するハードウェアコンポーネントについて簡単に説明します。HTU21DFセンサーはI2Cで通信し、電源とグラウンド接続に加えてわずか2本のデータラインが必要です。Arduinoはセンサーデータを読み取り、結果をシリアルモニターに表示するため、リアルタイムで温度と湿度の変化を観察することができます。

配線およびコーディングプロセスをより明確に理解するために、関連するビデオ(ビデオの01:30で)を見ることを検討してください。詳細に探っていきましょう!

ハードウェアの説明

このプロジェクトの主なコンポーネントはHTU21DFセンサーで、温度と相対湿度を測定します。このセンサーはI2C通信を使用して動作し、データラインが2本だけで済むため配線が簡単になります。温度は-40°Cから125°Cまで、湿度は0%から100%の範囲で、解像度は0.04%です。

センサーがアクティブに測定していないときは、わずか0.04µAを消費し、バッテリー駆動のアプリケーションに適しています。測定中は、消費電流は約400µAで、ほとんどのプロジェクトにとってはまだ比較的低いです。

データシートの詳細

メーカーTEコネクティビティ
品番HTU21DF
論理/入出力電圧1.5 - 3.6 V
供給電圧3.3 V
出力電流(チャネルごと)0.4 mA (測定中)
ピーク電流(チャンネルあたり)450 µA(最大)
PWM周波数ガイダンス該当しない
入力ロジックのしきい値0.3 x VDD0.7 x VへDD
電圧降下 / RDS(on)/ 飽和度N/A
熱的限界-40°Cから+125°C
パッケージ6ピンDFN
ノート / バリアント異なるパッケージサイズで利用可能

  • 電源供給:最適なパフォーマンスのために3.3 Vを推奨します。
  • SCLをI2Cクロックピン(Arduino UNOのA5)に接続します。
  • SDAをI2Cデータピン(Arduino UNOのA4)に接続します。
  • 適切な配線を確保してフローティング入力を避けてください。
  • 測定中の電流消費を監視して、バッテリー寿命を管理します。
  • I2Cラインに必要に応じてプルアップ抵抗を使用することを検討してください。

配線指示

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

HTU21DFセンサーを配線するには、まずVを接続します。CC各センサーのピンをArduinoの3.3 Vピンに接続します。次に、各センサーのGNDピンを共通のグラウンドに接続します。I2C通信のために、両方のセンサーのSDAピンをArduinoのA4ピンに接続し、SCLピンをA5ピンに接続します。センサーが適切に電源供給されていることを確認し、通信を円滑にするためにデータ接続が確実であることを確認してください。

追加のセンサーやコンポーネントを使用している場合、それらの配線がI2Cバスに干渉しないことを確認してください。HTU21DFセンサーは、同じI2Cバスに並列接続でき、Arduinoが両方のセンサーからデータを混乱なく読み取ることができます。

コード例とウォークスルー

以下のコードはHTU21DFセンサーを初期化し、その温度と湿度の値を読み取ります。まず、必要なライブラリを含め、両方のセンサーのインスタンスを作成します。

#include 
#include "Adafruit_HTU21DF.h"

Adafruit_HTU21DF htu1 = Adafruit_HTU21DF(); // create object for first sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF(); // create object for second sensor

上記のコードは、必要なライブラリを設定し、2つのセンサーオブジェクトを作成します。htu1htu2各センサーから独立してデータを読み取るために使用される。

次に、setup()関数では、シリアルモニターを初期化し、センサーが接続されているかどうかを確認します:

void setup() {
  Serial.begin(9600);
  if (!htu1.begin() || !htu2.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

このコードのセクションは、9600ボーでシリアル通信を初期化し、両方のセンサーが正常に機能しているかを確認します。センサーが検出されない場合、エラーメッセージを表示し、プログラムを停止します。

メインループでは、両方のセンサーから温度と湿度の値を読み取り、それを表示します:

void loop() {
    float temp1 = htu1.readTemperature();
    float rel_hum1 = htu1.readHumidity();
    float temp2 = htu2.readTemperature();
    float rel_hum2 = htu2.readHumidity();

    Serial.print("Sensor 1 Temp: "); Serial.print(temp1); Serial.print(" C");
    Serial.print("\tSensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
    Serial.print("Sensor 2 Temp: "); Serial.print(temp2); Serial.print(" C");
    Serial.print("\tSensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
    delay(500);
}

このループは、両方のセンサーから温度と湿度を500ミリ秒ごとに継続的に読み取り、表示します。環境条件に応じて値がどのように変化するかを観察できます。

デモンストレーション / 期待すること

コードを実行すると、シリアルモニターに両方のセンサーの温度と湿度の値が表示されます。ヒートガンなどの熱を加えることで、温度の読み取り値が上昇する一方で湿度レベルが低下する様子を観察できます(動画の12:30)。温度が最大測定限界の125°Cを超えると、センサーはゼロまたはエラーを返す可能性があり、値を読み取れないことを示します。

配線エラー、例えば逆接続やフローティング入力に注意してください。これらは不正確な読み取りにつながる可能性があります。このチュートリアルに記載されている手順に従うことで、HTU21DFセンサーを成功裏に実装し、その読み取りを効果的に監視できるはずです。

ビデオのタイムスタンプ

  • 00:00- はじめに
  • 01:30- 配線の説明
  • 02:45- コードの説明
  • 12:30- ヒートガンによるデモンストレーション
  • 14:00- 結論

画像

thumb_robojax_HTU21DF_types-1756423961-8524
thumb_robojax_HTU21DF_types-1756423961-8524
Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
212-Arduino code using HTU21D-F Humidity & Temperature Sensor (basic)
言語: C++
コピーしました!

必要かもしれないもの

リソースと参考文献

ファイル📁

データシート(pdf)