ESP32を用いてLCDに温湿度センサーの値を表示してみた‼
本日はESP32を使ってLCD(液晶ディスプレイ)に温度センサーの値を表示してみたいと思います‼
結構難しいイメージかもしれませんが、想像以上に簡単なので、是非、お試しを^^
※Arduinoで試されたいかたはこちら⇩
★目次★
①「部品準備」
・LCDディスプレイ (LCD1602A) (シリアルインタフェースボードモジュール)
・温度センサー(なんでもOK)

今回は電子工作ステーションさんのDHT22温湿度センサーモジュールを使います。
・ESP-WROOM-32

電子工作ステーション 1090円(送料無料)(30pinモデル)
電子工作ステーション 1750円(送料無料)(ESP32D)(38pinモデル)
・通信対応USBケーブル(無ければ)
電子工作ステーション 990円(送料無料)
※既にお持ちの方は購入不要です。
・ジャンパーワイヤー(メス・メス)(7本)
②「配線」
LCD1602A | ESP32 |
GND | GND |
VCC | 5V |
SDA | 21 |
SCL | 22 |
DHT22 | ESP32 |
DAT | 2 |
VCC | 3.3V |
GND | GND |
③「開発環境整備」
まず、Arduino IDEが無い方は、Arduino IDEをダウンロードし開発環境を整えましょう‼
ArduinoIDEでESP32を使えるようにしていない方はこちらもしておきましょう➡Arduino IDEでESP-WROOM-32を使えるようにする!
あとはDHTセンサーのライブラリーと、LCDディスプレイのライブラリー、2点をインストールするだけです。
Arduino IDEを開き、ツール⇒ライブラリー管理を選択、
「DHT sensor library」を検索しインストールします。
これでDHT センサーが使えるようになります。
インストール完了したら、最後に、LCDディスプレイを使えるようにするために、
LiquidCrystal_I2C というライブラリーを入れます‼
手順は先ほどと同じで、ツール⇒ライブラリー管理を選択、
「LiquidCrystal_I2C」を検索しインストールします。
(上から3ん番目ぐらいに出てくるかと思います、「jm_LiquidCrystal_I2C」というものです。)
これで開発環境は整いましたので、次は待ちに待ったプログラミングです‼
④「プログラミング」
下記のコードをコピペして貼り付けるだけで動くはずです‼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | //LEDディスプレイ #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); //DHTセンサー #include <Adafruit_Sensor.h> #include <DHT.h> #include <DHT_U.h> #define DHTPIN 2 // Digital pin connected to the DHT sensor #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS; //取得数値格納用 double s = 0; void setup() { Serial.begin(9600); //初期化 dht.begin(); Serial.println(F("DHTxx Unified Sensor Example")); // 温度、湿度センサーの詳細をセット sensor_t sensor; dht.temperature().getSensor(&sensor); dht.humidity().getSensor(&sensor); // センサーの詳細に基づいて、センサー読み取り間の遅延を設定します。 delayMS = sensor.min_delay / 1000; //ディスプレイに最初のみHello, world!と表示。 lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Hello, world!"); } void loop() { //測定間の遅延。 delay(delayMS); //温度イベントを取得。 sensors_event_t event; dht.temperature().getEvent(&event); if (isnan(event.temperature)) { Serial.println(F("Error reading temperature!")); } else { //シリアルモニターに温度表示 Serial.print(F("Temperature: ")); Serial.print(event.temperature); //ディスプレイに温度表示 s = event.temperature; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Tem"); lcd.print(s); lcd.print("C"); } // 湿度イベントを取得。 dht.humidity().getEvent(&event); if (isnan(event.relative_humidity)) { Serial.println(F("Error reading humidity!")); } else { //シリアルモニターに湿度表示 Serial.print(F("Humidity: ")); Serial.print(event.relative_humidity); Serial.println(F("%")); //ディスプレイに湿度表示 s = event.relative_humidity; lcd.setCursor(0, 1); lcd.print("Hum"); lcd.print(s); lcd.print("%"); } } |
⑤「結果」
上手くビルドが完了すると、最初に「Hello, world!」と表示され、
数秒後にセンサーの値が表示されます‼
これでリアルタイムな温度と湿度が可視化できるようになりました‼
他のセンサーにも応用できますので是非、いろいろ試してみてください^^
※液晶に何も表示されない、もしくは文字が薄い場合は、LEDディスプレイ裏面にある、
半固定抵抗で調整できます‼
以上、ご閲覧ありがとうございます。
ご不明点等ございましたらお気軽にコメントください^^