温度湿度センサー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本足のモジュールも販売されているみたいです。