- Published on
Raspberry Piに「TSL2561」を接続し制御する
1429文字3分で読めます–––
閲覧数
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは汎用性が高く、様々なセンサーやデバイスと組み合わせて利用することができます。この記事では、光センサーである「TSL2561」をRaspberry Piに接続し、Pythonを用いて制御する方法について解説します。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
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を用いて制御する基本的な手順が完了しました。照度データを活用して、照明制御や環境モニタリングなどのプロジェクトを展開することが可能です。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