logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは、手頃な価格で高性能なシングルボードコンピュータであり、様々なセンサーやモジュールを組み合わせて利用することができます。この記事では、気温と湿度を測定するセンサー「AM2320」をRaspberry Piに接続し、制御する方法について解説します。

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

1. AM2320センサーの概要

AM2320は、デジタル式の気温と湿度センサーで、I2C通信を使用してデータを取得します。非常に正確で安定した測定が可能であり、Raspberry Piなどのボードとの組み合わせが一般的です。

2. AM2320の接続

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

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

これらのピンをRaspberry Piに接続します。通常、Raspberry Pi上にはI2Cピンが用意されており、指定されたピンにAM2320を接続します。

3. Raspberry Piコードの作成

Raspberry PiでAM2320を制御するためには、Python言語を使用します。まず、I2C通信を行うためのライブラリをインストールします。

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

次に、以下のようなPythonコードを作成します。

import smbus
import time

bus = smbus.SMBus(1)  # I2C通信用のバス番号(Raspberry Piによって異なる場合がある)

def read_am2320():
    try:
        # AM2320のI2Cアドレス(デフォルトは0x5C)
        address = 0x5C

        # 温湿度データの読み取り
        data = bus.read_i2c_block_data(address, 0, 6)

        # データの解析
        humidity = ((data[2] << 8) + data[3]) / 10.0
        temperature = (((data[4] & 0x7F) << 8) + data[5]) / 10.0

        # 符号の確認
        if data[4] & 0x80:
            temperature = -temperature

        return temperature, humidity

    except Exception as e:
        print(f"Error: {str(e)}")
        return None

# メインプログラム
while True:
    result = read_am2320()

    if result is not None:
        temperature, humidity = result
        print(f"Temperature: {temperature}°C, Humidity: {humidity}%")

    time.sleep(2)  # 2秒ごとに測定

4. コードの実行と確認

コードを保存したら、ターミナルで実行します。

python3 your_script_name.py

これにより、AM2320がRaspberry Piに接続され、2秒ごとに温度と湿度が表示されるはずです。

以上で、Raspberry PiにAM2320を接続し、制御するための基本的な手順が完了しました。これを基にして、データの保存やリモートアクセスなどの機能を追加して様々なプロジェクトを実現できます。