PR

Arduino学習⑩ Lesson11 温度湿度センサー
Arduinoのお勉強。DHT11という温度湿度センサーを使ってみた。

Arduino学習

Lesson11 温度湿度センサー

このレッスンでは、DHT11を使って温度と湿度の読み取り方を学習します。温度湿度センサー専用に設計されたライブラリを使用して簡単な実験をしてみます。(少し地味かもです)

必要な部品

必要な部品は以下になります。

  • Elegoo UNO R3 x 1
  • DHT11 Temperature and Humidity module x 1
  • F-M Jumper Wire x 3

温度湿度センサー(Temperature and humidity sensor)

このデジタル温度湿度センサーは、温度と湿度の校正されたデジタル信号出力を含む複合センサーです。私も原理は、これまで知らなかったですが、使うにあたって少し調べてみました。(わかりやすかった説明のみで理解しています)

温度センサは、温度が高くなると電気が流れやすくなり(抵抗値が下がる)、温度が低くなると電気がながれにくくなる(抵抗値が上がる)という特性を利用して、計測器に流れる電気の量を測ることで温度を知ることができるという仕組みだそうです。

湿度センサは、空気中の水分を感湿材料が吸湿/脱湿すること抵抗値が変化するのを利用して、電極を繋いで抵抗値を測ることで湿度を計測します。(こちらは抵抗式、他にも容量式というものがり、こちらは、感湿材料の静電容量を計測して湿度を計測します。)

温湿度センサ(THD11)

回路をつくってみる

それでは実際に回路をつないでみます。

チュートリアルにある回路図

特徴的な青格子状のものを写真のように上にした状態で、一番上のピンをD2(インプット)、真ん中を5V、一番下をGNDに繋ぎます。

プログラムを動かしてみる

チュートリアルに付属のコードを利用して実際に動かしてみる。

サンプルコードを動かすにあたって必要なSimpleDHTライブライルをインストールします。

インストールするSimpleDHTライブラリ

実行する前にインストールします。スケッチ⇒ライブラリのインクルードでインストールしたライブラリを使います。

ライブラリのインクルード
//www.elegoo.com
//2018.10.25


#include <dht_nonblocking.h>
#define DHT_SENSOR_TYPE DHT_TYPE_11

static const int DHT_SENSOR_PIN = 2;
DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );



/*
 * Initialize the serial port.
 */
void setup( )
{
  Serial.begin( 9600);
}



/*
 * Poll for a measurement, keeping the state machine alive.  Returns
 * true if a measurement is available.
 */
static bool measure_environment( float *temperature, float *humidity )
{
  static unsigned long measurement_timestamp = millis( );

  /* Measure once every four seconds. */
  if( millis( ) - measurement_timestamp > 3000ul )
  {
    if( dht_sensor.measure( temperature, humidity ) == true )
    {
      measurement_timestamp = millis( );
      return( true );
    }
  }

  return( false );
}



/*
 * Main program loop.
 */
void loop( )
{
  float temperature;
  float humidity;

  /* Measure temperature and humidity.  If the functions returns
     true, then a measurement is available. */
  if( measure_environment( &temperature, &humidity ) == true )
  {
    Serial.print( "T = " );
    Serial.print( temperature, 1 );
    Serial.print( " deg. C, H = " );
    Serial.print( humidity, 1 );
    Serial.println( "%" );
  }
}
実際に実行したときのシリアルモニタ

実行するとシリアルモニタに現在の温度(T)と湿度(H)が表示されます。

以上

コメント

タイトルとURLをコピーしました