ラズパイPicoのI2Cで、温度計・湿度計で測った数値を表示してみよう
温湿度計の説明
温湿度センサー AHT21B は、I2Cで制御される温度と湿度を計測するモジュールです。
I2Cでは、GND、VCC、SCL、SDAと言う、4本のピンで複数の周辺機器を制御します。このひとつにAHT21Bを接続して、温度計・湿度計の値を表示してみましょう。
温湿度センサー AHT21B:
https://akizukidenshi.com/catalog/g/g117394/
※ AHT20、AHT25は、AHT21Bと同じプログラムで動きます。
※ AHT25はピン配列が狭く、そのままではブレッドボードに刺さりません。
準備:AHT21B を GND、VCC、SCL、SDA で接続
前回接続した OLED の配線はそのままにして、AHT21Bを追加で接続します。(OLEDとAHT21Bが両方使える状態になります)
AHT21Bの左から右に向かって:
VCC:+ (3.3V)
SDA:PIN 0
GND:-
SCL:PIN 1
プログラム
まず、「パッケージを管理」で、ahtx0 をインストール、としたいところですが、パッケージ管理では上手くインストールできないそうです。
以下のファイルを lib フォルダの ahtx0.py ファイルとしてコピーします。
温度と湿度を1秒毎に表示する(f文字列を使用して、小数点以下2桁まで表示)
import time
from machine import Pin, I2C
from ahtx0 import AHT20
i2c = I2C(0, scl=Pin(1), sda=Pin(0)) # I2C初期化
aht21 = AHT20(i2c)
while True:
temperature = aht21.temperature
humidity = aht21.relative_humidity
print(f"おんど: {temperature:0.2f} C")
print(f"しつど: {humidity:0.2f} %")
time.sleep(1)
温度と湿度を1秒毎に表示する(f文字列を使用して、小数点以下1桁まで表示)
import time
from machine import Pin, I2C
from ahtx0 import AHT20
from ssd1306 import SSD1306_I2C
i2c = I2C(0, scl=Pin(1), sda=Pin(0)) # I2C初期化
aht21 = AHT20(i2c)
display = SSD1306_I2C(128, 64, i2c)
while True:
temperature = aht21.temperature
humidity = aht21.relative_humidity
temp = f"Temp: {temperature:0.1f}C"
humi = f"Humi: {humidity:0.1f}%"
display.fill(0)
display.text("Hello", 0, 0)
display.text(temp, 0, 8*1)
display.text(humi, 0, 8*2)
display.show()
time.sleep(1)