三浦製作所

興味のあるものをとりあえず動かしてみた、実装してみたシリーズをガンガン上げていきたいと思います。あくまでも自身の備忘録としてですが、誰かの助けになったらうれしいです。

【低価格マイコン】【実装】Arduino Nanoで温湿度センサ (DHT-11)を動かす

f:id:bamboomush:20210207170142p:plain
 Arduino Nanoを用いて温湿度センサを実装したので、そのやり方について紹介したいと思います。

この記事を読むことで、安価なマイコンであるArduino Nanoで温湿度センサが実装できるようになります。

今回の温湿度センサはかなり安価なセンサで、高価なものと比べると性能は劣るものの、簡単なIoTモジュール、デバイスの開発ができ、室温の管理から、冷房の開発まで可能となります。

 

ESP32版はこちら

www.takeshi-1222.com

 

◆Arduino関係の実装記事◆ 
  • DCモータ実装

www.takeshi-1222.com

  •  サーボモータ実装

www.takeshi-1222.com

  • OLED実装

www.takeshi-1222.com

  • 超音波センサ実装

www.takeshi-1222.com

  • LCDディスプレイ実装

www.takeshi-1222.com

  • 温湿度センサ (ハイスペック)

www.takeshi-1222.com

  • 温湿度センサ (複数)

www.takeshi-1222.com

  • CO2センサ 

www.takeshi-1222.com

  • ほこりセンサ

www.takeshi-1222.com

 

Arduino Nano, DHT-11の簡単な説明

Arduino Nano

Arduino Nanoは超安価で購入ができるマイコンで、電気やプログラミングの深い知識を持っていない電子工作初心者でも扱いやすい、オープンソースマイコンです。

Arduinoと比較すると、性能は劣るものの、安価で広い用途で使用可能なので初心者に適しています。

ちなみに、上記が純正品ですが、互換品である以下も性能面では変わらないので強いこだわりがない限りは、互換品の方がおすすめです。

温湿度センサ (DHT-11)

温湿度センサはそのままの意味で、温度と湿度の計測が可能で、さらにそれらの値から不快感を測る指標である不快指数も算出することが可能です。また、かなり安価で入手が可能であるため、電子工作やIoT、DIYの初心者でも手が出しやすいものだと思います。

 

実験構成

 今回の実験に使用する部品は以下のものです。
  • Arduino Nano
  • 温湿度センサ (DHT-11)
  • ジャンパ線多数

Arduino Nano、温湿度センサは上記のものを使用しています。

 

ジャンパ線は何を使用してもいいですが、一応リンクを張っておきます。

実験

配線

まず配線は以下のようにします。

f:id:bamboomush:20210207171848p:plain

 

配線ができると以下のような画像のようになります。

f:id:bamboomush:20210207171903j:plain

実行コード

ここまで出来たら以下のコードを実行することで動作確認ができます。

//温湿度センサモジュールを使って温度、湿度を測定するスケッチ
#include "DHT.h" //ライブラリインクルード

#define DHT_Pin 2 //DHT11のDATAピンを定義
#define DHT_Type DHT11 //センサの型番定義 DHT11,DHT22など

DHT dht(DHT_Pin, DHT_Type); //センサ初期化

/* 計測値設定 */
float humidity = 0.0f; //湿度
float tempC = 0.0f; //摂氏温度
float tempF = 0.0f; //華氏温度
float discomfortIndex = 0.0f; //不快指数
bool isFahrenheit = true; //華氏読み出し引数にtrueを設定

void setup() {
Serial.begin(9600); //シリアル通信のデータ転送レートを9600bpsで指定。bpsはビット/秒。
Serial.println("DHT11 Lesson11"); //画面に表示
dht.begin(); //温湿度センサー開始
}

void loop() {
delay(2000); //2秒待つ データの読み出し周期1秒以上必要。

humidity = dht.readHumidity(); //湿度の読み出し
tempC = dht.readTemperature(); //温度の読み出し 摂氏
tempF = dht.readTemperature( isFahrenheit ); //温度の読み出し 華氏

/* 読み取れたかどうかのチェック */
if (isnan(humidity) || isnan(tempC) || isnan(tempF)) {
Serial.println("Read failure!");
return;
}

/* おまけ 不快指数計算 */
discomfortIndex = 0.81f * tempC + 0.01f * humidity * (0.99f * tempC - 14.3f) + 46.3f;

/* 以下読み取り値の表示 */
//Serial.print("湿度: ");
Serial.print(humidity);
//Serial.println("[%]");
//Serial.print("温度: "); 
Serial.print(" ");
Serial.print(tempC);
//Serial.println("[℃]");
//Serial.print("華氏: "); 
//Serial.print(tempF);
//Serial.println("[F]");
//Serial.print("不快指数: "); 
Serial.print(" ");
Serial.println(discomfortIndex);
}

今回は温度、湿度、不快指数をシリアルモニタで確認できるようにしています。

f:id:bamboomush:20210207172113j:plain


これらの値を使って、いろんなIoT機器を製作できるようになります。

まとめ

今回は、Arduino Nanoで温湿度センサを動かすために必要なものの紹介と、サンプルプログラムの紹介をしました。