おもしろ工作・プログラミング動画配信中!せでぃあのYouTube

Arduinoで温湿度センサDHT11を使ってI2C通信でLCDに値を表示させる!ブロックプログラミング(スクラッチベースmBlock)【Lesson17】

Arduinoで温湿度センサDHT11を使ってLCD(液晶ディスプレイ)表示させる!ブロックプログラミング(スクラッチベースmBlock)【Lesson17】
  • URLをコピーしました!

この記事内には、プロモーションが含まれます。

こんにちは、せでぃあ(@cediablog)です。

今回のArduinoプログラミングLESSON17では「温湿度センサDHT11を使った、LCD(液晶ディスプレイ)への温湿度値表示動作」を行います。

温湿度センサーDHT11
温湿度センサーDHT11

温湿度センサDHT11は3本の配線だけで、現在の温度と湿度値を取得できてしまう便利なデバイスです。

DHT11を使った温湿度表示の動作確認写真
LESSON17で紹介するプログラム動作です

今回は、その温湿度センサを使って液晶ディスプレイLCD1602に温湿度表示させるプログラムの作り方を紹介します。

液晶ディスプレイLCD1602の制御はI2Cを使ったシリアル通信を使います。

I2C通信を使った経験のない方は、まずはこちらの記事を読んでいただくことをおすすめします。

本記事は、プログラミングと電子パーツの知識が習得できるプログラミング初心者にも安心して読んでいただける内容になっています。

小学生、中学生も安心してプログラミングができるように、文字列を使わないブロックプログラミング方法についても動画付きで紹介しています。

せでぃあ

プログラミング初心者の方は、ブロックプログラミングから始めてみてください!

本記事では、スクラッチベースのビジュアルプログラミングツールmBlockとArduinoIDEプログラムどちらも紹介しています

本記事ではmBlockのアップロードモード「オン」でのプログラム例を紹介しています

無料のブロックプログラミングツールmBlockのインストール方法については、こちらの記事を参照してください。

この記事を読んでわかること
  • 温湿度センサDHT11を使った、LCDへの温湿度表示方法
  • Arduino IDEでのプログラミング方法
  • mBlockを使ったビジュアルプログラミング方法
この記事を書いた人
せでぃあ

せでぃあはこんな人物です

✅プライム企業に勤める電気・機械設計エンジニア

✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作

✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞

✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中

✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中

目次

温湿度センサDHT11について

温湿度センサDHT11のピン機能説明
温湿度センサDHT11への配線は3本のみ

今回使用する温湿度センサDHT11について、説明します。

DHT11は、電源線2本と信号線1本の計3本配線するだけで「温度」「湿度」どちらの値も、Arduinoに取り込むことができます。

また、温度・湿度の値は出荷前に実際の値と一定以内の誤差に収まるように、調整されています。

せでぃあ

この調整の事を、校正・キャリブレーションと言います。

DHT11はサンプリング速度が遅い

配線が少なくて、温度と湿度の両方の値が取得できる便利なセンサですが、欠点もあります。

それはデータ取得の周期(サンプリング周期)が2秒以上かかることです。

あからさまに、温湿度変化の反応が鈍いです。

それでも現在の部屋の温湿度値を見てみたいだけであれば、十分使えるデバイスですよ。

DHT11を使った温湿度値表示プログラム動作の説明

今回紹介する「温湿度センサDHT11を使った、LCD1602への温湿度値表示動作」について説明します。

動作説明とブロックプログラミング手順の解説動画
動画での解説内容
  • 温湿度センサ「DHT11」の機器説明
  • LCDへの温湿度表示動作
  • mBlockを使ったプログラミングの解説

まずは動画を見て、今回のLESSONで実行させたい動作内容を確認してください。

また、mBlockを使ったブロックプログラミングや動作確認方法についても解説しています。

せでぃあ

今回はプログラムボリュームも少なめなので、作りやすいですよ!

DHT11を使った、LCDへの温湿度表示回路の作り方

DHT11を使った、LCDへの温湿度表示回路を実行させるために必要な作業を解説します。

今回は文字列を使ったプログラム形式と、文字列を使わないブロックプログラミング形式について説明します。

あなたの作りたいプロブラム形式に対応した手順に応じて、対応してください。

プログラム形式に応じた開発環境

・文字列による命令語形式⇒ArduinoIDE
・スクラッチベースのビジュアル形式⇒mBlock

STEP
必要なものを準備

プログラミングするために、パソコンが必要です。

電子部品等の必要な機器については、このあと説明します。

