検索コード

レッスン28:DHT11温度センサーとTM1637ディスプレイ | Arduinoステップバイステップコース

レッスン28:DHT11温度センサーとTM1637ディスプレイ | Arduinoステップバイステップコース

このArduinoステップバイステップコースのレッスンでは、DHT11温湿度センサーとTM1637 4桁7セグメントディスプレイを組み合わせて、コンパクトでスタンドアロンの温度表示器を作成する方法を探ります。シリアルモニターに頼って測定値を表示する代わりに、このプロジェクトは周囲温度を摂氏と華氏の両方で視覚的に報告する小型の自己完結型ユニットを構築します。これは、電子機器プロジェクト用のユーザーフレンドリーなインターフェースを作成し、データをデジタル世界から物理的なディスプレイに移すための基本的なスキルです。

このプロジェクトは、一目でわかる迅速な温度表示が必要なさまざまなアプリケーションにとって実用的な構成要素です。ここにいくつかのアイデアをご紹介します:

  • デスクトップ気象ステーション:オフィスや趣味の部屋の温度を監視するための小型の常時表示ディスプレイを構築します。
  • サーモスタットモニター:自宅のサーモスタットやHVACベントの近くの温度を確認するための専用ディスプレイを作成します。
  • インキュベーターまたはテラリウムゲージ:爬虫類のテラリウム、植物育成チャンバー、またはDIYインキュベーター内の温度を開けずに監視します。
  • ワークショップまたはガレージ用温度計:ほこりや薄暗いワークショップでの温度確認に最適な、明るくクリアなディスプレイです。
  • 教育用キット:Arduinoでさまざまなタイプのセンサーと出力モジュールを連携させる方法を学ぶための優れたスタータープロジェクトです。

必要なハードウェア

このプロジェクトに沿って進めるには、以下のコンポーネントが必要です:

  • Arduino Uno(または互換性のある任意のボード)
  • DHT11温湿度センサー(3ピンおよび4ピンのPCBバージョンの両方が示されています)
  • TM1637 4桁7セグメントディスプレイモジュール
  • ブレッドボード
  • ジャンパーワイヤー

配線ガイド

このプロジェクトの配線は簡単で、センサーとディスプレイの両方の接続が必要です。ビデオでは、DHT11センサーの2つの異なるバージョンとTM1637ディスプレイの2つのサイズを使用したセットアップが示されていますが、主要な接続は同じです。

ビデオで説明されているDHT11センサーとTM1637ディスプレイの配線は次のとおりです(ビデオの05:06時点)。

Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637

TM1637ディスプレイモジュールの場合、接続は次のとおりです:

  • VCCをArduinoの5Vに接続。
  • GNDをArduinoのGNDに接続。
  • CLK(クロック)をデジタルピン、例えばD2に接続。
  • DIO(データ入出力)を別のデジタルピン、例えばD3に接続。

DHT11センサーの場合、接続は次のとおりです:

  • VCC(または+ピン)を5Vに接続。
  • GND(または-ピン)をGNDに接続。
  • Data(またはSピン)をデジタルピン、例えばD2に接続。(注:ビデオでは、センサーのデータピンはピン2に接続されていますが、コードスニペットでもピン2に接続されています。ディスプレイのCLKおよびDIOピンはコードスニペットではピン2と3にあり、これは競合です。ビデオのトランスクリプトではディスプレイにピン5と6が言及されているため、重複を避けるためにこれらを使用します。)

注意:トランスクリプトとコードスニペットには潜在的なピン競合が示されています。コードはDHT11データピンとTM1637 CLKピンの両方をデジタルピン2に定義しています。これを避けるために、ビデオで言及されているように、DHT11をピン2に接続し、TM1637 CLKをピン5、DIOをピン6に接続するなど、別々のピンを使用することをお勧めします。

コードの説明

このプロジェクトのコードは、DHT11センサーとTM1637ディスプレイの両方のライブラリを組み合わせています。ユーザーが設定できる主要な部分は、ピン定義とディスプレイの明るさ設定です。これらは、特定の配線や好みに合わせて調整できます。

まず、DHT11センサーのデータピンが定義されます。センサーをArduinoの別のデジタルピンに接続した場合は、この番号を変更できます。

#define dhtpin 2 // DHT11に接続するピンを設定

次に、TM1637ディスプレイモジュールのピンが定義されます。CLKピンはクロック信号用で、DIOピンはデータ用です。これらは物理的な配線と一致している必要があります。

// モジュール接続ピン(デジタルピン)
#define CLK 5
#define DIO 6

