SHT31センサとArduino(アルドゥイーノ)で温湿度計を作製

湿度センサSHT31を搭載したセンサモジュールとLCD(液晶)モジュールをArduinoにI2C (I squared C、2線式シリアル通信) バスでつないで温湿度計を作りました。

目次

ブレッドボードでパーツをつないで温湿度計の組み立て

結線図

ArduinoとSHT31センサモジュール、LCDモジュールとの接続は2線式のI2Cなので配線数は少ないです。

ブレッドボードに部品を配置して、ArduinoとSHT31センサモジュール、LCDモジュールをI2Cバス(今回使ったのは緑色と白色の線)2本、3.3V電源ライン(赤色と青色の線)2本、計4本のジャンパーワイヤで接続していきます。

Arduino Uno Rev3はI2Cで使うSDA、SCL用の専用ピンが独立していますが、内部ではアナログピンA4(SDA)、A5(SCL)に接続されています。

ArduinoとSHT31温湿度計の結線図
結線図

SHT31センサモジュールのADR(4番ピン)は解放としたのでI2Cアドレスは0x45。ADR(4番ピン)をはんだブリッジでGND (5番ピン)に接続すると0x44になります。このモジュールにはプルアップ抵抗が内蔵されています。

SHT31センサモジュールとArduino
SHT31センサモジュールとArduinoはSDA(白)とSCL(緑)の2線で通信
液晶モジュールを追加実装したブレッドボード
LCDモジュールを追加実装したブレッドボード

集めたパーツ

#パーツ仕様数量備考
1Arduino Uno Rev3ATmega3281M-07385
2温湿度センサモジュールSENSIRION社SHT31-DISセンサ1K-12125
3LCDモジュールI2C接続 16×2行 白色バックライト
[ACM1602NI-FLW-FBW-M01]
1P-05693
4半固定ボリューム3362P 10kΩ1P-03277
5ブレッドボードEIC-8011P-00315
6ジャンパーワイヤオス-オス 10cmセット適量C-05371
7スイッチングACアダプタ9V1.3A 100~240V
※PCとUSB接続のみの場合は不要
1M-00030

Arduinoの開発環境「Arduino IDE」のセットアップ手順

Arduinoの公式サイトからArduino IDEをダウンロードしてPCにインストールします。 

Arduinoボードの開発環境となる「Arduino IDE」のインストール、各種センサやLCDといったモジュールとArduinoとの接続を容易にする「ライブラリ」を活用したスケッチ作成までの手順メモです。

あわせて読みたい
Arduinoの開発環境「Arduino IDE」のセットアップ手順 Arduinoボードの開発環境となる「Arduino IDE」のインストール、各種センサや液晶ディスプレイといったモジュールとArduinoとの接続を容易にする「ライブラリ」を活用し...

温湿度センサモジュールSHT31のライブラリ設定と動作検証

秋月電子通商で提供されている温湿度センサモジュールSHT31の「Arduinoスケッチ」をダウンロードして動作検証します。

「スケッチ」はArduinoに書き込んで実行するひとかたまりのプログラムコードです。ArduinoはC言語に似た専用の言語を利用します。処理できるのは一度に一つのタスクのみ、setupで初期設定、 loopでその後の処理を記述するというシンプルな作りです。

(1)秋月電子通商の「SHT31使用 高精度温湿度センサモジュールキット」サイトに掲載の「Arduinoスケッチ」zipファイル(AE_SHT31.zip)をダウンロードします。

(2)ダウンロードしたzip形式のライブラリを、Arduino IDEのメニュー「スケッチ」→「ライブラリをインクルード」→「ZIP形式のライブラリをインストール」でインストールします。

(3)ライブラリと一緒にサンプルコードがついています。これを使って動作検証します。Arduino IDEのメニュー「ファイル」→「スケッチ例」→「AE_SHT31」→「SHT31_Sample」を画面に表示してアドレスを確認します。

ADR(4番ピン)が解放の場合は、SHT31センサモジュールのI2Cスレーブアドレスが[0x45]になっているか確認して修正します。

(4)Arduino IDEのメニュー「検証」を行いスケッチにエラーがないことを確認して、「マイコンボードに書き込む」ボタンをクリックします。

(5)書き込みが完了後Arduino IDEのメニュー「ツール」→「シリアルモニタ」をクリックするとCOM3(番号は環境で異なります)画面がポップアップします。画面に温度と湿度を表示できるとセンサ部分の検証完了です。

Arduino IDEでスケッチ実行

LCDモジュール用のライブラリ追加と動作検証、温湿度計が完成

LCDモジュール(ACM1602NI-FLW-FBW-M01)用のI2Cライブラリを追加して、SHT31センサモジュールで測定した温湿度データをI2Cバス経由で液晶モジュールに表示できるように、「SHT31_Sample」コードを書き換えました。

「Wire.h」は「Arduino IDE」に含まれるI2C用ライブラリです。

LCDモジュール用のI2Cライブラリは「構想100年」サイトのLCDコアライブラリ「LcdCore.h(LcdCore_20120528.zip)」 と ACM1602NI用I/Oライブラリ「LCD_ACM1602NI.h(LCD_ACM1602NI_20120528.zip)」を利用させていただきました。上記SHT31のライブラリ設定手順(2)と同じ手順でインストールします。

「AE_SHT31.h」は秋月電子通商サイトの温湿度センサモジュール用「Arduinoスケッチ(AE_SHT31.zip)」のインストール時に組み込まれます。

SHT31_Sample_LCD.ino  ※ここをクリックするとコード表示を開閉できます。
#include <Wire.h>            // Arduino IDE のI2Cライブラリ
#include <LcdCore.h>         // LCDコアライブラリ(LcdCore_20120528.zip)
#include <LCD_ACM1602NI.h>   // 秋月液晶用I/Oライブラリ(LCD_ACM1602NI_20120528.zip)
#include <AE_SHT31.h>        // 秋月SHT31用のI/Oライブラリ(AE_SHT31.zip)

AE_SHT31 SHT31(0x45);     // 0x45は温湿度センサSHT31のI2Cアドレス
LCD_ACM1602NI lcd(0xa0);  // 0xa0は液晶モジュールのI2Cアドレス

void setup() {
  Wire.begin();       // I2C初期化
  lcd.begin(16, 2);   // ディスプレイの行数(16)と桁数(2)
  SHT31.SoftReset();  // SHT31をソフトリセット
  SHT31.Heater(0);    // 内蔵ヒーター 0:OFF 1:ON
}

void loop() {
  SHT31.GetTempHum();  // SHT31から温湿度データを取得
     lcd.setCursor(1, 0);
  lcd.print("Temp:");
     lcd.setCursor(7, 0);
  lcd.print(SHT31.Temperature());
     lcd.setCursor(13, 0);
  lcd.print("C");
     lcd.setCursor(1, 1);
  lcd.print("Humi:");
     lcd.setCursor(7, 1);
  lcd.print(SHT31.Humidity());
     lcd.setCursor(13, 1);
  lcd.print("%");
  delay(1600);   // 待ち時間
}
スケッチを実行中。半固定ボリュームでLCDモジュールの明るさ(コントラスト)を調整します。
外部電源(ACアダプタや006P乾電池など)を接続することで、PC接続無しでもプログラムを実行できます。
よかったらシェアしてね!
  • URLをコピーしました!
目次