STEP
Arduinoを使うためのセットアップ(Arduino IDEプログラミング時のみ)

パソコンに統合開発ソフトウェア「ArduinoIDE」のインストールを行います。

Arduinoのセットアップ方法については、以下の記事にて詳しく説明しています。

Arduino IDEでの言語プログラミングも勉強したい方は、プログラミングの流れを理解しておいてください。

以下の記事にて、プログラミングから動作確認までの流れを詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEのインストールは不要です。

STEP
mBlockでプログラミングするためのセットアップ(mBlockプログラミング時のみ)

パソコンにスクラッチベースのビジュアルプログラミングツール「mBlock」のインストールを行います。

以下の記事にて詳しく説明しています。

ArduinoIDEでプログラミングする場合は、mBlockのインストールは不要です。

STEP
電気配線

電子部品とジャンパーワイヤの差し込みだけで配線が可能です。

STEP
Arduino IDEプログラミング

専用開発ソフトウェア「Arduino IDE」を使います。

私が作成したプログラムをコピペして使ってください。

Arduino IDEプログラミングの基本操作については、こちらの記事にて詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEプログラミングは不要です。

STEP
mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockを使ってプログラムを作成します

プログラム内容については、後述するプログラミング例を参考にしてください。

ArduinoIDEでプログラミングする場合は、mBlockプログラミングは不要です。

STEP
動作確認

プログラムが完成したら動作確認を行います。

動作確認チェックリスト
  • 液晶ディスプレイに「温度」「湿度」が表示されるか?
  • 温度と湿度の値は、環境に応じて更新されるか?

DHT11は、機器の仕様上、温湿度値の更新に2秒以上かかります。

DHT11を使った、LCDへの温湿度表示回路で使うもの

DHT11を使った、LCDへの温湿度表示回路で使うもの
配線が完了しプログラム転送できる状態写真
準備するもの
  1. パソコン
  2. Arduino本体
  3. USBケーブル
  4. ブレッドボード
  5. 温湿度センサDHT11
  6. LCD1602モジュール
  7. I2Cモジュール
  8. ジャンパー線(オスーメス)×4本
  9. ジャンパー線(オスーオス)×5本

今回はELEGOO社のスーパースターターキットに含まれる部品で作ることができますが、Arduino裏面のショート対策としてクリアケースも併せて準備することをおすすめします。

【おすすめ】コスパ最強のArduinoキットの中間グレードです!

パソコン

プログラムを作成するために必要です。

プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。

パソコンのOSはWindows、Macどちらでも対応可能です。

Arduino本体【キット】

Arduino本体
Arduino本体

基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。

Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。

各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。

USBケーブル【キット】

必要なUSBケーブルの説明写真
USBケーブル

パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。

ブレッドボード【キット】

ブレッドボードの機能説明図
ブレッドボードの機能説明図

たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。

説明図は30列のショート版ですが、スーパースターターキットに含まれる63列タイプでも機能は同じです。

ブレッドボードだけの購入も可能です。

温湿度センサDHT11【キット】

温湿度センサーモジュール(DHT11)
温湿度センサーモジュール(DHT11)

温度と湿度を同時に計測できるタイプのセンサーです。

Arduinoのデジタル入出力ソケットに接続して、データのやり取りを行います。

LCD1602モジュール【キット】

LCD1602モジュール
LCD1602モジュール

液晶ディスプレイ「LCD(Liquid Crystal Display)」モジュールになります。

数字や文字などを表示させることが可能です。

I2Cモジュール

I2Cシリアルインタフェースボードモジュール
I2Cシリアルインターフェースボード

I2Cを使ってLCDを制御するために必要なモジュールです。

電源線2本と通信線2本の合計4本の配線だけで、LCDを制御することが可能になります。

ジャンパー線(オスーメス)【キット】

ジャンパー線(オス-メス)
ジャンパー線(オス-メス)

オス-メスジャンパー線を4本使用します。

I2CシリアルインターフェースボードとArduino本体を接続させるために使用します。

ジャンパー線(オスーオス)【キット】

キットに同梱されているジャンパー線(オスーオス)の説明
ジャンパー線

ジャンパー線を5本使用します。

Arduino本体とブレッドボードの接続や、ブレッドボードの共通電源ライン(GNDまたは5V)からブレッドボード内の配線系統穴に差し込んで接続するのに使います。

スターターキットに含まれる機器に関しては、以下の記事にて詳しく紹介しています。

配線のやり方

