[ラズパイ] Pico W で温湿度センサーを使う

投稿者: | 2024-03-06

Pico Wで温湿度センサー(AHT21B)を使って温度と湿度を測定します。

Pico Wへの接続は以下のとおりです。

AHT21Bを使用する際は「ahtx0」というライブラリを使用します。

以下のURLから「ahtx0.py」をダウンロードします。

https://github.com/targetblank/micropython_ahtx0

ダウンロードした「ahtx0.py」をmain.pyと同階層に設置します。

「main.py」は下記のとおりです。

5秒ごとに温度と湿度を測定して出力します。

import utime
from machine import Pin, I2C
import ahtx0

i2c = I2C(0, scl=Pin(1), sda=Pin(0))
sensor = ahtx0.AHT10(i2c)

while True:
    print("\nTemperature: %0.2f C" % sensor.temperature)
    print("Humidity: %0.2f %%" % sensor.relative_humidity)
    utime.sleep(5)

出力結果は以下の通りです。

気を付けること

Pico W にはI2Cが2つあるので、I2C0を使うのかI2C1を使うのか指定する必要があります。

SCLの「GP1」とSDAの「GP0」は「I2C0」なので、idは「0」を指定します。

i2c = I2C(0, scl=Pin(1), sda=Pin(0))

https://micropython-docs-ja.readthedocs.io/ja/latest/library/machine.I2C.html

idの指定を間違えると以下のようなエラーが出ます。

Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
ValueError: bad SCL pin

また、センサーへの配線を間違えると以下のようなエラーが出ます。

Traceback (most recent call last):
  File "<stdin>", line 6, in <module>
  File "ahtx0.py", line 50, in __init__
  File "ahtx0.py", line 59, in reset
OSError: [Errno 5] EIO

おまけ

温度と湿度が同時に測定できるので、不快指数を計算することができます。

t = 温度(℃)

h = 湿度(%)

不快指数(DI) = 0.81t + 0.01h(0.99t – 14.3) + 46.3

    t = sensor.temperature
    h = sensor.relative_humidity
    di = 0.81 * t + 0.01 * h * (0.99 * t - 14.3) + 46.3
    print("\nTemperature: %0.2f C" % t)
    print("Humidity: %0.2f %%" % h)
    print("DI: %d" % di)

https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%BF%AB%E6%8C%87%E6%95%B0