DHT11からの情報を取得し、これまでやってきたシリアルモニタやLCDディスプレイに、取得した温度・湿度の測定値を表示させます。
プログラミングはAIにお願いしてみました。
配線図
- DHT11のDATA(オレンジ線)をArduinoの 7番端子 に接続。
- SDA(黄線)をArduinoの SDA端子 に接続。
- SCL(緑線)をArduinoの SCL端子 に接続。
この回路図の作図には fritzing を利用させて頂いております。https://fritzing.org/home/
使用部品
- DHT11 温・湿度モジュール ・・・(スターターキット:Amazon購入)
- LCD 1602 Module(液晶ディスプレイ)・・・ (スターターキット:Amazon購入)
- シリアルインターフェースモジュール ・・・ (Amazon購入)
Arduino IDE
話題のAI(チャットGPT)にお願いしてみました。
「Arduino シリアルモニタとDHT11をI2Cでディスプレイに表示するプログラムを書いて」(赤丸)と入力し、送信。
あっ、という間に、答えが返って来ました。
ビックリです。
スケッチの終わり(赤枠)には、使用部品まで記載されています‼。
LCDディスプレイの情報も、DHTセンサーの情報も記載されています‼
すごいです。
スケッチをコピーして、Arduino IDEにペースト。
#include <Wire.h>
#include <DS1307RTC.h>
#include <DHT.h>
#define DHTPIN 2 // DHT11センサーのデータピン
#define DHTTYPE DHT11 // 使用するDHTセンサーのタイプ
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
while (!Serial) ; // シリアルポートが利用可能になるまで待機
if (!RTC.isrunning()) {
Serial.println("RTCが起動していません!"); // RTCが起動していない場合は警告を表示
}
dht.begin();
}
void loop() {
// 現在時刻を取得
tmElements_t tm;
RTC.read(tm);
// 温度と湿度を取得
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// データが有効か確認
if (isnan(temperature) || isnan(humidity)) {
Serial.println("DHTセンサーからの無効な読み取り!"); // センサーからの無効な読み取りを警告
} else {
// 時刻、温度、湿度をシリアルモニタに表示
Serial.print("現在の時刻: ");
print2digits(tm.Hour);
Serial.print(":");
print2digits(tm.Minute);
Serial.print(":");
print2digits(tm.Second);
Serial.print(" 温度: ");
Serial.print(temperature);
Serial.print("°C 湿度: ");
Serial.print(humidity);
Serial.println("%");
}
delay(2000); // 2秒待機
}
void print2digits(int number) {
if (number < 10) {
Serial.print("0"); // 1桁の場合は0を追加して2桁にする
}
Serial.print(number);
}
・DHT11のDATA(オレンジ線)をArduinoの 7番端子 に接続したため、
#define DHTPIN 2 // DHT11センサーのデータピン
↓
#define DHTPIN 7 // DHT11センサーのデータピン
書き変えて、スケッチをコンパイルする。
まとめ
- DHT11から温度・湿度の測定値情報を取得し、シリアルモニタとLCD1602液晶ディスプレイに、1行目に「Temperature:○°C」、2行目に「Humidity:○%」と取得した値を表示させた。
- プログラミングは、チャットGPTで行った。AI恐るべし‼