温湿度センサDHT11を使って値をLCDに表示させる配線状態写真
配線完了時の状態写真
温湿度センサDHT11を使って値をLCDに表示させる配線説明図
配線説明図(fritzingを用いて作成)

上図が配線説明図となりますので、これと同じ配線をすれば完成します。

機器が故障するおそれがあるので、接続するプラスマイナス極性には十分注意して配線してください。

機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください

プログラミングのやり方

本記事では、以下に示す「Arduino IDEプログラミング」と「mBlockプログラミング」の2通りのプログラミング方法について解説しています。

いずれか1つのプログラミング方法を用いることで、本LESSONの動作を行うことが可能です。

ArduinoIDE:文字列による命令語形式
mBlock:スクラッチベースのビジュアル形式

文字列を使わないmBlockの方が、直感的で分かりやすく小学生におすすめのプログラミング方法になります。

mBlockを使ってプログラミングをする方は、mBlockの説明まで読み飛ばしてください。

LiquidCrystal_I2Cライブラリのインストール

ArduinoIDEを使用した文字列プログラミングを行うためには、LiquidCrystal_I2Cライブラリのダウンロードとインストール作業が必要となります。

LiquidCrystal_I2Cライブラリのダウンロードとインストール方法を解説します。

mBlockでプログラミングをする場合は、本ライブラリインストール作業は不要です。

STEP
GitHubのサイトを開く
LiquidCrystal_I2Cライブラリのダウンロードサイトを開く。。

LiquidCrystal_I2Cライブラリのダウンロードサイトを開きます。

STEP
codeをクリックする
codeをクリックする。
STEP
ZIPファイルをダウンロードする
「Download ZIP」をクリックして、ZIPファイルをダウンロードする。

「Download ZIP」をクリックして、ZIPファイルをダウンロードします。

STEP
ArduinoIDEを開き、ライブラリをインストールする
ArduinoIDEを開き、ライブラリをインストールする。

ArduinoIDEを開き、「スケッチ」⇒「ライブラリをインクルード」⇒「.ZIP形式のライブラリをインストール…」の順に選択して、STEP3でダウンロードしたZIPファイルを選択。

インストールが行われ、ライブラリインストール作業が完了となります。

DHT sensor libraryのインストール

ArduinoIDEを使用した文字列プログラミングを行うためには、DHT sensor libraryのダウンロードとインストール作業が必要となります。

DHT sensor libraryのダウンロードとインストール方法を解説します。

mBlockでプログラミングをする場合は、本ライブラリインストール作業は不要です。

STEP
Arduino IDEを開いて、ライブラリの管理をクリックする
Arduino IDEを開いて、ライブラリの管理をクリックする。

Arduino開発環境である、Arduino IDEを開きます。

スケッチ⇒ライブラリインクルード⇒ライブラリを管理をクリックします。

STEP
ライブラリをインストールする
検索窓に「dht」と入力して、DHT sensor libraryをインストールする。

ライブラリマネージャーの検索窓に「dht」と入力し、DHT sensor libraryを探します。

インストールボタンをクリックして、ライブラリをインストールします。

STEP
ライブラリの依存関係をインストールする
ライブラリの依存関係をインストールする。

ライブラリの依存関係をインストールというポップアップウィンドウが開くので、「全てをインストール」ボタンをクリックします。

これで、DHT sensor libraryのインストールは完了です。

せでぃあ

mBlockでブロックプログラミングする場合は、これらのライブラリのインストール作業は不要です。

Arduino IDEプログラミング

Arduino IDEとは統合開発ソフトウェアで、C言語のような文字列を用いたプログラミング方法です。

プログラミングするにあたり、ある程度の命令語を知っておく必要があります。

Arduino IDEのインストール方法については、以下の記事で詳しく説明しています。

日本語版のArduino公式リファレンスが付属しているので関数を調べるときに重宝します!(私も所有しています)

プログラミング方法

Arduino IDEでのプログラミング画面
Arduino IDEでのプログラミング画面

Arduino IDEを使って、文字列プログラミングを行います。

Arduino IDEを使ったプログラミング~動作確認方法については、以下の記事で詳細説明しています。

Arduino IDEプログラム

/* 作品名:LESSON17 */
/* 作成者:せでぃあ https://cediablog.com */
/* 温湿度センサーDHT11の情報をLCD1602に表示させる */

#include <DHT.h>                // ライブラリのインクルード
#include <LiquidCrystal_I2C.h>  // ライブラリのインクルード

// DHT型変数の宣言
DHT dht(2, DHT11);  // DATAピンの接続先は2番ソケット、DHT11を接続

