PR

ArduinoとDHT11もどきで温度と湿度を測定してみる

arduino-dht11-eyecatch

今回は、ArduinoとDHT11もどきを使って温度と湿度を計測してみました。

DHT11もどきと呼んでいる理由ですが、

私がもっているのはどれも電子工作キットにセットとして入っていた代物で

秋月電子などで単品購入したものではありません。

なので変な中国語がシルク印刷されてます…

機能としては一緒なので気にせず使っていきますが、

同じような境遇の人の情報になるとうれしいです!

この記事を読むことでわかること

温度・湿度計のDHT11をArduinoで使えるようになる。

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

それでは早速必要なものと配線図、ソースコードをご紹介していきます。

Arduinoで温度と湿度を測定するのに必要なもの

今回の温度と湿度の測定に必要なものをまとめました。

今回使用したもの
  • Arduino本体
  • ArduinoとPCをつなぐケーブル
  • ブレッドボード
  • デュポンケーブル
  • 10kΩ程度の抵抗
  • DHT11

一つずつ説明していきます。

Arduino本体

 わたしはArduinoは激安の互換機を使用しています。
2つで1000円台と超激安です。

 純正のArduinoUNOだと1個で3000円くらいしますからね…
複数個持っておいて、どこかで運用しながら片方は開発用として確保しておく。
なんて使い方もできるので、意外と複数個もっているのも悪くないと考えています。

ちなみにわたしが使っているのはこれです。

↓↓↓↓

ArduinoとPCをつなぐケーブル

 PCとArduinoの接続方法ですが、
無線接続はできませんから、USBケーブルを使って有線で接続します。

 その場合、有線だとUSBケーブルの長さによっては、
必ずしもPCの近くにArduinoが設置できない場合がありますよね。

 それに、Arduinoとセンサーを接続するとき、
Arudinoは離れていても、センサーは手元に来てほしい場合が多いですよね。

 センサーの線を伸ばすのはあまり現実的ではないので、
やはりArduinoを手元に持ってくる必要があります。
先ほど紹介したようなArduinoに付属してくるUSBケーブルだとちょっと短いんです…

 そんな問題の対策として、わたしは長いケーブルを使用しています。

 このケーブルは1.8mです。
これだけあれば足元にあるデスクトップパソコンから余裕をもって机の上まで配線できます。

 机の上にノートパソコンがあって、
そのままArduinoにつなぐ場合は不満はないのですが、
先ほどお伝えしたように、Arduino本体に付属してくるケーブルは
20cm程度ですから、使い勝手があまりよくありません。
もし、デスクトップPCなど、少し離れたところのPCと接続するなら、
長いケーブルを別途購入することをオススメします。

ブレッドボード

前回の記事のLEDの点灯の時は、
13番pinとGNDpinを直接つないだので配線周りのパーツは必要ありませんでした。

 今回は少し配線関係をしないといけないです。
そんな時便利なのがブレッドボードです。

 ブレッドボートとは、半田などなしで電気配線ができる優れものです。
穴がたくさんあいていて、そこに後ほど紹介するデュポンケーブル(ジャンパーワイヤー)
を挿して配線することができるので、あっという間に配線作業が終わります。
ArduinoやRaspberryPiの開発環境ではよく使われています。

 ブレッドボードの選び方ですが、経験からお伝えしておくと、
高くても質が良いものを選んだほうが良いです。オススメのメーカーは日本のサンハヤトです。

 わたしが実際に安物を購入して失敗した話をこちらにまとめています。

デュポンケーブル

 ブレッドボードを使用するときに必要なケーブルです。
オスとメスがあって、Arduinoのpinにさして、反対側をブレッドボードにさしてつかったり、
センサーのpinをメス側で接続して反対側をブレッドボードにさすこともできます。

 さきほどもお伝えしましたが、はんだをしないで配線ができるため、
配線の効率が天と地ほど差があります。

 ただし、デメリットもあります。
穴にピンを挿しているだけですから、強い衝撃があると抜ける可能性があります。
振動や衝撃が発生することがわかっているのであれば、
ユニバーサル基板にはんだ付けするのが無難です。

10kΩ程度の抵抗

 今回使うDHT11ですが、プルアップ抵抗が必要になります。
いわゆるノイズ対策です。不安定にならないように抵抗を間にかませます。

 ただし、DHT11そのものはプルアップの抵抗が必要ですが、
