プロジェクト24:温湿度センサー

プロジェクト24:温湿度センサーで環境モニタリング

このプロジェクトで学ぶこと: DHTセンサーを使って温度と湿度を同時に取得し、LCDに表示する方法を学びます。複数の学習済み技術(センサー・LCD・ライブラリ)を組み合わせた実用的な環境モニターを作ります。


完成イメージ

[LCDに現在の温度と湿度がリアルタイムで表示されているデモ写真を挿入]


必要な部品

部品名 数量
Arduino Uno R3 1
DHT11 温湿度センサー 1
LCD1602モジュール(I2C) 1
抵抗 10kΩ(プルアップ) 1
ブレッドボード 1
ジャンパー線 多数

回路図と配線

[回路図画像を挿入]

配線手順

  1. DHT11の VCC5VピンGNDGNDピンDATA2番ピン に接続する
  2. DATAピンと5Vの間に 10kΩプルアップ抵抗 を接続する
  3. LCD1602(I2C)はプロジェクト09と同様に SDA→A4、SCL→A5 に接続する

事前準備:ライブラリのインストール

ライブラリマネージャーで「DHT sensor library by Adafruit」をインストールする(依存ライブラリ「Adafruit Unified Sensor」も一緒にインストール)。


Arduinoスケッチ(プログラム)

// 温湿度センサー+LCD表示の環境モニター

#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define DHT_PIN  2
#define DHT_TYPE DHT11

DHT dht(DHT_PIN, DHT_TYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  dht.begin();
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
}

void loop() {
  float humidity    = dht.readHumidity();
  float temperature = dht.readTemperature();  // 摂氏

  // 読み取り失敗チェック
  if (isnan(humidity) || isnan(temperature)) {
    lcd.clear();
    lcd.print("Sensor Error");
    delay(2000);
    return;
  }

  // LCD表示
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature, 1);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Humi: ");
  lcd.print(humidity, 1);
  lcd.print(" %");

  // シリアルモニタにも出力
  Serial.print("温度: ");
  Serial.print(temperature);
  Serial.print("℃  湿度: ");
  Serial.print(humidity);
  Serial.println("%");

  delay(2000);  // DHT11は最短2秒間隔でしか読み取れない
}

コードのポイント解説

isnan(値) センサーの読み取りに失敗するとNaN(Not a Number)が返ります。isnan()でチェックすることでエラー表示の処理を分岐できます。プログラムを安定して動かすための「防御的プログラミング」の基本です。

dht.readTemperature()dht.readHumidity() DHTライブラリが1本の信号線のシリアル通信(独自プロトコル)を自動で処理します。ライブラリがなければ数十行のタイミング制御コードが必要です。

DHT11の制約 DHT11は2秒に1回しか測定できません。delay(2000)以上の間隔で読み取ることが必要です。より高精度・高速なDHT22もほぼ同じコードで使えます。


動作確認

  1. スケッチをアップロードする
  2. LCDに温度と湿度が表示されれば成功(室温20〜30℃、湿度30〜70%程度が正常範囲)
  3. センサーに息を吹きかけると湿度が上昇することを確認する

このプロジェクトで学んだこと

  • 複合センサーの扱い: 温度・湿度を1デバイスから同時取得する方法を習得しました
  • エラーハンドリング: isnan()でセンサー読み取り失敗を検出する防御的プログラミングを学びました
  • 技術の統合: 複数のライブラリ・デバイスを組み合わせたシステム構築力を養いました

次のプロジェクト「RTCで時計」では、リアルタイムクロックモジュールで正確な時刻を管理します。


深掘り:技術の背景と社会への広がり

湿度センサーの発展:木の毛が温度計になった時代から

湿度計測の歴史は1783年にオラス・ベネディクト・ド・ソシュールが毛髪の伸縮を利用した毛髪湿度計を発明したことに始まります。人の髪は湿度が高くなると伸び、乾燥すると縮む性質があり、これをセンサーとして利用しました。電子式の湿度センサーは1940年代に登場し、現在のDHTセンサーは電気容量(静電容量)の変化で湿度を計測するキャパシタンス式が主流です。

食品安全・医療・気候変動対策への応用

温湿度センサーの社会的応用は非常に幅広いです。食品工場の冷蔵倉庫ではHACCP(食品安全管理)の要件として温湿度の継続的な記録が義務付けられており、異常時の自動アラートが食中毒事故を防いでいます。医療分野では手術室・ICUの環境管理が患者の感染リスク低減に直結します。気候変動研究では世界10万カ所以上の気象観測ステーションが温湿度データを継続収集し、IPCC報告書の科学的根拠となっています。あなたが今日作った環境モニターは、こうした社会インフラの最小単位です。


プロジェクト23:ステッピングモータードライバー全プロジェクト一覧 | 次のプロジェクト:RTCで時計 →