// LiquidCrystal_I2C型変数の宣言
LiquidCrystal_I2C lcd(0x27, 16, 2);  // 0x27のアドレス,16列2行のLCDを使用


void setup() {
  //プログラム起動時1回だけ処理される回路

  //温湿度センサーの読み取り動作開始
  dht.begin();

  //LCD初期化
  lcd.init();       // LCDの初期化
  lcd.backlight();  // LCDバックライトの点灯
}

void loop() {
  //プログラム起動後ループ処理される回路

  float temp = dht.readTemperature();  //温度データの代入
  float rh = dht.readHumidity();       //湿度データの代入

  //LCD上段に温度データを表示
  lcd.setCursor(0, 0);   // カーソルの位置を指定(1文字目、上段)
  lcd.print("Temp");     // 文字の表示
  lcd.setCursor(6, 0);   // カーソルの位置を指定(7文字目、上段)
  lcd.print(temp);       // 文字の表示
  lcd.setCursor(11, 0);  // カーソルの位置を指定(12文字目、上段)
  lcd.print("C");        // 文字の表示

  //LCD下段に湿度データを表示
  lcd.setCursor(0, 1);   // カーソルの位置を指定(1文字目、上段)
  lcd.print("%RH");      // 文字の表示
  lcd.setCursor(6, 1);   // カーソルの位置を指定(7文字目、上段)
  lcd.print(rh);         // 文字の表示
  lcd.setCursor(11, 1);  // カーソルの位置を指定(12文字目、上段)
  lcd.print("%");        // 文字の表示

  delay(100);  //0.1秒ウェイト
}

上記がI2Cを使った、LCD表示制御回路のプログラムになります。

Arduino IDEのプログラム画面にコピーアンドペーストすることで、動作確認まで進めることができます。

各プログラム列の右側にプログラム内容をコメント記入してありますので参考にしてください。

せでぃあ

各ライブラリの命令語については、このあと詳しく説明していきます

命令語の解説

今回のプログラムで使用した命令文について、解説します。

変数のデータ型指定

変数のデータ型を指定するものです。

今回はピンソケット番号を代入するので整数を扱う「int型」を指定します。

またアナログ出力値は「0~255」の整数を扱いますので、同じく「int型」を指定します。

スクロールできます
データ型説明扱える範囲
int2バイトの整数を代入可能。-32768~32767
long4バイトの整数を代入可能-2,147,483,648~2,147,483,647
float4バイトの小数を代入可能。3.4028235×1038~-3.4028235×1038
char1バイトの値を代入可能。文字列の代入に利用されます。-128~127
boolean0または1のみ代入可能。フラグのON-OFFなどに利用されます。0,1
データ型の説明

DHT sonsor libraryの説明

温湿度センサDHT11の制御をするために、「DHT sonsor library」を使用します。

このライブラリを使うだけで、簡単にデバイスが取得した温湿度データを扱うことができます。

DHT sonsor libraryの読み出し

プログラム冒頭の宣言部にてDHT sonsor libraryを読み出します。

#include <DHT.h>

DHT型変数の指定

プログラム冒頭の宣言部にてDHT型の変数を定義します。

DHT dht(DATAピン接続ソケット番号 , DHTセンサ型式)

変数「dht」は例であり、任意の変数文字列を指定してください

LiquidCrystal_I2Cライブラリの説明

今回はLCD1602の制御をするために、「LiquidCrystal_I2Cライブラリ」を使用します。

このライブラリを使うだけで、簡単にLCD表示を制御できます。

LiquidCrystal_I2Cライブラリの読み出し

プログラム冒頭の宣言部にてLiquidCrystalライブラリを読み出します。

#include <LiquidCrystal_I2C.h>

LiquidCrystal型変数の指定

プログラム冒頭の宣言部にてLiquidCrystal_I2C型の変数を定義します。

LiquidCrystal_I2C lcd(I2Cアドレス, 桁数, 行数)

変数「lcd」は例であり、任意の変数文字列を指定してください

init()

LCDの表示内容をクリアし、カーソルを左上に移動させます。

lcd型変数.init

setCursor( , )

カーソル位置を指定します。テキスト表示開始位置を指定することができます。

lcd型変数.setCursor(桁、行)

桁は左端が「0」、行は上段が「0=1行目」になります。

print(“表示させたい文字列”)

LCDに文字列を表示させます。

lcd型変数.print(“表示させたい文字列”)

backlight()

LCDバックライトを点灯させます。

