Arduinoを使用したプロジェクトにおいて、環境センサーとディスプレイを組み合わせることは、リアルタイムでデータを視覚化するための効果的な方法です。
本記事では、DHT11温度・湿度センサーとLCD1602ディスプレイをArduino Uno R4 Minimaに接続し、測定した温度と湿度のデータをLCDに表示するシステムの構築方法について詳しく解説します。
今回、ハードウェアはSunFounderから発売されている「Ultimate Sensor Kit with Original Arduino Uno R4 Minima」を使用します。
本キットはコントローラーとなるArduino Uno R4 Minimaを始めとしたセンサー、基板、配線などがすべて含まれたオールインワンのスターターキットです。
初心者でも簡単に取り組めるよう、必要なハードウェア、ソフトウェア、接続方法、そしてプログラムの詳細について順を追って説明していきます。
本記事は製品をSunFounder様よりご提供頂き作成しています。
SunFounder Ultimate Sensor Kit with Original Arduino Uno R4 Minimaとは?
SunFounder Ultimate Sensor Kit with Original Arduino Uno R4 Minimaは、電子工作に興味を持つ初心者からプロフェッショナルまで様々なアプリケーションの作成に必要なハードウェアがパッケージ化されたスターターキットです。
このキットには、マイコンボードArduino Uno R4 Minima本体をはじめ、様々なセンサーとアクチュエータが含まれており、幅広いプロジェクトに対応できます。
キット内容
キットには以下のようなセンサーアクチュエータが多数含まれています。
Arduino Uno R4 Minima
Arduino UNO R4 Minimaは、Renesas製RA4M1マイクロコントローラを搭載した32ビットマイコンボードです。
このボードは、クロック速度48 MHz、256 kBのフラッシュメモリ、32 kBのSRAMを提供します。また、内蔵の12ビットDAC、CANバス、リアルタイムクロック(RTC)、HIDサポートを備え、USB-Cポートも搭載しています。
動作電圧は5Vですが、入力電圧範囲は6〜24Vに対応しています。従来のUNOボードと同じフォームファクタとピン配置を維持し、既存のシールドとの互換性を保ちつつ、高い性能を発揮します
センサーモジュール
キットには以下のようなセンサモジュールが含まれています。
- 超音波センサーモジュール(HC-SR04)
- ガス/煙センサーモジュール(MQ2)
- 炎センサーモジュール
- 振動センサーモジュール(SW-420)
- 加速度センサー & ジャイロスコープモジュール(MPU6050)
- フォトレジスタモジュール
- IR 赤外線障害物回避センサーモジュール
- 容量性土壌湿度モジュール
- 雨滴検出モジュール
- 温度と湿度センサーモジュール(DHT11)
- PIRモーションモジュール(HC-SR501)
- 温度、湿度、気圧センサー(BMP280)
- 脈拍酸素計および心拍数センサー(MAX30102)
- リアルタイムクロックモジュール(DS1302)
- タッチセンサモジュール
- 赤外線速度センサモジュール(LM393)
- 飛行時間(ToF)マイクロLiDAR距離センサ(VL53L0X)
アクチュエータ
キットには以下のようなアクチュエータモジュールが含まれています。
- サーボモータ(SG90)
- 遠心ポンプ
- TTモーター
- 5V リレーモジュール
- パッシブブザーモジュール
ユーザーインタフェース
キットには以下のようなUIモジュールが含まれています。
- ボタンモジュール
- ポテンショメータモジュール
- ジョイスティックモジュール
- I2C LCD 1602
- OLEDディスプレイモジュール
- 信号機モジュール
- RGB モジュール
通信モジュール
キットには以下のような通信モジュールが含まれています。
- ESP8266モジュール
- JDY-31 Bluetooth モジュール
日本国内で技適を取得していないモジュールは使用できませんのでご注意ください。
- 多様なプロジェクトに対応: 多数のセンサーとモジュールを使用することで、環境モニタリング、ホームオートメーション、ロボット工学など、さまざまなプロジェクトに対応可能です。
- 教育向けに最適: 詳細なプロジェクトガイドと豊富なドキュメントが提供されており、教育機関や個人の学習に最適です。(日本語ドキュメント完備)
- 高い互換性: Arduino Uno R4 Minimaを中心に設計されているため、既存のArduinoプロジェクトやライブラリと高い互換性があります。
Ultimate Sensor Kit with Original Arduino Uno R4 Minimaの入手先
Ultimate Sensor Kit with Original Arduino Uno R4 MinimaはAmazonかSunfounder公式サイトで入手可能です。
Amazon
Amazonの以下のページから購入することができます。
SunFounder公式サイト
SunFounder公式サイトから購入できます。(日本にも発送してもらえます)
公式サイトでは頻繁にセールが行われており安く入手できることがありますので、チェックしてみてください。
使用するハードウェア
DHT11温度・湿度センサー
DHT11は、温度と湿度の両方を測定できるセンサーで、デジタル信号でデータを出力します。非常にコストパフォーマンスに優れており、家庭用環境モニタリングなどの用途で広く使用されています。以下はDHT11の主な特徴です:
- 温度測定範囲:0〜50°C
- 湿度測定範囲:20〜90%RH
- 電源電圧:3.3V〜5V
- 出力形式:デジタル信号(単一のデータピン)
LCD1602ディスプレイ
LCD1602は、16文字×2行の表示が可能な液晶ディスプレイで、I2Cインターフェースを使用することで少ないピン数で制御が可能です。I2Cインターフェースを使用すると、データの送受信がシリアル通信形式で行われ、Arduinoのデジタルピンを多く使わずに済みます。以下はLCD1602の主な特徴です:
- 表示サイズ:16文字×2行
- インターフェース:I2C
- 電源電圧:5V
- バックライト:オン/オフ可能
Arduinoとの接続
以下のテーブルは、DHT11センサーとLCD1602ディスプレイをArduino Uno R4 Minimaに接続する際の信号の接続を示しています。
コンポーネント | DHT11ピン | LCD1602ピン | Arduinoピン |
---|---|---|---|
電源 | VCC | VCC | 5V |
グランド | GND | GND | GND |
データ | Data | N/A | Digital Pin 2 |
I2Cデータ (SDA) | N/A | SDA | A4 |
I2Cクロック (SCL) | N/A | SCL | A5 |
これにより、DHT11センサーから取得した温度と湿度のデータをLCD1602ディスプレイに表示することができます。Arduinoのデジタルピン2をDHT11のデータピンに接続し、LCD1602のI2CインターフェースはArduinoのアナログピンA4とA5に接続します。
必要なライブラリのインストール
DHT11センサーとLCD1602ディスプレイをArduinoで使用するには、以下のライブラリをインストールする必要があります。それぞれのライブラリは、Arduino IDEのライブラリマネージャーから簡単にインストールできます。
1. DHTライブラリのインストール
DHTライブラリは、DHT11センサーから温度と湿度のデータを読み取るために使用されます。以下の手順でインストールできます:
- Arduino IDEを開きます。
- メニューから「スケッチ」→「ライブラリを含める」→「ライブラリマネージャー」を選択します。
- 「ライブラリマネージャー」の検索ボックスに「DHT」と入力します。
- 「DHT sensor library by Adafruit」を見つけて、「インストール」ボタンをクリックします。
2. LiquidCrystal_I2Cライブラリのインストール
LiquidCrystal_I2Cライブラリは、I2Cインターフェースを介してLCD1602ディスプレイを制御するために使用されます。以下の手順でインストールできます:
- Arduino IDEを開きます。
- メニューから「スケッチ」→「ライブラリを含める」→「ライブラリマネージャー」を選択します。
- 「ライブラリマネージャー」の検索ボックスに「LiquidCrystal_I2C」と入力します。
- 「LiquidCrystal I2C by Frank de Brabander」などを見つけて、「インストール」ボタンをクリックします。
作成したソースコード
Arduino Uno R4 MinimaでDHT11温度・湿度センサーから値を取得してLCDに表示するプログラムの処理内容を解説します。
コード解説
- ライブラリのインクルード
- 必要なライブラリ (
Wire.h
,LiquidCrystal_I2C.h
,DHT.h
) をインクルードします。
- 必要なライブラリ (
- 定数とオブジェクトの定義
- DHT11センサーのデータピンをデジタルピン2に設定 (
#define DHTPIN 2
)。 - DHT11センサーのタイプを指定 (
#define DHTTYPE DHT11
)。 - DHTオブジェクトを作成 (
DHT dht(DHTPIN, DHTTYPE)
)。 - LCDオブジェクトを作成 (
LiquidCrystal_I2C lcd(0x27, 16, 2)
)。
- DHT11センサーのデータピンをデジタルピン2に設定 (
- setup()関数
- シリアル通信を初期化 (
Serial.begin(9600)
)。 - LCDを初期化、クリア、バックライトをオンにする (
lcd.init()
,lcd.clear()
,lcd.backlight()
)。 - DHT11センサーを初期化 (
dht.begin()
)。 - LCDに初期メッセージを表示
- 1行目に「Temp:」を表示 (
lcd.setCursor(0, 0); lcd.print("Temp: ")
)。 - 2行目に「Humidity:」を表示 (
lcd.setCursor(0, 1); lcd.print("Humidity: ")
)。
- 1行目に「Temp:」を表示 (
- シリアル通信を初期化 (
- loop()関数
- 温度を摂氏で読み取る (
float temp = dht.readTemperature()
)。 - 湿度を読み取る (
float humidity = dht.readHumidity()
)。 - 読み取りに失敗した場合
- シリアルモニタにエラーメッセージを表示 (
Serial.println("Failed to read from DHT sensor!")
)。 - LCDにエラーメッセージを表示 (
lcd.setCursor(6, 0); lcd.print("Error "); lcd.setCursor(10, 1); lcd.print("Error ")
)。 - 関数を終了して再試行する。
- シリアルモニタにエラーメッセージを表示 (
- 読み取りに成功した場合
- 温度をLCDに表示 (
lcd.setCursor(6, 0); lcd.print(temp); lcd.print(" C ")
)。 - シリアルモニタに温度を表示 (
Serial.print("Temperature: "); Serial.print(temp); Serial.println(" C")
)。 - 湿度をLCDに表示 (
lcd.setCursor(10, 1); lcd.print(humidity); lcd.print(" % ")
)。 - シリアルモニタに湿度を表示 (
Serial.print("Humidity: "); Serial.print(humidity); Serial.println(" %")
)。
- 温度をLCDに表示 (
- 2秒間待機してから次の測定を行う (
delay(2000)
)。
- 温度を摂氏で読み取る (
これらのステップを通じて、温度と湿度の測定値をリアルタイムでLCDに表示します。
作成した全体のソースコード
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 2 // DHT11 data pin connected to digital pin 2
#define DHTTYPE DHT11 // DHT11 sensor type
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600); // シリアル通信を初期化
lcd.init(); // initialize the LCD
lcd.clear(); // clear the LCD display
lcd.backlight(); // make sure backlight is on
dht.begin(); // initialize the DHT11 sensor
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
}
void loop() {
// Read temperature as Celsius
float temp = dht.readTemperature();
// Read humidity
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
if (isnan(temp) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
lcd.setCursor(6, 0);
lcd.print("Error ");
lcd.setCursor(10, 1);
lcd.print("Error ");
return;
}
// Display temperature
lcd.setCursor(6, 0);
lcd.print(temp);
lcd.print(" C ");
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
// Display humidity
lcd.setCursor(10, 1);
lcd.print(humidity);
lcd.print(" % ");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
delay(2000); // Wait a few seconds between measurements
}
実行結果
掲載したコードを実際にArduino Uno R4に書き込んで実行すると以下のようにリアルタイムに温度と湿度を表示することができました。
まとめ
今回のプロジェクトでは、Arduino Uno R4 MinimaとDHT11温度・湿度センサー、LCD1602ディスプレイを使用して、リアルタイムで環境データを表示するシステムを構築しました。
必要なライブラリのインストールからハードウェアの接続、プログラムの実装まで、一通りの手順を解説しました。
このシステムは、家庭やオフィスでの環境モニタリングに役立つだけでなく、Arduinoの基礎を学ぶための優れた教材ともなります。
次のステップとして、さらに高度なセンサーやディスプレイを追加して、より多機能な環境モニタリングシステムを作成してみるのも良いでしょう。
コメント