logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは汎用性が高く、様々なセンサーやデバイスと組み合わせて利用することができます。この記事では、光センサーである「TSL2561」をRaspberry Piに接続し、Pythonを用いて制御する方法について解説します。

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

1. TSL2561センサーの概要

TSL2561はデジタル光センサーであり、広範囲の照度を測定することができます。このセンサーは、可視光線と赤外線光を検出して、照度値を提供します。Raspberry Piと組み合わせることで、環境の光環境をモニタリングするプロジェクトなどに利用されます。

2. TSL2561の接続

TSL2561には、通常、4つのピンがあります。

  • VCC(赤色): 3.3Vまたは5Vの電源
  • GND(茶色): 接地
  • SDA(緑色): I2Cデータライン
  • SCL(青色): I2Cクロックライン

これらをRaspberry PiのGPIOピンに接続します。Raspberry Piには複数のモデルがあるため、使用しているモデルに応じてピンの配置を確認してください。

3. Pythonコードの作成

次に、TSL2561をPythonで制御するためのコードを作成します。smbusモジュールを使用してI2C通信を行います。

import smbus
import time

# TSL2561 I2Cアドレス
TSL2561_ADDR = 0x29

# TSL2561レジスタ
TSL2561_CMD = 0x80
TSL2561_REG_DATA_0 = 0x0C

# I2Cバス
bus = smbus.SMBus(1)

def read_lux():
    # データ読み取りのトリガー
    bus.write_byte_data(TSL2561_ADDR, TSL2561_CMD | TSL2561_REG_DATA_0, 0x03)

    # 読み取り待ち(結果が利用可能になるまで待つ)
    time.sleep(0.5)

    # データの読み取り
    data = bus.read_i2c_block_data(TSL2561_ADDR, TSL2561_CMD | TSL2561_REG_DATA_0 | 0x80, 2)

    # 照度の計算
    raw_data = (data[1] << 8) | data[0]
    lux = raw_data / 1.2

    return lux

# メインの実行部分
if __name__ == "__main__":
    try:
        while True:
            lux_value = read_lux()
            print(f"照度: {lux_value} lux")
            time.sleep(2)

    except KeyboardInterrupt:
        pass

    finally:
        print("プログラムを終了します")
        bus.close()

このコードでは、TSL2561から照度を読み取り、2秒ごとにその値を表示する単純な例です。

4. コードの実行と確認

コードを保存したら、ターミナルでスクリプトを実行してください。

python3 your_script_name.py

実行後、TSL2561が検知した照度値が表示されるはずです。

これで、Raspberry PiにTSL2561を接続し、Pythonを用いて制御する基本的な手順が完了しました。照度データを活用して、照明制御や環境モニタリングなどのプロジェクトを展開することが可能です。