ArduinoとDHT11もどきで温度と湿度を測定してみる | 技プログ
Youtubeでも活動中

チャンネル登録してくれたら喜びます。
リンクはフリーです。共有・拡散は大歓迎!

このボタンで簡単にチャンネル登録!
PR
ご注意

本ブログには、アフィリエイトを用いた広告が掲載された記事が含まれる場合があります。

ご注意

本ブログには、アフィリエイトを用いた広告が掲載された記事が含まれる場合があります。

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

arduino-dht11-eyecatch

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

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

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

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

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

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

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

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

自己紹介

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

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

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

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

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

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

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

PR

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

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

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

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

Arduino本体

わたしはArduinoは激安の互換機を使用しています。

2つで1000円台と超激安です。

純正のArduinoUNOだと1個で3000円くらいしますからね…

複数個持っておいて、どこかで運用しながら片方は開発用として確保しておく。

なんて使い方もできるので、意外と複数個もっているのも悪くないんじゃないかな。と

最近は思っています。

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

↓↓↓↓

ArduinoとPCをつなぐケーブル

PCとArduinoの距離関係なんですが、

必ずしもPCの近くにArduinoが設置できない場合ってありますよね。

それに、Arduinoから配線するわけですが、

配線するセンサーなどが手元に来ない場合もあります。

ちょっとそれでは不便ですよね…

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

大体1.8mです。これだけあれば足元にあるデスクトップパソコンから余裕で机の上まで配線できます。

はじめからArduino本体と一緒にケーブルは入っていたのですが、

長さとしては20cmくらいで使い勝手が悪かったんですよね。

机の上にノートパソコンがあって、

そのままArduinoにつなぐ場合は不満はないんですが…

ブレッドボード

前回の記事のLEDの点灯の時は、

13番pinとGNDpinを直接つないだので配線周りのパーツは必要なかったのですが、

今回は少し配線関係をしないといけないです。

そんな時便利なのがブレッドボードです。

ブレッドボートとは、半田などなしで電気配線ができる優れものです。

ArduinoやRaspberryPiの開発環境ではよく使われています。

デュポンケーブル

ブレッドボードを使用するときに必要なケーブルです。

オスメスがあって、Arduinoのpinにさして、反対側をブレッドボードにさしてつかったり、

センサーのpinをメス側で接続して反対側をブレッドボードにさす。

なんて使い方になります。

半田不要は効率が全然違います。

ただし、デメリットもあって強い衝撃があると抜ける可能性があります。

また、粗悪品のブレッドボードとデュポンケーブルの組み合わせをすると、

さすのが硬かったり、するするでゆるかったりバラツキがあったりします。

10kΩ程度の抵抗

今回使うDHT11ですが、プルアップ抵抗が必要になります。

いわゆるノイズ対策ですね。不安定にならないように

抵抗を間にかませます。

DHT11

これがないと今回の温度と湿度を測定することができません。

単品購入も可能です。

1個あたりの値段が異常に安いように見えますが、

電子パーツって実は1個1個そんなに高くないんですよね…

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

実はArduino本体とPCにつなぐケーブル以外は、セットで販売しているところが結構あります。

例えばこんなのです。

いわゆるセット販売というやつですね。

なんならこのセットに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("[℃]");
}
#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をコピーしました