MECHATRAXのブログ

Raspberry Pi や関連する製品、通信・クラウドに関する技術情報や
それらを業務に活用する際に有用なノウハウなどを発信しています。
ラズパイ対応センサシリーズ 温湿度センサ (SHT45搭載) の使い方

ラズパイ対応センサシリーズ 温湿度センサ (SHT45搭載) の使い方

先日リリースした ラズパイ対応センサシリーズ に新たなセンサが追加されました。 温湿度センサがラインナップに加わります。

本記事ではこの温湿度センサの紹介と使い方の例をご紹介します。

温湿度センサ (SHT45 搭載)

センサ素子には超精密湿温度センサー SHT45 を採用しています。
この温湿度センサ SHT45 を SUS304 の筐体に格納しています。計測部に通気性を有した多孔質の焼結部材を採用することで、耐久性を確保しつつ温湿度計測を可能にしました。

基本的な仕様は他のセンサシリーズと同じです。

  • Raspberry Pi との接続は I2C です。
  • コネクタには XS3H を使用しています。このコネクタには OMRON XS3F が嵌合します。
  • 弊社インターフェース基板と併用することでケーブルが 15m まで延長可能です。
  • センサには5mのインターフェース基板接続用ハーネスが付属します。

センサ素子の詳細については以下をご参照ください。

センサ素子の公式製品ページ
 https://sensirion.com/jp/products/catalog/SHT45 

データシート
https://sensirion.com/resource/datasheet/sht4x

精度に関する言及
https://sensirion.com/jp/company/news/press-releases-and-news/article/ultra-high-accuracy-sht45-humidity-and-temperature-sensor-availab

使い方

動作環境

  • Raspberry Pi 4 modelB
    • 使用 OS: Raspberry Pi OS (64bit) trixie
  • slee-Pi 3
    • 必須ではありませんが、Raspberry Pi ならびに本センサーへの安定した電源供給のために使用します。
  • センサ用4chインターフェース基板
  • AC アダプター (12V/2A)
  • 温湿度センサ (SHT45 搭載)
  • インターフェース基板接続用ハーネス (5m)

ハードウェアの準備

センサ用4chインターフェース基板の接続については以下の記事をご参照ください。 
https://mechatrax.com/blog/how-to-use-the-raspberry-pi-compatible-sensor-series-and-the-4-channel-interface-board/#ハードウェアの準備

次に、インターフェース基板接続用ハーネスの OMRON XS3F コネクタをセンサに接続します。 接続の際はネジを十分に締めこんでください。

今回は CN1 に 温湿度センサ (SHT45搭載) を接続します。


ソフトウェアの準備

センサ用4chインターフェース基板の設定については以下の記事をご参照ください。
 https://mechatrax.com/blog/how-to-use-the-raspberry-pi-compatible-sensor-series-and-the-4-channel-interface-board/#ソフトウェアの準備

センサを接続しているバスの 0x44 に SHT45 が見えれば OK です。

mtx@raspberrypi:~$ i2cdetect -y 22
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 6e UU
70: -- -- -- UU -- -- -- --

センサの値を取得するサンプルコード

センサ用4chインターフェース基板を使用して温湿度センサの値を取得する例をご紹介します。

※ 他のセンサシリーズと同じく、弊社からこのセンサを扱うためのライブラリは提供していません。 外部の公開されているライブラリ等を使用していただきますようお願いします。

今回の例では以下の Sensirion のライブラリを使用します。 
https://github.com/Sensirion/python-i2c-sht4x

Sensirion のライブラリのインストール方法などのドキュメントについては下記サイトをご参照ください。
https://sensirion.github.io/python-i2c-sht4x/

サンプルコード

import csv
import time

from sensirion_driver_adapters.i2c_adapter.i2c_channel import I2cChannel
from sensirion_i2c_driver import LinuxI2cTransceiver, I2cConnection, CrcCalculator
from sensirion_i2c_sht4x.device import Sht4xDevice

COLUMN_SHT45 = ['temperature', 'humidity']

I2C_BUS = 22
I2C_ADDRESS = 0x44

with open(f'sht45_{int(time.time())}.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['timestamp']+COLUMN_SHT45)

    with LinuxI2cTransceiver(f'/dev/i2c-{I2C_BUS}') as i2c_transceiver:
        channel = I2cChannel(I2cConnection(i2c_transceiver),
                            slave_address=I2C_ADDRESS,
                            crc=CrcCalculator(8, 0x31, 0xff, 0x0))
        sensor = Sht4xDevice(channel)
        try:
            sensor.soft_reset()
            time.sleep(0.01)
        except BaseException:
            ...
        serial_number = sensor.serial_number()
        print(f"serial_number: {serial_number}; "
            )
        for i in range(500):
            try:
                time.sleep(0.02)
                timestamp = time.time()
                (a_temperature, a_humidity
                ) = sensor.measure_lowest_precision()
                print(f"a_temperature: {a_temperature}; "
                    f"a_humidity: {a_humidity}; "
                    )
                writer.writerow([timestamp, a_temperature, a_humidity])
                f.flush()
            except BaseException as e:
                print(e)
                continue

※ ライブラリ公式のサンプルコードからの変更箇所は以下の通りです。

  • I2C のバスの指定方法を変更
  • csv ファイルへの保存処理を追加

以下のようなデータが取得可能です。保存した csv ファイルから作成しました。

温度評価

弊社ではこの温湿度センサの値の妥当性を恒温槽試験にて検証しています。 -20~70℃の範囲で、校正証明書付プローブ SHA-3151 との比較を行っています。
https://shop.tandd.co.jp/products/options/sha3151.php

結果として、温度の精度に関しては、RMSE 0.5℃ 程度の誤差となりました。 また、弊社の温湿度センサは金属筐体に入っているため、若干 (60秒程度) の応答遅れが発生しました。

精度が必要だが応答性はそこまで求めないという場合にこのセンサは有用かと思います。

おわりに

ラズパイ対応センサシリーズに追加された温湿度センサ (SHT45搭載) の使い方をご紹介しました。

技術資料等は弊社 GitHub をご参照ください。

ラズパイ対応センサシリーズ
https://github.com/mechatrax/sensor-series

センサ用 4ch インターフェース基板
https://github.com/mechatrax/sensor-series-interface

また、不明な点は弊社サポートへお問い合わせください。

Appendix

本記事で使用した Python のパッケージは以下の通りです。

certifi==2026.4.22
charset-normalizer==3.4.7
gpiod==2.4.2
idna==3.15
intelhex==2.3.0
pyserial==3.5
requests==2.34.2
sensirion-driver-adapters==2.3.1
sensirion-driver-support-types==0.2.0
sensirion-i2c-driver==1.0.2
sensirion-i2c-sht4x==1.1.0
sensirion-shdlc-driver==0.1.5
sensirion-shdlc-sensorbridge==0.2.0
urllib3==2.7.0

< ブログ一覧へ戻る

関連製品はこちら

関連記事はこちら