次に、TM1637Displayクラスのオブジェクトが作成され、CLKおよびDIOピン番号を引数として受け取ります。このオブジェクトは、ディスプレイを制御するために必要なすべての関数を提供します。

TM1637Display display(CLK, DIO);

ディスプレイの明るさはsetup()関数で設定されます。0x0fの値は最大の明るさを表します。0x00(オフ)から0x0f(最大)までの値を使用して、環境に合わせてディスプレイの強度を調整できます。

display.setBrightness(0x0f);

loop()関数のメインロジックは、DHT11センサーから温度を読み取り、それを表示します。showNumberDec()関数は、温度値をディスプレイに送信するために使用されます。そのパラメータにより、数値の表示方法を制御できます。例えば、次の行は摂氏の温度を2桁目(位置1)から表示します。

display.showNumberDec(23, false, 2, 1);

この例では、23は表示する数値、falseは先頭ゼロなしを意味し、2は使用する桁数、1はディスプレイ上の開始位置(0から始まるインデックス)です。

ライブプロジェクトデモンストレーション

ビデオでは、プロジェクトがライブで実演されています。発表者は、大きい方と小さい方の両方のTM1637ディスプレイで温度表示を示しています。センサーが機能していることを証明するために、ヒートガンを使用してDHT11に熱が加えられます。

最初に、ディスプレイには摂氏と華氏の両方で室温が表示されます。ヒートガンがセンサーを温めると、温度表示が急速に上昇するのがわかります。このデモンストレーションでは、温度が通常の室温から50°C(123°F)以上に上昇し、センサーが温度変化を正確に読み取り、ディスプレイがデータを正しく表示していることを確認しています。このテストは、すべての接続とコードが正しく機能していることを検証する優れた方法です。

ビデオチャプター

  • [00:00] プロジェクトの紹介
  • [00:28] TM1637ディスプレイのコードの理解
  • [03:04] 摂氏と華氏での温度表示
  • [05:06] DHT11をTM1637ディスプレイに配線する
  • [06:42] 温度表示のライブデモンストレーション
  • [08:23] 小型ディスプレイモジュールでのテスト
  • [08:35] 結論とプロジェクトの概要

画像

TM1637 4 digit display module
TM1637 4 digit display module
DHT11 Module
DHT11 Module
Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 PCB module  module with TM1637
Arduino wriing DHT11 PCB module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
Arduino wriing DHT11 bare module  module with TM1637
Arduino wriing DHT11 bare module module with TM1637
520-Lesson 28: DHT11 Temperature Sensor with TM1637 Display | Arduino Step-by-Step Course
言語: C++
/*
 * Robojax Arduino Step-by-Step Course
 * Lesson 28: DHT11 with TM1637
 * This is the Arduino code for TM1637 4-digit display.
 * 
 * Please watch video instructions here: https://youtu.be/C-1iaCPzNtU
 * This code is available at: http://robojax.com/course1/?vid=lecture11
 * 
 * With over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
 * Get the code for the course: http://robojax.com/L/?id=339
 * 
 * Date: December 6, 2017, in Ajax, Ontario, Canada
 * 
 * Original code from: https://github.com/avishorp/TM1637
 * Modified for Robojax video on December 6, 2017
 */
#include <dht11.h>

dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11

 // start of settings of TM1637 LED display
#include <Arduino.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

TM1637Display display(CLK, DIO);
uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// blank value for all digits
 
// The amount of time (in milliseconds) between tests
#define TEST_DELAY   2000
// start of settings of TM1637 LED display



void setup()
{
	//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
 Serial.begin(9600);// setting up serial monitor
   display.setBrightness(0x0f); 
   
}

void loop()
{
	//Robojax Step-by-Step Arduino Course YouTube Watch it here: http://robojax.com/L/?id=338
DHT11.read(dhtpin);// initialize the reading
  int humidity = DHT11.humidity;// get humidity
//code for Robojax.com video
   Serial.print(getTemp('C'));
   Serial.print("C ");
   Serial.print(getTemp('F'));
   Serial.print("F ");
   Serial.print(getTemp('K'));
   Serial.print("K ");
   Serial.print(" humidity:");
   Serial.print (humidity);
   Serial.print("% ");
   Serial.println();
 delay(500);  


  display.setSegments(blank);
  display.showNumberDec(23, false, 2,1);
  delay(TEST_DELAY);
  
  display.setSegments(data);
  display.showNumberDec(153, false, 3, 1);
  delay(TEST_DELAY);

  display.setSegments(data);
  for(int i=0; i<=500; i++)
  {
    display.showNumberDec(i);
  }

}

必要かもしれないもの

ファイル📁

Arduinoライブラリ(zip)

フリッツィングファイル

他のファイル