logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは多機能なシングルボードコンピュータであり、様々なセンサーやモジュールを接続して利用することができます。この記事では、空気品質センサー「CCS811」をRaspberry Piに接続し、制御する方法について解説します。

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

1. CCS811空気品質センサーの概要

CCS811は、二酸化炭素(CO2)および揮発性有機化合物(VOC)の濃度を測定するためのデジタルセンサーです。I2C通信プロトコルを使用してデータを提供し、Raspberry Piなどのプラットフォームで容易に利用できます。

2. CCS811の接続

CCS811をRaspberry Piに接続するには、通常、以下のような配線が必要です。

  • VCC(赤色): 3.3Vの電源
  • GND(茶色): 接地
  • SCL(緑色): I2Cのクロック
  • SDA(青色): I2Cのデータ

これらの線をRaspberry Piの対応するピンに接続します。Raspberry PiのGPIOピンは、データシートやピン配置を確認して正確に選択しましょう。

3. Raspberry Piコードの作成

Raspberry PiでCCS811を制御するPythonのサンプルコードを以下に示します。smbusモジュールが必要なので、未インストールの場合は sudo apt-get install python3-smbus を実行してください。

import smbus
import time

# CCS811のI2Cアドレス
CCS811_ADDRESS = 0x5A

# レジスタアドレス
CCS811_REG_STATUS = 0x00
CCS811_REG_MEAS_MODE = 0x01
CCS811_REG_ALG_RESULT_DATA = 0x02

# 初期化
bus = smbus.SMBus(1)

def ccs811_init():
    # CCS811をアクティブモードに設定
    bus.write_byte_data(CCS811_ADDRESS, CCS811_REG_MEAS_MODE, 0x10)

def read_ccs811_data():
    # ステータスが「データ準備完了」になるまで待機
    while bus.read_byte_data(CCS811_ADDRESS, CCS811_REG_STATUS) & 0x08 == 0:
        time.sleep(0.5)

    # データの読み取り
    data = bus.read_i2c_block_data(CCS811_ADDRESS, CCS811_REG_ALG_RESULT_DATA, 8)
    co2 = (data[0] << 8) | data[1]
    voc = (data[2] << 8) | data[3]

    return co2, voc

if __name__ == "__main__":
    try:
        ccs811_init()

        while True:
            co2, voc = read_ccs811_data()
            print(f"CO2: {co2} ppm, VOC: {voc} ppb")
            time.sleep(1)

    except KeyboardInterrupt:
        pass

    finally:
        print("終了")

4. コードの実行と確認

コードを保存したら、ターミナルで実行します。コードが正常に動作していれば、CO2とVOCの濃度が定期的に表示されるはずです。

これで、Raspberry PiにCCS811を接続し、Pythonコードを使用してデータを取得する基本的な手順が完了しました。環境モニタリングやIoTプロジェクトでこのセンサーを活用することができます。