logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは小型で手軽に利用できるシングルボードコンピュータであり、様々なセンサーやモジュールを接続して利用することが可能です。この記事では、湿度と温度を測定するセンサー「HTU21D」をRaspberry Piに接続し、制御する方法について解説します。

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

1. HTU21Dセンサーの概要

HTU21Dは、湿度と温度を同時に測定できるデジタルセンサーです。I2Cプロトコルを使用して通信し、Raspberry Piなどのシングルボードコンピュータで容易に利用できます。このセンサーは、精度が高く、低消費電力で動作する特長があります。

2. HTU21Dの接続

HTU21DをRaspberry Piに接続するには、4つのピンがあります。

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

これらをRaspberry Piの対応するピンに接続します。

3. Pythonコードの作成

Raspberry PiでHTU21Dを制御するためには、Python言語を使用します。まず、Raspberry Piにsmbusライブラリがインストールされていることを確認しましょう。次に、以下のPythonコードを作成します。

import smbus
import time

# HTU21DのI2Cアドレス
HTU21D_ADDR = 0x40

# I2Cバスの初期化
bus = smbus.SMBus(1)

def read_sensor():
    # 温度の測定コマンド送信
    bus.write_byte(HTU21D_ADDR, 0xF3)
    time.sleep(0.1)
    
    # データの読み取り
    data = bus.read_i2c_block_data(HTU21D_ADDR, 0xE3, 2)
    
    # 温度の計算
    raw_temperature = (data[0] << 8) + data[1]
    temperature = -46.85 + (175.72 * raw_temperature / 65536.0)
    
    # 湿度の測定コマンド送信
    bus.write_byte(HTU21D_ADDR, 0xF5)
    time.sleep(0.1)
    
    # データの読み取り
    data = bus.read_i2c_block_data(HTU21D_ADDR, 0xE5, 2)
    
    # 湿度の計算
    raw_humidity = (data[0] << 8) + data[1]
    humidity = -6 + (125 * raw_humidity / 65536.0)
    
    return temperature, humidity

# メインプログラム
try:
    while True:
        temp, hum = read_sensor()
        print(f'Temperature: {temp:.2f} °C, Humidity: {hum:.2f} %')
        time.sleep(2)

except KeyboardInterrupt:
    pass
finally:
    print('Program terminated.')

このコードはHTU21Dから温度と湿度を読み取り、それをRaspberry Piのコンソールに表示します。適宜、データの取得間隔や表示方法を変更することができます。

4. コードの実行と確認

Pythonコードを保存し、Raspberry Pi上で実行します。温度と湿度の値が表示されれば、HTU21Dが正常に動作していることを確認できます。

これで、Raspberry PiにHTU21Dを接続し、温度と湿度を制御するための基本的な手順が完了しました。この情報を基に、より複雑なプロジェクトを構築していくことができます。