工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino UNOとDHT22で温湿度モニター:16x2 I2C LCD表示

部品と材料

部品数量備考
Arduino UNO1
DHT22 温湿度センサー1AM2302互換
16×2 LCDモジュール(I2Cバックパック付き、白文字/青背景、5V)1
ブレッドボード(フルサイズ)1
9V電池1
9V電池クリップ(5.5mm/2.1mmプラグ付き)1Adafruit製
USB-A - Mini USBケーブル1
ジャンパーワイヤー(オス-メス)1式
ジャンパーワイヤー(オス-オス)1式

プロジェクト概要

7歳の息子がペットのヘビを飼い始め、テラリウム内の温度と湿度を快適に保つ必要が生じました。アナログ温湿度計を購入しましたが、両方を適切なレベルに維持するのは容易ではありません。ちょうどArduino Unoを購入したばかりでプロジェクトを始めたかったため、DHT22センサーとI2C接続のLCD 16x2ディスプレイを使って、テラリウムの温湿度監視システムを作ることにしました。

このチュートリアルはその基礎となる部分です。自動制御機能は含まず、DHT22とI2C接続LCDの基本的な使用方法を解説します。I2CなしのLCDを使用する場合は、ThothLoki氏のチュートリアルを参照してください。

必要なハードウェア

必要なライブラリ

開始前の準備

I2C搭載LCD 16x2は、通常のLCDに必要な多数のピン接続が不要で、ジャンパーワイヤー4本だけで接続できるのが大きな利点です。

ディスプレイにはI2Cアドレスがあり、コマンド受信やメッセージ送信に使用します。このアドレスを事前に特定する必要があります。詳細はArduinoフォーラムを参照してください。本記事のデバイスは0x3Fを使用しています。お手元のデバイスも同じアドレスなら、コードをそのまま使用できます。

ブレッドボードとArduinoの接続

DHT22センサーとLCD 1602 I2Cは共に5V電源で動作します。Arduinoの5Vピンをブレッドボードの赤色(+)列に、GNDを青色(-)列に接続します。配色を統一するため、ここでは5Vを赤、GNDを青のケーブルで接続します(実物では白を使用)。

DHT22センサーの接続

DHT22センサー(DHT11も同様)は4ピン構成です。ブレッドボードに前面を外側に向けて配置すると、右端が1番ピン(VCC 5V)になります。

デジタルデータなのでデジタルポート4に接続しました(他の例ではポート7も多いですが、将来的にポートを追加する予定があったためポート4を確保)。

Arduino UNOとDHT22で温湿度モニター:16x2 I2C LCD表示

LCD 16x2 I2Cの接続

LCD 16x2 I2Cも4ピンです(左から順に):

1番ピンをブレッドボードのGND(-)列、2番ピンを5V(+)列へ接続。Arduino UnoのI2CピンはA4(SDA)とA5(SCL)なので、3番ピンをA4、4番ピンをA5に接続します。

Arduino UNOとDHT22で温湿度モニター:16x2 I2C LCD表示

コード

I2Cアドレスはデバイスによって異なります。本記事のコードはアドレス0x3F用に書かれています(「開始前の準備」参照)。

必要なライブラリ(Adafruit_Sensor、DHT、NewliquidCrystal)をダウンロード・解凍し、プロジェクトのlibrariesフォルダに配置してください。

コードをArduinoにアップロードすれば、テラリウム(またはサーバーラック、冷蔵庫、リビングなど)の温湿度を監視できます。

スケッチ:hygroThermo.ino

/* DHT-22センサーをArduino Unoで使用する方法
   More info: https://www.ardumotive.com/how-to-use-dht-22-sensor-en.html
   Dev: Michalis Vasilakis // Date: 1/7/2015 // www.ardumotive.com */

// ライブラリ
#include <DHT.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

// 定数
#define DHTPIN 4     // 接続ピン
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);

// LCD I2C設定(アドレス0x3Fの場合)
#define I2C_ADDR 0x3F
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

// 変数
int chk;
float hum;  // 湿度
float temp; // 温度

void setup() {
  Serial.begin(9600);
  dht.begin();
  lcd.begin(16, 2);
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.setBacklight(HIGH);
}

void loop() {
  delay(2000);
  
  // データ読み取り
  hum = dht.readHumidity();
  temp = dht.readTemperature();
  
  // シリアルモニタ出力
  Serial.print("Humidity: ");
  Serial.print(hum);
  Serial.print(" %, Temp: ");
  Serial.print(temp);
  Serial.println(" Celsius");
  
  // LCD表示
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temp);
  lcd.print(" ");
  lcd.print((char)223); // 度記号
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("Hum: ");
  lcd.print(hum);
  lcd.print(" %");
  
  delay(2000);
}

回路図

Fritzingファイル: schema_UcHE1qRu2t.fzz

Arduino UNOとDHT22で温湿度モニター:16x2 I2C LCD表示

製造プロセス

  1. ArduinoとRaspberry Pi 2のI2C連携でIoTセンサープロジェクトを実現
  2. Arduino Nano 33 IoT製 フライトシミュレーター2020用コックピットパネル - LCD&CDI表示
  3. Arduino Nanoで水滴を高速撮影 – DIYハイスピードフォトグラフィ
  4. Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
  5. Arduino MegaとNextion HMIで作る高機能ウェザーステーション
  6. Arduino UNOで1.17インチTFT LCDに画像を表示する方法
  7. BME280 温湿度・気圧データを Nextion タッチスクリーンに表示
  8. Arduino Nanoで自作オシロスコープ(10Hz〜50kHz)128×64 LCD搭載
  9. u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
  10. DHT11 と Blynk で温湿度をリアルタイム監視する Arduino チュートリアル
  11. DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計