今回は、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を使って、シリアルモニタに測定年月日・時刻・温度・湿度を表示することができた。
- 測定年月日および時刻を測定できたことで、ローガーの製作に一歩近づけた。