lcd型変数.backlignt()

プログラミング初心者の方に、おすすめなArduinoの参考書を紹介しています!

mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockプログラミングの説明
mBlockを使ったプログラミング画面

ここからは、mBlockを使ったプログラムの作り方を解説します。

mBlockを使ったプログラムの作り方
  1. デバイスにArduino Uno R3を追加する
  2. 接続モードを「アップロードモードON」にする
  3. mBlockプログラムを作成する
  4. プログラムをArduino本体に転送する

これらの基本操作方法については、こちらの記事を参照してください。

プログラミング、動作確認方法については、本記事の説明動画でも紹介しています

せでぃあ

動画を参考にプログラミングしてみよう

DHT温湿度センサ制御ブロックの追加方法

温湿度センサDHT11と接続し、温湿度データを取得するために必要な、専用ブロックを追加します。

追加が必要なDHT温湿度センサ制御ブロックと機能説明
追加が必要なDHT温湿度センサ制御ブロックと機能説明
STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「i2c」と入力して検索
検索窓に「dht」と入力します。
Temp,Humidity(DHT)を追加します。

検索窓に「dht」と入力します。

Temp,Humidity(DHT)を書かれた、拡張ブロックを追加します。

STEP
DHT専用ブロックが追加される
DHTセンサを使うための専用ブロックが追加されます。

DHT温湿度センサを使うための、専用ブロックが追加されます。

I2Cを使ったLCD制御ブロックの追加方法

LCDを制御(LCD画面クリア、カーソル位置を指定、LCDへの文字列表示など)するために必要な、専用ブロックを追加する必要があります。

追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「i2c」と入力して検索
検索窓に「i2c」と入力します。

検索窓に「i2c」と入力します。

STEP
LCDと書かれた拡張ブロックを追加
I2Cを使ったLCD制御用の拡張ブロックを追加します。

I2Cを使ったLCD制御用の拡張ブロックを追加します。

STEP
LCDブロックが追加される
I2Cを使ったLCD制御ブロックが追加されます。

I2Cを使ったLCD制御ブロックが追加されます。

mBlockを使ったプログラム内容

今回は「アップロードモード オン」でのプログラム作成例を紹介しています。

プログラム開始条件が「Arduino Unoが起動したとき」になっている点に注意してください。

以下のプログラムが動作プログラムになります。

mBlockによるDHT温湿度センサからの取得値をLCD表示させるブロックプログラム
mBlockによるブロックプログラム

mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。

動作確認方法

DHT11を使った、LCDへの温湿度表示回路
配線状態説明図
動作確認チェックリスト
  • 液晶ディスプレイに「温度」「湿度」が表示されるか?
  • 温度と湿度の値は、環境に応じて更新されるか?

上記項目について確認していきましょう。

液晶ディスプレイに「温度」「湿度」が表示されるか?

今回作成するプログラムでは、下記の表示になります。

LCD表示内容

Temp␣取得した温度値␣C
%RH␣取得した湿度値␣%

もし表示内容が上記と異なっていた場合は、プログラム内での「上段」「下段」表示指示が間違っていないか?表示内容の指示が間違っていないか?確認してください。

温度と湿度の値は、環境に応じて更新されるか?

DHT11は取得した温湿度値の更新に2秒以上かかりますが、検出値に応じて表示が書き換わります。

センサに息を吹きかけてみたりして、LCD表示値が更新されることを確認してください。

せでぃあ

サンプリング速度が遅いですが、デバイスの仕様になります。

DHT11は簡単に温湿度データが取得できる(まとめ)

この記事の内容をまとめると
  • 温湿度センサDHT11は3本の配線接続で温湿度データが取得できる
  • 専用ライブラリ、ブロックを使うことで簡単にデバイス制御できる
  • mBlockを使ったブロックプログラミングがシンプルでおすすめ

小学生のお子様には断然、ブロックプログラミングがおすすめです!

せでぃあ

mBlockはブロックのドラッグアンドドロップでプログラミングできるため、初心者のかたにも安心して操作ができますよ。

ブロックプログラミングの練習におすすめな、プログラミングロボットです!

最後まで読んでいただき、ありがとうございました。

子供の成長を育む!小学生のお子様にぴったりなプログラミング教室が見つかるように厳選しました!

Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。

Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。

応援ありがとうございます(^^)/

Arduinoで温湿度センサDHT11を使ってLCD(液晶ディスプレイ)表示させる!ブロックプログラミング(スクラッチベースmBlock)【Lesson17】

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次