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