logo
Published on

Raspberry Piに「SHT31」を接続し制御する

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは豊富なGPIOピンを備え、さまざまなセンサーやデバイスを制御するのに適しています。この記事では、温度および湿度センサー「SHT31」をRaspberry Piに接続し、Pythonを使用して制御する手順について説明します。

※モジュールの価格を比較 ▶ TemuAliExpress楽天メルカリ

1. SHT31センサーの概要

SHT31は、高精度な温度および湿度を測定できるデジタルセンサーです。I2C通信を使用してデータを取得し、Raspberry Piと容易に連携できます。このセンサーは、室内環境のモニタリングやIoTプロジェクトなどに広く利用されています。

2. SHT31の接続

SHT31をRaspberry Piに接続するには、I2C通信を利用します。通常、以下のように接続します。

  • VCC: 3.3Vの電源
  • GND: 接地
  • SCL: I2Cクロックライン
  • SDA: I2Cデータライン

3. Pythonコードの作成

Raspberry Pi上でPythonを使用してSHT31を制御するためのコードを作成します。まず、smbus ライブラリをインストールします。

sudo apt-get update
sudo apt-get install -y python3-smbus
sudo apt-get install -y i2c-tools

次に、Pythonスクリプトを作成します。

import smbus
import time

# SHT31 I2Cアドレス
SHT31_I2C_ADDR = 0x44

# 温度および湿度データ取得コマンド
CMD_MEASURE_HIGH_PRECISION = b'\x24\x00'

# I2Cバスの初期化
bus = smbus.SMBus(1)  # Raspberry Pi上のI2Cバス番号によって変更

def read_sht31():
    # 温度および湿度のデータ取得
    bus.write_i2c_block_data(SHT31_I2C_ADDR, 0x2C, [0x06])
    time.sleep(0.5)
    data = bus.read_i2c_block_data(SHT31_I2C_ADDR, 0x00, 6)

    # データ変換
    temp = (data[0] << 8) + data[1]
    temperature = -45 + (175 * temp / 65535.0)

    hum = (data[3] << 8) + data[4]
    humidity = 100 * hum / 65535.0

    return temperature, humidity

try:
    while True:
        temperature, humidity = read_sht31()
        print(f'Temperature: {temperature:.2f}°C, Humidity: {humidity:.2f}%')
        time.sleep(2)

except KeyboardInterrupt:
    pass
finally:
    bus.close()

4. スクリプトの実行と確認

スクリプトを保存したら、ターミナルでスクリプトを実行します。

python3 your_script_name.py

これで、Raspberry PiがSHT31センサーから温度および湿度のデータを読み取り、表示する準備が整いました。センサーが正しく接続されている場合、定期的に温度および湿度の値が表示されるはずです。

これで、Raspberry PiにSHT31を接続し、Pythonを使用して制御する基本的な手順が完了しました。センサーデータを活用して、様々なプロジェクトやアプリケーションを開発することができます。