レッスン36:LCDとHTU21D温度センサーを使ったArduinoのステップバイステップコース

レッスン36:LCDとHTU21D温度センサーを使ったArduinoのステップバイステップコース

HTU21D温湿度センサーは、その使いやすさと精度から、多くのArduinoプロジェクトで人気の選択肢です。このレッスンでは、センサーから温度と湿度データを読み取り、LCD画面に表示するシンプルなプロジェクトを構築します。このチュートリアルの終わりまでに、摂氏、華氏、ケルビンで温度を継続的に表示し、相対湿度のパーセンテージも表示する動作セットアップが完成します。詳細については、動画を参照してください(動画のmm:ssで)。

ハードウェアの解説

このプロジェクトの主なコンポーネントは、I2C経由で通信するHTU21D温度湿度センサーです。このセンサーは1.5ボルトから3.6ボルトの電圧範囲内で動作し、3.3Vおよび5Vシステムの両方に適しています。アイドル時には通常わずか0.02マイクロアンペア、測定中には450マイクロアンペアという非常に少ない電力を消費します。 HTU21Dに加えて、LCD1602をI2Cで使用するLCDディスプレイも使用します。このディスプレイはテキストデータの出力を簡単に行うことができ、通信にはSDA(データライン)とSCL(クロックライン)の2つのピンのみを必要とします。これらのコンポーネントの組み合わせにより、温度と湿度レベルを監視するための情報表示を作成することが可能になります。

データシートの詳細

製造業者TEコネクティビティ
部品番号HTU21D-F
論理/IO電圧1.5 - 3.6 V
供給電圧3.3 V(典型)
出力電流(典型値)0.02 µA(アイドル)、450 µA(測定)
温度範囲-40から+125℃
湿度範囲0から100 %RH
解像度 (温度)0.01 °C
解像度(湿度)0.04 %RH
パッケージDFN-6

  • SDAおよびSCLラインが統合されていない場合は、プルアップ抵抗を使用してください。
  • センサーが損傷しないように、正しい電源電圧を確保してください。
  • 適切な配線を維持して、通信エラーを防ぎます。
  • センサーが応答しない場合は、I2Cアドレスを確認してください。
  • 読み取りの間に遅延を使用して、センサーの過負荷を防ぎます。
  • LCDがI2C通信に対応していることを確認してください。

配線指示

HTU21DセンサーとLCDディスプレイを配線するには、まず電源接続から始めます。HTU21Dの左端子を3.3V電源に接続し、2番目の端子(通常は赤)をグラウンドに接続します。次に、HTU21DのSDA端子をArduinoのアナログ端子A4に接続し、SCL端子をアナログ端子A5に接続します。 LCD1602ディスプレイについては、VCC端子を同じ3.3V電源に接続し、GND端子をグラウンドに接続します。LCDのSDA端子もA4に接続し、SCL端子はA5に接続して、両方のコンポーネントがI2Cバスを共有できるようにします。すべての接続がしっかりと固定されていることを確認して、Arduino、センサー、およびディスプレイ間の適切な通信を促進します。

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

次のコードはHTU21DセンサーとLCDディスプレイを初期化します。セットアップ関数では、LCDを使用するために準備し、センサーの接続を確認します。

void setup() {
  lcd.begin();
  lcd.backlight();
  if (!htu.begin()) {
      lcd.print("Robojax HTUD1DF");
      lcd.setCursor(0,1);
      lcd.print("sensor missing"); 
      while (1);
  } else {
      lcd.print("Robojax HTUD1DF");
      lcd.setCursor(0,1);
      lcd.print("Demo"); 
  }
  delay(2000);   
}

この抜粋では、センサーが正しく接続されているかどうかを確認します。接続されていない場合は、LCDにエラーメッセージを表示し、プログラムを停止します。センサーが機能している場合は、2秒間デモメッセージを表示します。 ループ関数は、主要な読み取りと表示が行われる場所です。ここでは、温度を異なる単位で表示するために `lcdDisplay` 関数を呼び出します。

void loop() {
   lcd.clear(); // clear previous values from screen
   lcdDisplay(0, 0, "Celsius: ", 10, 0, getHTU('C'), 'd');  
   lcdDisplay(0, 1, "Fahrenheit: ", 10, 1, getHTU('F'), 'd');     
   delay(5000);
}

このループでは、LCDがクリアされ、摂氏と華氏の温度読み取り値が表示されます。`getHTU`関数は、それぞれ摂氏のために文字 'C'、華氏のために 'F' で呼び出されます。 最後に、`getHTU`関数が定義され、入力文字に基づいて温度または湿度を読み取ります。

float getHTU(char type) {
   float temp = htu.readTemperature();
   float rel_hum = htu.readHumidity();
   if(type =='F') {
       return temp * 9/5 + 32; // convert to Fahrenheit 
   } else if(type =='K') {
       return temp + 273.15; // convert to Kelvin
   } else if(type =='H') {
       return rel_hum; // return relative humidity
   } else {
       return temp; // return Celsius
   }
}

この機能はセンサーから温度と湿度を読み取り、温度を要求された単位に変換します。追加の詳細については、記事の下に読み込まれた完全なコードを確認してください。

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

配線を完了し、コードをアップロードすると、LCDに温度と湿度の値が表示されるはずです。読み取り値は数秒ごとに更新され、現在の条件を反映します。センサーに熱を加えると、温度がそれに応じて上昇し、湿度はわずかに減少することに気付くでしょう。センサーの最大温度制限に注意してください。これを超えると、不正確な読み取りやセンサーの故障が発生する可能性があります(動画内の mm:ss)。

動画のタイムスタンプ

  • 00:00- プロジェクトの紹介
  • 01:15- 配線指示
  • 03:30- コードウォークスルー
  • 10:00- セットアップのデモ
511-Lesson 36: Using the HTU21D Temperature Sensor with an LCD and Arduino: A Step-by-Step Course
言語: C++
コピーしました!

必要かもしれないもの

ファイル📁

データシート(pdf)