電子工作

Arduino#12 DS1307RTCとDHT11を使って、測定日時と温度・湿度を、シリアルモニタに表示してみた‼

今回は、DS1307RTCとDHT11を使って、測定日時と温度・湿度を、シリアルモニタに表示してみようと思います。

配線図

この回路図の作図には fritzing を利用させて頂いております。https://fritzing.org/home/

使用部品

  • DS1307 RTC モジュール       ・・・(スターターキット:Amazon購入)
  • DHT11 温・湿度モジュール      ・・・(スターターキット:Amazon購入)
https://amzn.to/3TKA10x

Arduino IDE

#include <Wire.h>
#include <RTClib.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
RTC_DS1307 rtc;

#include <DHT.h>
#define DHTPIN 7     // DHT11センサーのデータピン
#define DHTTYPE DHT11   // 使用するDHTセンサーのタイプ
DHT dht(DHTPIN, DHTTYPE); // DHTオブジェクトを作成

void setup() {
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
    Serial.begin(9600);

  // Initialize device.
  dht.begin();
  Serial.println(F("DHT11 Unified Sensor Example"));

  // Print temperature sensor details.
  rtc.begin();
}

void loop() {

  // 現在時刻を取得
  DateTime now = rtc.now();

  // 温度と湿度を取得
 float temperature = dht.readTemperature(); // 温度を読み取る
 float humidity = dht.readHumidity(); // 湿度を読み取る // 温度と湿度をシリアルモニターに表示

  // データが有効か確認
  if (isnan(temperature)) {
    Serial.println("DHTセンサーからの無効な読み取り"); // センサーからの無効な読み取りを警告
  } else {

    // 時刻、温度、湿度をシリアルモニタに表示
    Serial.print("年月日: ");
    Serial.print(now.year(), DEC);
    Serial.print("/");
    Serial.print(now.month());
    Serial.print("/");
    Serial.print(now.day());
    Serial.print("  時刻: ");
    Serial.print(now.hour());
    Serial.print(":");
    Serial.print(now.minute());
    Serial.print(" 温度: ");
    Serial.print(temperature);
    Serial.print("°C 湿度: ");
    Serial.print(humidity);
    Serial.println("%");
    }

  delay(5000);  // 5秒待機

  }

スケッチをコンパイルする。

測定年月日:時刻:温度:湿度を、シリアルモニタに表示されています。

成功です。

まとめ

  • Arduinoで、DS1307RTCとDHT11を使って、シリアルモニタに測定年月日・時刻・温度・湿度を表示することができた。
  • 測定年月日および時刻を測定できたことで、ローガーの製作に一歩近づけた。