モジュール化されてすでに抵抗が一体になっている製品もあります。

 ですから、ご自身のDHT11は抵抗が必要か確認する必要があります。

DHT11

 これがないと今回の温度と湿度を測定することができません。
こちらは2個セットですが、単品購入も可能です。

 ↑このDHT11はプルアップ抵抗が必要です。
先ほど抵抗のところでお伝えしたように、
例えばこちらのDHT11↓↓であれば、基板上にプルアップ抵抗が仕込まれていますから、
抵抗は使わずに測定可能です。

実は上の4点は電子工作キットを購入すると…

 実はArduino本体とPCにつなぐケーブルも含めて、セットで販売しているものもあります。
例えばこんなの↓↓↓

 いわゆるセット販売というやつです。
このセットであればArduinoも入っていますから、
周りでArduinoを使った電子工作を始めてみたい人への
プレゼントなんかにもいいかもしれないです。

 わたしもArduinoを始めた時は、
こういったセット商品を買ったので、Arduinoを触り始めた時には
DHT11もすでに手元にありました。

 もちろんそれぞれ単品でそろえてもいいのですが、
モジュール単体でそろえていくと、どうしても割高になります。

 それに加えて、使うときに買い足すのは時間もかかるし効率悪いです….
個人的には、モータやLCD(デジタルで文字表示できるもの)が入っているもののほうが
拡張性が高くていいかなと思っています。

 例えばこんなスターターキットですね。

Arduinoで温度と湿度を測定するための配線図

 それでは、道具がそろったところで配線です。
配線はこちらのようにしました。

 わたしのDHT11が乗っているモジュールは、水色のパーツを手前にした状態で、
左から順に

  • GND
  • DATA
  • VCC

と表示されていました。
これが異なることはめったにないと思いますが、一応念のため確認してみてください。

ArduinoとDHT11の配線

 抵抗が入っていますが、こちらがプルアップ用の抵抗です。
モジュール化されてプルアップ用の抵抗が
基板上に配置されている場合には、この抵抗は不要です。

Arduinoで温度と湿度を測定するためのソースコード

 わたしの場合はArduinoの2番PinにDHT11のData端子が入るようにしました。
配線の仕方によってはこの番号が変わりますので、注意してください。

 また、DHTというライブラリが必要になりますので、
IDEのライブラリの追加から、DHTのライブラリを追加しておいてください。

 DHT-sensor-library-master.zip

 こんな名前のライブラリがあるはずです。
これをImportしましょう。

#include "DHT.h" //ライブラリ読み込み
#define DHT_Pin 2 //DHT11のDATAPinをさすPin番号
#define DHT_Type DHT11 //DHTの種類からDHT11を使用すると定義する
DHT dht(DHT_Pin, DHT_Type); //DHT11を初期化
float humidity = 0.0f; //湿度を入れる箱
float temp= 0.0f; //温度を入れる箱
void setup() {
Serial.begin(9600); //シリアル通信のボーレートを9600bpsに指定
dht.begin(); //DHT11使用開始
}
void loop() {
delay(3000); //3秒待つ。データ読み出しが早すぎるとエラーになる。
humidity = dht.readHumidity(); //湿度の読み出し
temp = dht.readTemperature(); //温度の読み出し
/* 読み取れたかどうかのチェック */
if (isnan(humidity) || isnan(temp) ) {
Serial.println("Can't Read!");
return;
}
Serial.print("Hum:,"); //,を入れているのはCSVで処理するときに便利なため。
Serial.print(humidity);
Serial.println("[%]");
Serial.print("Temp:,"); 
Serial.print(temp);
Serial.println("[℃]");
}

Arduinoで温度と湿度を測定してみた結果

結果としては、シリアル監視のウィンドウを開くとこんな感じになります。

Arduinoで温度と湿度を測定した結果

湿度だいぶ高めです…あってるのかな…

温度はそんなもんかな。という感じですが、湿度はちょっと怪しいです。

今回のまとめ

今回はDHT11をArduinoで制御して温度と湿度の取得を行いました。

RaspberryPiで以前やったことがあるのでそこまで抵抗なくできました。

ちょっとライブラリを使うのに手間取りましたが、

一回覚えてしまえばほかのライブラリも簡単に導入できそうです。

ライブラリっていつも思いますが、助かりますよね…

コメント

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