DHT11使用 温度・湿度計の製作

温度湿度センサーDHT11は安価(秋月電子さんで300円)で、DATA端子1本のみでArduinoとシリアル通信ができ、温度と湿度の計測ができます。端子は4本ありますが、1本はNCで使いません。正面向かって左から2番目の端子がDATAで、この端子は10kΩ程度の抵抗でプルアップする(5Vに接続する)必要があります。今回は128×32ドットOLEDディスプレイで表示するようにしました。

実体配線図

上記のように接続しました。DHT11のDATA端子はArduinoのD8に接続しました。OLEDディスプレイはSDAをA4に、SCLをA5に接続します。

Arduinoのスケッチ

準備として、DHT11と1306のライブラリをそれぞれインストールしておきます。スケッチ>>ライブラリの管理でライブラリマネージャーを開き検索してインストールします。「DHT11」や「1306」ですぐに見つかると思います。

#include <DHT.h>              //DHT11ライブラリのヘッダファイル
#define PIN_DHT 8             //DHT11の信号線をD8端子に接続する定義
DHT dht( PIN_DHT, DHT11 );    //接続の設定
float temperature;
float percentHumidity;

#include <Wire.h>             //I2Cのヘッダファイル
#include <Adafruit_SSD1306.h> //SSD1306のヘッダファイル
Adafruit_SSD1306 display(-1); //RSTピンがない互換品を使用するので-1を指定

void setup() {

  dht.begin();

  display.begin(SSD1306_SWITCHCAPVCC,0x3C); //I2Cアドレスの設定
  display.setTextColor(WHITE);              //色の設定(白)
  display.setTextSize(2);                   //文字サイズ設定
  display.clearDisplay();                   //画面クリア

}

void loop() {

  delay(1000);    //1秒待ち(1000ms)

  percentHumidity = dht.readHumidity();  //湿度の読み込み
  temperature = dht.readTemperature();   //温度の読み込み
  
  display.clearDisplay();           //画面クリア   
  display.setCursor(0,0);           //左上にカーソルを移動
  display.print("T: ");             //文字列挿入
  display.print(temperature,1);     //文字列挿入
  display.println("[C]");           //文字列挿入
  display.print("H: ");             //文字列挿入
  display.print(percentHumidity,1); //文字列挿入
  display.println("[%]");           //文字列挿入
  display.display();                //描画バッファの内容を画面に表示

}
//ここまで

比較的、簡単に作ることができます。更に、プルアップ抵抗が組み込まれた3本足のモジュールも販売されているみたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*